Netdotを選んだ理由
このツールの使用方法を簡単に説明します。 私と同僚の前に、IPアドレスを管理するためのツールを選択するというかなり単純なタスクがありました。 ウィキペディアの表からいくつかのツールを選択し、それらを比較してみました。 選択の主なパラメータは、アクティブな開発、オープン性、クロスプラットフォーム、DNSレコードを管理するためのツールの可用性、アドレス空間のグラフィカル表現でした。
テストされたシステムにはそれぞれ長所と短所があります。 テスト済みのすべてのうち、Netdotに決めました。 活発に開発されており、豊富な機能を備えており、システムはオープンで、Perlで記述されています(Perlでプログラムしているため、ニーズに合わせて何かを構成するのが簡単です)。
もちろん、いくつかの欠点がありますが、私たちにとっては関係ありません:これまでのところ、BIND DNSサーバーのみがサポートされており(さらに、私たちは独自の同期スクリプトを作成するために迷惑をかけません)、トポロジグラフはかなり混乱しています(確かに時間が経つにつれて、この欠陥は解消されます)、柔軟性のない権利管理システムであるL3トポロジを構築することはできません。
したがって、1つの小さなツールを検索する過程で、より大きくより機能的なツールを発見しました。 結局のところ、ネットワークインフラストラクチャに関するすべての情報を1か所にまとめ、管理、論理接続の作成、権限の管理を行う機能は非常に便利です。
また、 NOCシステムを使用してみました(Habrahabrのレビュー記事 )。 その機能ははるかに豊富ですが、私たちにとってはあまり便利ではないようです。 おそらく時間が経ち、私たちの見解を再考するでしょう。
特徴
したがって、Netdot-名前が示すように( Net work Do cumentation T ool)、このソフトウェアはドキュメントの維持に役立ちます。
- SNMPを使用してデバイスを見つけて照会する
- CDP、LLDP、STP、スイッチングテーブルなど、さまざまなソースを使用してL2トポロジを構築および表示します。
- 機器の記録を保持します(資産管理)。
- アドレス空間(IPAM)を追跡します。
- DNSレコードを管理する
- DHCPを管理します。
- ケーブルインフラストラクチャの記録を保管します:部屋、ラック、ソケット、建物内および建物間の接続など。
- 連絡先会計(管理者、オペレーター、部門、売り手、サプライヤーなど)
- 外部システムのエクスポート設定:Nagios、RANCID、Cacti、BIND、DHCPDなど。
構造
一般的な構造について少し説明します。 Netdotは、次のコンポーネントで構成されています。
- データベース-MySQLおよびPostgreSQLは現在サポートされています。 理想的には、Perl DBIでサポートされている任意のデータベースを使用できます。
- ライブラリ-コードは、Perlのオブジェクト指向クラスの階層構造です。
- ユーザーインターフェイス-HTML :: Masonフレームワークに基づいています。
- コマンドラインスクリプト-さまざまなスクリプト(インポート、エクスポート、構成の更新など)。 CRONを使用して、一定の間隔で実行できます。
Netdotの主な要素は「デバイス」(スイッチ、ルーター、アクセスポイント、サーバー)です。 PC、ラップトップ、携帯電話などは「デバイス」とは見なされないことに注意してください。 それらは、ARPテーブルとデバイススイッチングテーブルからデータベースに入力され、IPアドレスまたはMACアドレスによって追跡でき、過去に接続されたスイッチポートを確認できます。
設置
インストールプロセスについて簡単に説明します。 オペレーティングシステムとして、CentOS 6.4を使用しました。
•開発者サイトから最新バージョンをダウンロードします。
~# wget netdot.uoregon.edu/pub/dists/netdot-1.0.4.tar.gz
•または、GitHubから最新バージョンを入手します。
~# git clone git://github.com/cvicente/Netdot
•アーカイブを解凍します。
~# tar -zxC /usr/local/src -f netdot-1.0.4.tar.gz
•依存関係をインストールします。
~# cd /usr/local/src/netdot-1.0.4/
~# make rpm-install
注1 RPMForgeリポジトリをアクティブにしましたが、インストール中にエラーが発生しました:
Transaction Check Error:
file /usr/share/man/man3/XML::SAX::Base.3pm.gz conflicts between attempted installs of perl-XML-SAX-0.96-7.el6.noarch and perl-XML-SAX-Base-1.04-1.el6.rf.noarch
file /usr/share/man/man3/XML::SAX::Exception.3pm.gz conflicts between attempted installs of perl-XML-SAX-0.96-7.el6.noarch and perl-XML-SAX-Base-1.04-1.el6.rf.noarch
修正するには、ファイル/etc/yum.repos.d/rpmforge.repoに次の行を追加します。
exclude=perl-XML-SAX-Base
注2 Debianベースのディストリビューションがある場合は、Netdisco MIBが自動的にインストールされます。 私の場合、それらは手動でインストールする必要があります。
~# yum install net-snmp net-snmp-utils
~# wget kent.dl.sourceforge.net/project/netdisco/netdisco-mibs/latest-snapshot/netdisco-mibs-snapshot.tar.gz
~# tar -zxC /usr/local/src -f netdisco-mibs-snapshot.tar.gz
~# mkdir /usr/local/netdisco
~# mv /usr/local/src/netdisco-mibs /usr/local/netdisco/mibs
~# cp /usr/local/netdisco/mibs/snmp.conf /etc/snmp/
•不足しているPerlモジュールをインストールします。
~# make installdeps
•設定ファイルをコピーします。
~# cp etc/Default.conf 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はデータベースを作成する権限を持つユーザー、DB_DATABASEは作成するNetdotデータベースの名前、DB_NETDOT_USERはNetdotデータベースのユーザーです。
他のすべての設定は後で編集できます。 将来、構成を変更する場合、変更を有効にするにはApacheを再起動する必要があることに注意してください。
•データベースを開始します。
~# make installdb
•Netdotを直接インストールする
~# make install
•Apacheを構成します。
~# cp /usr/local/netdot/etc/netdot_apache2_local.conf /etc/httpd/conf.d/
•インストール後、Apacheを再起動します。
~# service httpd restart
インストールが完了しました。 ブラウザを起動して、アドレスhttp://your_host_name.domain/netdotにアクセスします。 デフォルトのユーザー名とパスワードは「admin」です。
インストールの詳細な説明は、公式ドキュメント( https://osl.uoregon.edu/redmine/projects/netdot/files)にあります。
インターフェース
ユーティリティインターフェイスは非常にシンプルです。

デバイスはいくつかの方法で追加できます。
•コマンドラインでスクリプトを使用してデバイスに問い合わせます。
~# /usr/local/netdot.bin/updatedevices.pl -H < > -I -c <>
-単一のホストから情報を抽出します
~# /usr/local/netdot.bin/updatedevices.pl -B 192.168.1.0/24 -I -c <>
-サブネットをスキャンして情報を抽出します
~# /usr/local/netdot.bin/updatedevices.pl -E < >
-ファイルに記述されているデバイスをスキャンします
次のコマンドを使用して、スクリプトパラメータの完全なリストを取得できます。
~# /usr/local/netdot.bin/updatedevices.pl -h
•Webインターフェイスを介してデバイスを照会または追加します。

その結果、デバイスのリストを取得します。

各デバイスについて、かなり詳細な情報が表示されます。



最後に、使用可能なアドレススペースに関する情報を表示する例を示します。
サブネットの一般的なリスト:

サブネットは、ルーターインターフェイスに表示されます。 コンテナには、サブネットおよびその他のコンテナを含めることができます。 サブネットに他のサブネットとコンテナを含めることはできません 。 コンテナは、ルーターインターフェイスの1つに表示されるとサブネットに変換されます。
サブネットマップ:

IPアドレスは、次のいずれかの状態になります。
- 無料(利用可能)-無料アドレス
- 静的-デバイスインターフェイスに属します
- 発見済み-ARPテーブルにあります
- 動的(動的)-DHCPによって割り当てられた範囲に含まれる
- 予約済み-インターフェイスに割り当てられないアドレス

まとめ
Netdotはかなり強力で機能的なシステムです。 もちろん、ある記事では、その可能性をすべて説明することは不可能です。 記事に興味があれば、続けていきたいと思います。
プロジェクトのウェブサイト:
https://osl.uoregon.edu/redmine/projects/netdot