前書き

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

基本的な機能:

  • SNMPを使用したデバイスの検出とポーリング

  • さまざまなソース(CDP、LLDP、STP、およびスイッチ転送テーブル)を使用してL2トポロジを検出および構築します

  • 資産運用管理

  • v4およびv6のIPアドレス管理

  • DHCP管理

  • DNS管理

  • ケーブル管理:クローゼット、部屋、ソケット、建物内および建物間の接続など。

  • 連絡先管理:管理者、オペレーター、部門、プロバイダー、ベンダーなど。

  • 外部ツールのエクスポート設定:Nagios、RANCID、Cacti、BINDなど。

Netdotプロジェクトのサイトをご覧ください。

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

前提条件

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

  • CentOS 7ドロップレットを展開する

  • https://www.digitalocean.com/community/tutorials/initial-server-setup-with-centos-7 [初期サーバー設定]に従ってsudoユーザーを追加します。

  • swap spaceをサーバーに追加します。例の4 GBの量で十分です

  • NetdotにはWebサーバーとデータベースサーバーが必要なため、https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-centos-7 [LAMP]ソフトウェアをインストールします。

  • * root * MySQLパスワードを書き留めます。このチュートリアルで必要になります

  • 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リポジトリの詳細については、https://fedoraproject.org/wiki/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-依存関係のインストール

次に、依存関係をインストールする必要があります。 Netdotに含まれるスクリプトでこれを行います。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]?

次に、スクリプトは必要なモジュールをインストールします。 最後に、この概要が表示されます。一部のインストール済みのものと未インストールのものが表示されます。

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]?

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]

<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]

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]

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

これを完了するには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を設定する必要がありますが、このチュートリアルでは、このDroplet自体を監視します。

まず、Netdisco MIBsをインストールする必要があります。 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の詳細については、チュートリアルシリーズhttps://www.digitalocean.com/community/tutorial_series/monitoring-and-managing-your-network-with-snmp[SNMPを使用したネットワークの監視と管理]をご覧ください。 Netdotにデバイスを追加する場合は、そのチュートリアルシリーズを参照してください。

手順4-Netdotのデータベース設定を構成する

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

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

次に、特定のオプションを反映するようにファイルを変更できます。

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

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

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

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

  • + DB_DBA +:データベースを作成する権限を持つMySQLユーザー。ほとんどの場合、* root *である必要があります

  • + DB_DBA_PASSWORD +:* root *の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:/// netdot +」に移動します。

デフォルトのユーザー名とパスワード(両方とも* admin *)でログインします。

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

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

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

ログインすると、次が表示されます。

image:https://assets.digitalocean.com/articles/Netdot_CentOS7/1.png [Netdotインターフェイス]

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

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

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

  • スクリプトを使用して、一度に1つずつ

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

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

  • Netdotコントロールパネルを使用して手動で

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

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

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

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

たとえば、次のコマンドを使用して、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  -I -c

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

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

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

. . .

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

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

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

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

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

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

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

デバイスのドキュメント

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

基本:

image:https://assets.digitalocean.com/articles/Netdot_CentOS7/2.png [基本タブ]

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

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

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

image:https://assets.digitalocean.com/articles/Netdot_CentOS7/3.png [最初に発見されたヘルプ]

インターフェース:

image:https://assets.digitalocean.com/articles/Netdot_CentOS7/4.png [インターフェース]タブ

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

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

image:https://assets.digitalocean.com/articles/Netdot_CentOS7/5.png [インターフェースの詳細]

  • IP情報:*

image:https://assets.digitalocean.com/articles/Netdot_CentOS7/6.png [IP情報]タブ

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

トポロジー:

画像:https://assets.digitalocean.com/articles/Netdot_CentOS7/7.png [トポロジ]タブ

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

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

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

image:https://assets.digitalocean.com/articles/Netdot_CentOS7/8.png [アドレス空間]

  • [新規] *リンクをクリックします。

image:https://assets.digitalocean.com/articles/Netdot_CentOS7/9.png [コンテナの追加]

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

[保存]をクリックします。

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

  • コンテナ:他のコンテナまたはIPブロックが含まれます

  • サブネット:実際のサブネットを表します

  • 予約済み:何らかの理由で割り当てられるべきではないブロック

  • 静的:静的に割り当てられます

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

image:https://assets.digitalocean.com/articles/Netdot_CentOS7/10.png [サブネットの追加]

結果として以下が表示されます。

image:https://assets.digitalocean.com/articles/Netdot_CentOS7/11.png [サブネット作成]

次のコンテナを作成するには、* Usage for 104.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 )に移動し、右端の [ツリービュー] *リンクをクリックします。 以下が表示されます。

image:https://assets.digitalocean.com/articles/Netdot_CentOS7/12.png [ツリービュー]

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

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

image:https://assets.digitalocean.com/articles/Netdot_CentOS7/13.png [サブネットブロックビュー]

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

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

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

結論

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