開発者ドキュメント

CentOS7でNetdotを使用してネットワークを文書化する方法

序章

ネットワークドキュメンテーションツール(Netdot)は、ネットワーク管理者がネットワークドキュメンテーションを収集、整理、および保守するのに役立つオープンソースツールです。

基本機能:

Netdotプロジェクトのサイトを参照してください。

このチュートリアルでは、デバイスをNetdotに追加する方法と、それを使用してIPアドレス空間をマップおよび管理する方法を示します。

前提条件

開始する前に、これらの手順を完了していることを確認してください。

wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-2.noarch.rpm
sudo rpm -ivh epel-release-7-2.noarch.rpm

EPELリポジトリの詳細については、こちらをご覧ください。

sudo yum install make gcc gcc-c++ autoconf automake rpm-build openssl-devel git perl perl-CPAN perl-Inline
wget --no-check-certificate https://www.dnssec-tools.org/download/dnssec-tools-2.1-1.fc22.src.rpm -O /tmp/dnssec-tools.src.rpm
rpmbuild --rebuild /tmp/dnssec-tools.src.rpm
cd ~/rpmbuild/RPMS/x86_64/
sudo rpm -ivh --nodeps dnssec-tools-*

インストール

このチュートリアルの最初の部分では、Netdotをインストールしてアクセスします。

ステップ1—Netdotリポジトリのクローンを作成する

GitHubからNetdotの最新のソースを入手します。

cd /usr/local/src/
sudo git clone https://github.com/cvicente/Netdot.git netdot

ステップ2—依存関係をインストールする

次に、依存関係をインストールする必要があります。 これは、Netdotに含まれているスクリプトを使用して行います。このスクリプトは、パッケージマネージャーのyumを使用してかなりの数の依存関係をインストールします。

まず、Netdotリポジトリからファイルを抽出したディレクトリに移動します。

cd /usr/local/src/netdot/

インストールスクリプトを実行します。

sudo make rpm-install

プロンプトは、使用するデータベースを尋ねます。 答えはでマークされています:

Installing required RPM packages
/usr/bin/perl bin/perldeps.pl rpm-install

Which RDBMS do you plan to use as backend: [mysql|Pg]? mysql

次に、スクリプトは必要なモジュールをインストールします。 最後に、この要約が表示されます。これは、インストールされているものとインストールされていないものがあることを示しています。

Complete!

===============RESULTS===============
RRDs..............................................ok
GraphViz..........................................ok
Module::Build.....................................ok
CGI...............................................MISSING
Class::DBI........................................MISSING
Class::DBI::AbstractSearch........................MISSING
Apache2::Request..................................ok
HTML::Mason.......................................MISSING
Apache::Session...................................MISSING
URI::Escape.......................................ok
SQL::Translator...................................MISSING
SNMP::Info 2.06...................................ok
NetAddr::IP 4.042.................................ok
Apache2::AuthCookie...............................MISSING
Apache2::SiteControl..............................MISSING
Log::Dispatch.....................................ok
Log::Log4perl.....................................ok
Parallel::ForkManager.............................ok
Net::Patricia 1.20................................MISSING
Authen::Radius....................................MISSING
Test::Simple......................................MISSING
Net::IRR..........................................MISSING
Time::Local.......................................ok
File::Spec........................................ok
Net::Appliance::Session...........................MISSING
BIND::Config::Parser..............................MISSING
Net::DNS..........................................ok
Text::ParseWords..................................ok
Carp::Assert......................................ok
Digest::SHA.......................................ok
Net::DNS::ZoneFile::Fast..........................ok
Socket6...........................................ok
XML::Simple.......................................ok
DBD::mysql........................................ok

If there are still any missing Perl modules, you can try:

make installdeps

したがって、不足しているPerlモジュールをインストールする必要があります。

sudo make installdeps

プロンプトでいくつか質問があります。 回答はでマークされています:

Installing required Perl modules
/usr/bin/perl bin/perldeps.pl install

Which RDBMS do you plan to use as backend: [mysql|Pg]? mysql

CPAN.pm requires configuration, but most of it can be done automatically.
If you answer 'no' below, you will enter an interactive dialog for each
configuration option instead.

Would you like to configure as much as possible automatically? [yes] ENTER

 <install_help>

Warning: You do not have write permission for Perl library directories.

To install modules, you need to configure a local Perl library directory or
escalate your privileges.  CPAN can help you by bootstrapping the local::lib
module or by configuring itself to use 'sudo' (if available).  You may also
resolve this problem manually if you need to customize your setup.

What approach do you want?  (Choose 'local::lib', 'sudo' or 'manual')
 [local::lib] ENTER

Autoconfigured everything but 'urllist'.

Now you need to choose your CPAN mirror sites.  You can let me
pick mirrors for you, you can select them from a list or you
can enter them by hand.

