序章

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

基本機能:

  • SNMPを使用してデバイスを検出およびポーリングします
  • CDP、LLDP、STP、スイッチ転送テーブルなど、さまざまなソースを使用してL2トポロジを検出して構築します
  • 資産運用管理
  • v4およびv6のIPアドレス管理
  • DHCP管理
  • DNS管理
  • ケーブル管理:クローゼット、部屋、ソケット、建物内および建物間の接続など。
  • 連絡先管理:管理者、オペレーター、部門、プロバイダー、ベンダーなど。
  • 外部ツールのエクスポート設定:Nagios、RANCID、Cacti、BINDなど。

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

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

前提条件

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

  • CentOS7ドロップレットをデプロイする
  • サーバーの初期設定に従ってsudoユーザーを追加します
  • スワップスペースをサーバーに追加します。 例の4GBの量で問題ありません
  • NetdotにはWebサーバーとデータベースサーバーが必要なため、LAMPソフトウェアをインストールします
  • rootMySQLパスワードをメモします。 このチュートリアルで必要になります
  • EPEL(Enterprise Linux用の追加パッケージ)リポジトリを有効にします。
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
  • dnssec-tools を手動でインストールします(証明書チェックのスキップが心配な場合は、別の方法を使用することをお勧めします)。
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—依存関係をインストールする

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

まず、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',

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

  • DB_DBA:データベースを作成する権利を持つMySQLユーザー。 ほとんどの場合、rootである必要があります
  • DB_DBA_PASSWORDrootのMySQLパスワード
  • DB_DATABASE:Netdot用に作成するデータベースの名前
  • DB_NETDOT_USER:作成するNetdotデータベースユーザー
  • DB_NETDOT_PASS:Netdotデータベースユーザーに一意のパスワードを設定します

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 interface

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

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

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

  • スクリプトを使用して、一度に1つずつ
  • 特定のサブネット内のデバイスをスキャンする
  • ファイルにリストされているデバイスをスキャンする
  • 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アドレスでデバイスを検索できます。 各情報ページには、いくつかのセクションが含まれています。

基本:

Basics tab

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

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

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

First Discovered help

インターフェース:

Interfaces tab

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

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

Interface detail

IP情報:

IP Info tab

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

トポロジー:

Topology tab

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

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

管理>アドレススペースに移動します。

Address space

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

Add container

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