ラック内の「スパゲッティ状態」のケーブルを、システム管理者が懐中電灯で一本ずつ確認する光景は珍しくありません。ラベルが剥がれていたり誤記があったりすると、サーバーがスイッチのどのポートに接続されているかを探すのは苦行です。そんな時、lldpdは席を立つことなくネットワークインフラを「透視」できる強力な助っ人になります。
配線確認で時間を無駄にしない
大規模なデータセンターでは、物理トポロジー(物理的な接続構成)の把握は必須です。通常、以下のようなリスクのある手動の方法が使われがちです。修復作業や構成変更の際に混乱を招く可能性があります。
- ラベリング(Labeling): メンテナンスやケーブル交換を数回繰り返すと、情報の乖離が発生しやすくなります。
- スイッチのMACテーブル参照: スイッチにログインし、サーバーのMACアドレスを探してポートを確認する必要があります。サーバーが数百台ある場合、非常に煩雑です。
- 自動プロトコル: デバイス同士が情報を「挨拶」し合って自己申告する方法です。これが最もプロフェッショナルなやり方です。
なぜCDPやSNMPではなくLLDPを選ぶのか?
各プロトコルには一長一短がありますが、現在LLDPが標準として主流になりつつあります。
CDP (Cisco Discovery Protocol) はCisco独自の規格です。Dell、HP、Juniperなどが混在するマルチベンダー環境では、CDPの限界がすぐに露呈します。一方で SNMP は負荷が高すぎます。SNMPでネットワークマップを描くには複雑な監視システム(NMS)が必要で、コマンドラインから素早く結果を確認することはできません。
LLDP (Link Layer Discovery Protocol) は国際標準のIEEE 802.1ABです。現在、主要なメーカーはすべてこれをサポートしています。レイヤー2で動作するため、サーバーにIPアドレスが設定されていなくても、デバイス同士を認識できます。lldpd は、Linux向けの超軽量なオープンソース実装であり、LLDPだけでなく、CDPやEDPなどの他のプロトコルの「模倣」もサポートしています。
lldpdの実戦におけるメリット
実際の運用経験から、lldpdの以下の3点を高く評価しています。
- 優れた互換性: ほとんどの最新スイッチとスムーズに通信できます。
- 使いやすいCLI:
lldpcliツールの構文は、専用ネットワーク機器のCLIと非常によく似ています。 - 詳細な情報: スイッチ名、ポート番号、VLAN、さらには対向機器の機能(capabilities)まで正確に把握できます。
Linuxでのlldpd導入ガイド
以下はUbuntu/Debianでの手順です。CentOS/RHELの場合は、aptをdnfに読み替えてください。
ステップ1:パッケージのインストール
sudo apt update && sudo apt install lldpd -y
ステップ2:サービスの有効化
データが常に最新の状態に保たれるよう、デーモンが実行され、システム起動時に自動開始されるようにします。
sudo systemctl enable --now lldpd
ステップ3:隣接デバイスの検出
サーバーがどのデバイスに接続しているかを知るには、この魔法のコマンドを実行します。
sudo lldpcli show neighbors
結果には、あなたの疑問を解決するすべての情報が含まれています:
-------------------------------------------------------------------------------
LLDP neighbors:
-------------------------------------------------------------------------------
Interface: eth0, via: LLDP, last updated: 20s
Chassis:
ChassisID: mac 00:25:90:bd:f4:c2
SysName: Core-Switch-Floor-5
SysDescr: Cisco IOS Software, C3750E Software
Capability: Bridge, enabled
Capability: Router, enabled
Port:
PortID: ifname GigabitEthernet1/0/24
PortDescr: Connect-to-Web-Server-01
-------------------------------------------------------------------------------
これを見れば、サーバーがスイッチ Core-Switch-Floor-5 のポート Gi1/0/24 に接続されていることが一目でわかります。推測も配線確認も不要です。
最適化とセキュリティのヒント
1. 自動化のためのデータ出力
管理を自動化するためのスクリプトを作成している場合は、JSON形式を使用してください。データの抽出が非常に簡単になります:
sudo lldpcli show neighbors -f json
2. ポート特定後の素早いIP設計
スイッチ上のどのVLANにサーバーがあるかがわかれば、次はIPアドレスの割り当てです。IP帯域(特に/27や/29などの変則的なサブネット)の計算ミスを防ぐために、私はよく IP Subnet Calculator を使用します。このツールを使えば、数秒でIPレンジとブロードキャストアドレスを特定できます。
3. 受信専用モード(Receive-only)
高セキュリティ環境では、サーバー自身の情報を公開したくない場合があります。サーバーに「送信」させず「受信」のみをさせるには、/etc/default/lldpd ファイルを編集します:
DAEMON_ARGS="-r"
その後、再起動します:sudo systemctl restart lldpd
デバイスが表示されない場合のトラブルシューティング
もし show neighbors の結果が空の場合は、以下の3点を確認してください:
- スイッチの設定: Ciscoの多くのモデルでは、デフォルトでLLDPが無効になっています。設定モードに入り、
lldp runと入力してください。 - インターフェースの状態: ケーブルがしっかりと差し込まれ、リンクライトが点灯している必要があります。
- ファイアウォール: 稀ですが、ファイアウォールが EtherType 0x88cc をブロックしていないか確認してください。
50ノードのクラスター全体に lldpd を導入したことで、わずか5分で接続図を描き直すことができました。このソリューションにより、冗長ノード間でのケーブルの挿し間違えといった初歩的なミスを完全に排除できます。このテクニックを活用して、Linuxシステム管理業務をよりスマートに進めましょう!