Would you like me to automatically choose some CPAN mirror
sites for you? (This means connecting to the Internet) [yes] ENTER

スクリプトは、テスト目的で偽のパスワードを作成するように要求する場合があります。 その部分はスキップできます。

これは完了するのに10〜15分かかります。 スクリプトは不足しているモジュールをインストールします。 最後に、すべてのモジュールが正常にインストールされたことを確認する必要があります。

===============RESULTS===============
RRDs..............................................ok
GraphViz..........................................ok
Module::Build.....................................ok
CGI...............................................ok
Class::DBI........................................ok
Class::DBI::AbstractSearch........................ok
Apache2::Request..................................ok
HTML::Mason.......................................ok
Apache::Session...................................ok
URI::Escape.......................................ok
SQL::Translator...................................ok
SNMP::Info 2.06...................................ok
NetAddr::IP 4.042.................................ok
Apache2::AuthCookie...............................ok
Apache2::SiteControl..............................ok
Log::Dispatch.....................................ok
Log::Log4perl.....................................ok
Parallel::ForkManager.............................ok
Net::Patricia 1.20................................ok
Authen::Radius....................................ok
Test::Simple......................................ok
Net::IRR..........................................ok
Time::Local.......................................ok
File::Spec........................................ok
Net::Appliance::Session...........................ok
BIND::Config::Parser..............................ok
Net::DNS..........................................ok
Text::ParseWords..................................ok
Carp::Assert......................................ok
Digest::SHA.......................................ok
Net::DNS::ZoneFile::Fast..........................ok
Socket6...........................................ok
XML::Simple.......................................ok
DBD::mysql........................................ok

必要なすべてのPerlモジュールがインストールされています! これで、次のステップに進むことができます。

ステップ3—SNMPサービスを構成します

Netdotが監視できるように、このサーバーでSNMPを構成する必要があります。 Netdotで監視する他のネットワークデバイスでもSNMPを構成する必要がありますが、このチュートリアルでは、このドロップレット自体を監視するだけです。

まず、Netdisco MIBをインストールする必要があります。 SNMPサポートパッケージをインストールします。

sudo yum install net-snmp net-snmp-utils

Netdiscoファイルをダウンロードして解凍します。

wget http://downloads.sourceforge.net/project/netdisco/netdisco-mibs/latest-snapshot/netdisco-mibs-snapshot.tar.gz -P /tmp
sudo tar -zxf /tmp/netdisco-mibs-snapshot.tar.gz -C /usr/local/src

Netdiscoの新しいディレクトリを作成し、必要なファイルを移動/コピーします。

sudo mkdir /usr/local/netdisco
sudo mv /usr/local/src/netdisco-mibs /usr/local/netdisco/mibs
sudo cp /usr/local/netdisco/mibs/snmp.conf /etc/snmp/

構成ファイルを編集します。

sudo vi /etc/snmp/snmp.conf

不要なベンダーの行をコメントアウトして、その前にハッシュマークを追加することでメモリと時間を節約します()。 あなたは去りたいでしょう netdisco アクティブな行と他のすべてのコメントアウト:

. . .

mibdirs /usr/local/netdisco/mibs/rfc
mibdirs +/usr/local/netdisco/mibs/net-snmp
mibdirs +/usr/local/netdisco/mibs/cisco

# mibdirs +/usr/local/netdisco/mibs/3com
# mibdirs +/usr/local/netdisco/mibs/aerohive
# mibdirs +/usr/local/netdisco/mibs/alcatel
# mibdirs +/usr/local/netdisco/mibs/allied
# mibdirs +/usr/local/netdisco/mibs/apc
# mibdirs +/usr/local/netdisco/mibs/arista

. . .

# mibdirs +/usr/local/netdisco/mibs/sonicwall
# mibdirs +/usr/local/netdisco/mibs/trapeze
# mibdirs +/usr/local/netdisco/mibs/xirrus

. . .

最後に、SNMPサービスを開始する必要があります。

sudo systemctl start snmpd.service

SNMPの詳細については、チュートリアルシリーズSNMPを使用したネットワークの監視と管理を参照してください。 Netdotにデバイスを追加するときは、そのチュートリアルシリーズを参照することをお勧めします。

ステップ4—Netdotのデータベース設定を構成する

Netdotには、ニーズに合わせてカスタマイズする必要のある構成ファイルが付属しています。 Default.confのコピーをSite.confという名前で作成します。

sudo cp /usr/local/src/netdot/etc/Default.conf /usr/local/src/netdot/etc/Site.conf

次に、ファイル Site.conf を変更して、特定のオプションを反映させることができます。

sudo vi /usr/local/src/netdot/etc/Site.conf

完全なファイルはここには表示されません。 次の変数を見つけて、設定に一致するように更新する必要があります。

