LAN内で障害を発生させている機器を特定する

LANに接続された特定の機器が障害を発生させているとき、障害を発生させている機器を物理的に特定することは非常に重要です。 ここでは、MACアドレス情報を利用して機器の特定を行う方法を説明します。

MACアドレスとは?

ネットワークインターフェースカード(NIC:Network Interface Card)には、MACアドレスという世界で一意な番号が割り振られています。 MACアドレスはLayer 2(リンク層)の通信を行う時の機器の識別子として利用されます。 また、世界で一意であることが保証されているため、IPv6のIPアドレス設定や、機器のIDとしてソフトウェアアクティベーションなどで使われている場合もあります。

MACアドレスは48ビット長です。 MACアドレスは以下の方法により、一意性が保たれます。 MACアドレスの最初の24ビット(3バイト)はOUI(Organizationally Unique Identifier)と呼ばれ、機器製造ベンダに割り当てられています。 ベンダに対して割り当てられる番号の管理はIEEEが行っています。 これにより、各ベンダは自分のMACアドレス空間を持ちます。 残りの24ビットは各ベンダが独自に割り振っています。 各ベンダは、そのベンダ内でMACアドレスが被らないように残りの24ビットを割り振ります。

IEEEにより割り当てられるMACアドレス空間は、IEEEのサイトで確認できます。

手元のWindows PCのNICのMACアドレスを知りたい場合、コマンドプロンプトで「ipconfig /all」を実行することで確認できます。 また、「コントロールパネル > ネットワーク」でプロパティを表示しても確認できます。 例えば、WindowsXPの場合、「コントロールパネル > ネットワーク > 知りたいネットワーク接続インターフェースをダブルクリック > サポートタブ > 詳細」の「物理アドレス」を見るとわかります。 コマンドラインでの別の方法としては、「netsh diag show adapter /v」で情報を表示して、「MACAddress」の部分を見るという方法もあります。

Linux/*BSD/SolarisなどでMACアドレスを知りたい場合には、「ifconfig -a」を実行すると良いでしょう。

同じセグメント内にあるPCのMACアドレスを知りたい場合には、「arp -a」を行うと良いでしょう(Windows/Linux/*BSD/Solaris)。 arp -aを行っても目的のIPアドレスに対するエントリが無かった場合には、一度目的のIPアドレスに対してpingを行ってからもう一度「arp -a」を行ってください。 また、とりあえず、セグメント内の全ての機器のMACアドレスが必要な場合には、「ping 224.0.0.1」を行ってから「arp -a」を行ってみてください。 224.0.0.1(セグメント内の全てのホスト宛マルチキャストアドレス)宛にpingを行う事により、ICMP Echo Requestに応答する機器のMACアドレスがarpテーブルに追加されます。

MACアドレスを利用して障害対応

MACアドレスは、ローカルネットワーク(LAN)での障害対応時には重要な要素となります。 例えば、ある特定のセグメントにウィルスに感染して他に対して攻撃をしまくっているPCがあったとします。 (障害を発生させているPCのIPアドレスはわかっているものとします。) そのセグメントに刺さっているPCが1台だけならばすぐにウィルスに感染しているPCを特定できますが、100台、200台、だと特定だけで時間がかかってしまいます。

MACアドレスを利用して障害を発生させているPCを探すと、全てのPCのコントロールパネルでIPアドレスを確認する手間を省けます。 まず、MACアドレスからNICのベンダを調べます。 NICのベンダを調べて一致している機器があった場合には、その機器が怪しいという事がわかります。 ただ、NICがあらかじめ組み込まれているPCや、NICのチップセットが何かというのを全ての機器で覚えられるわけではないので、この方法はあくまで最初の手段ということになります。

NICのベンダを調べただけではわからない場合、次はどこに接続されている機器であるかを調べます。 ある程度高価なスイッチを利用している場合、スイッチのコンソールなどからスイッチ内のFDB(Forwarding DataBase)を参照できます。 スイッチ内のFDBを参照すると、スイッチのどのポートに目的のMACアドレスを持つ機器が接続されているかがわかります。 後は、そのスイッチのポートを辿るだけです。

もし、ウィルスを撒き散らしているPCの管理者が不在である場合でも、NICからイーサネットケーブルを引き抜いて被害を抑える等の対策が出来ます。 このようにして障害を発生させている機器を発見すると、早急に対策が行えます。

その他

MACアドレスは世界で一意ですが、稀に同じMACアドレスが存在する可能性があります。 同一セグメント内でMACアドレスが被っていると通信に障害が発生します。 逆に、セグメントが異なれば何の問題も無く使えてしまうので、安物NICを買ってMACアドレスが被ってしまった場合には、違うセグメントで使いましょう。 (そのような怪しいNICに出会ってしまって、しかもそれに気付く人は非常に稀だとは思いますが。。。)