Netdisco:ネットワーク構成図の自動化とスイッチポート管理を「劇的に効率化」する方法

Network tutorial - IT technology blog
Network tutorial - IT technology blog

「このケーブルはどこに繋がっているのか?」という悪夢

私はかつて、100人規模のオフィスと、Cisco、HP、Juniperなど様々なベンダーのスイッチやルーターが約30台ある小規模なデータセンターのネットワークを管理していました。トラブルが発生したり、席替えがあったりするたびに、懐中電灯を片手にサーバー室にこもるのがお決まりの光景でした。各スイッチにSSHでログインし、show mac address-table や show cdp neighbors を叩く作業は、まさに苦行そのものでした。

最もプレッシャーを感じるのは、上司から「IP 192.168.1.50のデバイスはどのポートに繋がっている?」と聞かれた時です。もし、あなたが今でも2年前に更新が止まったExcelの「ネットワーク構成図」を必死に探しているなら、それは自分自身を苦しめているだけかもしれません。

なぜ手動管理は常に「ミッション・インポッシブル」なのか?

ネットワークは生き物です。デバイスの追加、ポートの差し替え、故障したスイッチの交換など、日々変化しています。VisioやExcelで構成図を維持しようとする試みは、通常以下の理由で失敗します:

  • データが常に「古い」: 技術者が配線を繋ぎ変えた後に一度でも更新を忘れると、ドキュメント全体が信頼できないものになります。
  • 追跡が遅すぎる: 1つのMACアドレスを探すために10台のデバイスに手動でログインしていると、貴重な30分があっという間に過ぎてしまいます。
  • 関連性の欠及: IPは分かってもポートが分からない、ポートは分かっても直接ログインしなければどのVLANに属しているか分からない、といった状況に陥ります。

システム管理者のための救済策

通常、管理者は以下のような方法をとります:

  1. Nmapスキャン: どのデバイスがオンラインかは分かりますが、物理的なポート位置については全く把握できません。
  2. ZabbixやLibreNMSの利用: 帯域幅の監視には非常に優れています。しかし、詳細なトポロジー図の描画やポート管理機能は、専門ツールに比べると弱い傾向にあります。
  3. Netdisco: これこそが「特化型ツール」です。「何がどこに接続されており、スイッチ同士がどう繋がっているか」という問いに正確に答えてくれます。

Netdisco:インフラ管理の「救世主」

Netdiscoは、SNMPを使用してデータを自動収集するオープンソースツールです。デバイスをリストアップするだけでなく、ネットワーク構成図を自動的に描画し、IP/MACの履歴追跡やVLANの集中管理も行えます。

最大の魅力は、その圧倒的な検索スピードです。IPやMACの一部を入力するだけで、システムが「スイッチA、ポートGi0/1、VLAN 10」と即座に特定してくれます。ネットワーク内のデバイスを探す時間を、少なくとも80%は削減できるでしょう。

インストール前の準備

  • Ubuntu 22.04 または Debian 12 の仮想マシン
  • sudo 権限
  • SNMP(v2c または v3)が有効化されたネットワーク機器

Netdiscoのインストール手順詳細

昔のような複雑なPerlライブラリを一つずつ手動でインストールする方法は忘れましょう。現在は、時間を最適化するためにモダンなスクリプトを使用します。

ステップ1:依存パッケージのインストール

sudo apt update
sudo apt install -y curl modern-perl postgresql-all graphviz libdbd-pg-perl libsnmp-perl libssl-dev libcrypt-openssl-rsa-perl

ステップ2:専用ユーザーの作成

Netdiscoをroot権限で実行してはいけません。これはセキュリティ上の鉄則です。

sudo useradd -m -p x -s /bin/bash netdisco
sudo su - netdisco

ステップ3:Netdiscoアプリのインストール

netdisco ユーザーのターミナルで、以下のコマンドを実行します:

mkdir ~/bin
curl -L https://cpanmin.us | perl - --notest --local-lib ~/perl5 App::Netdisco

# コマンドを認識させるためにPATHを更新
echo 'export PATH=$PATH:$HOME/bin' >> ~/.bashrc
source ~/.bashrc

ステップ4:データベースの設定

Netdiscoはデータの保存にPostgreSQLを使用します。データベースとユーザーを作成する必要があります(sudo権限で実行してください):

sudo -u postgres psql -c "CREATE USER netdisco WITH PASSWORD 'あなたのパスワード';"
sudo -u postgres psql -c "CREATE DATABASE netdisco OWNER netdisco;"

ステップ5:システム設定

netdisco ユーザーに戻り、~/environments/deployment.yml に設定ファイルを作成します:

mkdir ~/environments
nano ~/environments/deployment.yml

以下の内容を貼り付け、DB情報とSNMP情報を適宜修正してください:

database:
  name: 'netdisco'
  user: 'netdisco'
  pass: 'あなたのパスワード'
  host: 'localhost'

snmp_auth:
  - community: 'your_public_string'
    read: true

ステップ6:データの初期化

~/bin/netdisco-deploy

このコマンドにより、テーブルの作成、MIB(Cisco、HPなどのデバイス識別ライブラリ)のダウンロード、Webインターフェース用の管理者アカウント作成が自動的に行われます。

サービスの起動

Netdiscoは、Webインターフェースとネットワークスキャンのバックエンドという2つのコンポーネントで動作します。

~/bin/netdisco-web start
~/bin/netdisco-daemon start

ブラウザを開き、http://サーバーのIPアドレス:5000 にアクセスしてください。

Netdiscoを使いこなすための実践的なヒント

1. デバイスの「シード(きっかけ)」テクニック

インストール直後のNetdiscoは空の状態です。まず、コアデバイスのIPアドレスを指定する必要があります:

~/bin/netdisco-do discover -d 10.0.0.1

CDP/LLDPプロトコルのおかげで、Netdiscoは自動的に周囲のスイッチを検出し、構成図に追加します。スイッチを一台ずつ手動で登録する必要はありません。

2. 自動スキャンのスケジュール設定

データを常に最新に保つため、deployment.yml ファイルでスキャンスケジュールを設定しましょう:

schedule:
  discoverall: '0 1 * * *'   # 午前1時にシステム全体をスキャン
  macwalk: '*/30 * * * *'    # 30分ごとにコンピュータの位置を更新
  arpwalk: '*/20 * * * *'    # 20分ごとにIP/MACテーブルを更新

3. ポートコントロールの威力

SNMP設定に書き込み(Write)権限がある場合、Web画面上でポートの Shut/No-Shut を実行できます。マルウェアを拡散させているコンピュータを即座に隔離したいが、SSHターミナルを開く余裕がない、といった場面で非常に便利です。

最後に

NetdiscoはZabbixを完全に置き換えるものではありませんが、物理インフラ管理において欠けていた最後のピースを埋めてくれるツールです。私の経験上、Netdiscoを導入することで、接続トラブル対応時のストレスが70%軽減されました。もし10台以上のスイッチを管理しているなら、今すぐ導入して「手動の配線確認」という苦労から解放されましょう。

Share: