「このケーブルはどこに繋がっているのか?」という悪夢
私はかつて、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に属しているか分からない、といった状況に陥ります。
システム管理者のための救済策
通常、管理者は以下のような方法をとります:
- Nmapスキャン: どのデバイスがオンラインかは分かりますが、物理的なポート位置については全く把握できません。
- ZabbixやLibreNMSの利用: 帯域幅の監視には非常に優れています。しかし、詳細なトポロジー図の描画やポート管理機能は、専門ツールに比べると弱い傾向にあります。
- 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台以上のスイッチを管理しているなら、今すぐ導入して「手動の配線確認」という苦労から解放されましょう。