DB_TYPE => 'mysql'
DB_DBA => 'root',
DB_DBA_PASSWORD => 'rootpass',
DB_HOST => 'localhost',
DB_DATABASE => 'netdot',
DB_NETDOT_USER => 'netdot_user',
DB_NETDOT_PASS => 'netdot_pass',

ほとんどのデフォルト設定で問題ありません。

Netdotデータベースまたはユーザーを手動で作成する必要はありません。 インストールプロセスは、このファイルから値を読み取り、適切なデータベースとユーザーを作成します。

注:将来、構成ファイルを変更する場合、変更を有効にするには、Apacheを再起動する必要があります。

sudo systemctl restart httpd.service

ステップ5—Netdotをインストールします

データベースを初期化します。

sudo make installdb

次に、Netdotをインストールします。

sudo make install PREFIX=/usr/local/netdot APACHEUSER=apache APACHEGROUP=apache

ステップ6—インストールを終了します

Netdotのインストールが成功した後に構成する必要があるのは、Apacheサーバーだけです。

Apache設定のあるディレクトリに設定ファイルをコピーします。

sudo cp /usr/local/netdot/etc/netdot_apache24_local.conf /etc/httpd/conf.d/

Apacheを再起動します。

sudo systemctl restart httpd.service

ステップ7-cronジョブを設定する

Netdotには、定期的に実行する必要のあるスクリプトがいくつかあります。 サンプルのcrontabファイルを cron.d ディレクトリ:

sudo cp /usr/local/src/netdot/netdot.cron /etc/cron.d/netdot

インストールが完了しました。

ステップ8—Netdotにアクセスする

ブラウザを起動して、アドレスに移動します http://your_server_ip/netdot.

デフォルトのユーザー名とパスワードでログインします。どちらもadminです。

すぐにパスワードを変更してください!

Netdotを使用してネットワークを文書化する

このセクションでは、Netdotを紹介し、デバイスを追加してIPを管理する方法を示します。

ログインすると、次のように表示されます。

Netdotのインターフェースは非常にシンプルです。 それを使って実行できる基本的なタスクを見てみましょう。

デバイスからデータを収集する

まず、ネットワークデバイスを追加する必要があります。 それらはいくつかの方法で追加できます。

スクリプトを使用して1つのデバイスをポーリングする

これは、このDroplet独自の情報をNetdotに追加するために使用する方法です。

このコマンドは、スクリプトを実行して単一のホストからデータを取得します。

/usr/local/netdot/bin/updatedevices.pl -H your_server_ip -I -c snmp community

たとえば、次のコマンドを使用して、Netdotがインストールされているサーバーを追加できます。

/usr/local/netdot/bin/updatedevices.pl -H localhost -I -c public

先に進み、このコマンドを実行します。 次のような出力が表示されます。

INFO - /usr/local/netdot/bin/updatedevices.pl started at Wed Nov  5 09:49:39 2014
INFO - Updating single device: localhost
INFO - Inserted new RR: localhost.defaultdomain
INFO - Inserting new Device: localhost
INFO - localhost.defaultdomain: SNMP target address set to 127.0.0.1
INFO - localhost.defaultdomain: Interface 1 (lo) updated
INFO - localhost.defaultdomain: Interface 2 (eno16777728) updated
INFO - localhost.defaultdomain [eno16777728]: Inserted new IP fe80::20c:29ff:fe20:4f53
INFO - localhost.defaultdomain [eno16777728]: Inserted new IP 192.168.176.128
INFO - Device::snmp_update: localhost.defaultdomain: Finished updating
INFO - /usr/local/netdot/bin/updatedevices.pl total runtime: 18 sec

特定のサブネット内のデバイスをスキャンする

このメソッドは、同じスクリプトを使用して、特定のサブネット内のすべてのデバイスをスキャンします。

/usr/local/netdot/bin/updatedevices.pl -B 111.111.111.0/24 -I -c snmp community

ファイルにリストされているデバイスをスキャンします

すべてのデバイスを単純なテキストファイルにリストすると便利な場合があります。 ファイルには、デバイス(ホスト名またはIP)とそのSNMPコミュニティのリストが1行に1つずつ含まれている必要があります。

host1.sample community1 
host2.sample community2
host3.sample community2
host4.sample community3

. . .

次に、Netdotスクリプトを使用して、ファイルにリストされているすべてのデバイスをスキャンできます。

/usr/local/netdot/bin/updatedevices.pl -E /path/to/file

次のコマンドを使用して、スクリプトパラメータの完全なリストを取得できます。

/usr/local/netdot/bin/updatedevices.pl -h

Netdotコントロールパネルからデバイスを追加します

Netdotコントロールパネルで、上部のナビゲーションの管理に移動します。 管理>デバイスを選択します。 [new]リンクをクリックします。

デバイスのホスト名またはIPアドレスを入力します。 ドロップダウンメニューからSNMPバージョンとコミュニティを選択します。 次に、[Discover]をクリックします。 次に、NetdotはSNMPを使用してデバイスをポーリングします。

デバイスのドキュメント

デバイスを作成したら、それに関する詳細情報を追加できます。 名前、IP、またはMACアドレスでデバイスを検索できます。 各情報ページには、いくつかのセクションが含まれています。

基本:

このセクションでは、デバイスに関する一般的な情報(所有者、場所、オペレーティングシステム、および管理情報)を表示および編集できます。 コメントやカスタム属性を追加することもできます。

一部の情報は自動的に取得でき、一部の情報は手動で入力する必要があります。

タイトルをクリックするだけで、任意のパラメータに関するヘルプを入手できます。 たとえば、「First Discovered」というタイトルをクリックすると、次のポップアップウィンドウが表示されます。

インターフェース:

このセクションでは、デバイスのインターフェイスに関する情報(名前、速度、ステータス、ネイバー(直接接続されたデバイス)など)を表示および編集できます。

番号または名前をクリックして、詳細なインターフェイス情報を表示することもできます。

IP情報:

このセクションでは、デバイスで検出されたすべてのIPアドレスと、それらが属するサブネット、それらが検出されたデバイスインターフェイス、およびオプションでDNS名に関する情報を表示できます。 サービス(HTTP、DNS、MySQLなど)を対応するアドレスに接続することもできます。

トポロジー:

このセクションでは、デバイスとその直接接続されたネイバーのグラフを見ることができます。

IPアドレス管理

Netdotの最も便利な機能の1つは、アドレス空間の管理です。 ネットワーク上のIPアドレスを計画、監視、および管理できます。

Netdotのアドレス空間の基本的なオブジェクトはIPブロックです。 これらは、個々のエンドノードアドレス、およびアドレスのグループを表すことができます。 際立った特徴はプレフィックスです。エンドノードアドレスはプレフィックスが/32のIPブロックであり、サブネット126のエンドノードアドレスはプレフィックスが/25のIPブロックです。

たとえば、次の単純な構造を作成しましょう。

104.236.38.0/24
	104.236.38.0/25
	104.236.38.128/25
	    104.236.38.128/26
	    104.236.38.192/26

管理>アドレス空間に移動します。

[new]リンクをクリックします。

IP [/prefix]フィールドに104.236.38.0/24と入力します。 オプションで、OwnerおよびUsedByを指定できます。 ( [new] リンクをクリックし、フォームに入力してページを更新すると、ドロップダウンリストにアイテムを追加できます。)ステータスドロップダウンメニューから、[ステータス]を選択します。 X177X]コンテナ。 このコンテナの説明を入力します。

保存をクリックします。

Netdotは、次のステータスをサポートしています。

次に、 104.236.38.0/25 の新しいサブネットを作成し、StatusSubnetを選択します。

結果として、次のように表示されます。

次のコンテナを作成するには、 Usage for104.236.38.0/24セクションの下部にある赤いコンテナの横にある緑色のバー領域をクリックします。

次に、Netdotは確認を求めます。 IPアドレスまたはブロック104.236.38.128/25はまだ存在していません。 作成してもよろしいですか? 確認後、新しいコンテナを作成します。

このコンテナ内に、 104.236.38.128 /26用の別のサブネットと104.236.38.192/26用の別のコンテナなどを追加できます。

次に、設定した階層全体を見てみましょう。 これを行うには、プライマリコンテナ( 104.236.38.0 / 24 )に移動し、右端の[ツリービュー]リンクをクリックします。 次のように表示されます。

図のボックスの1つをクリックすると、適切なサブネットの詳細なマップが表示されます。

たとえば、次のようになります。

この図は、ネットワークの最初と最後のアドレスが自動的に予約されていることを示しています。 アドレス1〜63はDHCPに使用されます。 ホストまたはデバイスインターフェイスに静的に割り当てられたアドレスは、赤でマークされます。 静的または動的として割り当てられていないが、ネットワーク上で確認されているアドレスは、青色でマークされています。 使用可能なアドレスは緑色でマークされています。

アドレスを追加、予約、または編集するには、そのアドレスをクリックする必要があります。 また、 Utilization フィールドで、サブネット上で使用されているアドレスと使用可能なアドレスに関する全体的な統計を確認できます。この例では、次のようになります。

Used: 76 of 126   Available: 50  (39%)

結論

Netdotは、ネットワークを文書化するための強力なツールです。 このチュートリアルを完了すると、インストール方法、基本的なセットアップ方法、新しいデバイスの追加方法、およびアドレス空間の管理方法について一般的に理解できます。

モバイルバージョンを終了