ネットワーク機器がユニキャストの通信で使うMACアドレスは,その機器に出荷時から設定されているものというのが大原則である。ところが,「MACアドレスを変更する方法」といった解説をインターネットなどでよく見かける。いったい,どうしてそんなことが可能なのだろう。また,MACアドレスを変更してしまっても問題ないのだろうか。Lesson4では,LANカードがMACアドレスを利用するしくみを押さえて,これらの疑問を解決していこう。

LANカードのドライバで書き換え

 ベンダーが設定するMACアドレスは,LANカードの中にある専用メモリーに書き込まれている(図4)。パソコンを起動すると,OSのドライバがこのMACアドレスを読み出し,MAC処理の専用LSI(LANコントローラ)に書き込む。これで,LANカードは自分に割り当てられたMACアドレスを知るわけだ。

図4●MACアドレスは書き換えが可能
図4●MACアドレスは書き換えが可能
MACアドレスはLANカードの専用メモリーに書き込まれている。この専用メモリー上のMACアドレスをOSが起動時に読み込んで,LANカード内のMAC処理を担当する専用LSIに書き込んでいる。このため,OSが書き込む情報を変えれば,専用メモリー上のものとは別のMACアドレスを使用できる。LANカードは機器あてのユニキャスト,マルチキャスト,ブロードキャストのフレームのみを受け取るようにフィルタリングしている。
[画像のクリックで拡大表示]

 LANコントローラは書き込まれたMACアドレスを基に自分に届くイーサネット・フレームを監視し,受け取るデータを判別する。具体的には,自分のMACアドレスがあて先になっているユニキャストのデータと,I/Gビットが1になっているマルチキャストおよびブロードキャストのデータを取り込む

起動時に別のMACアドレスを読み込む

 このしくみを理解すれば,MACアドレスを書き換える方法も理解できるだろう。つまり,LANコントローラに書き込むMACアドレスを,専用メモリーに記録されているものと違う内容にすればよいのだ。LANコントローラが専用メモリーの情報との整合性を確認するしくみは用意されていない。このため,別のMACアドレスを書き込まれても,そのMACアドレスを自分のものと判断して動作する。

 別のMACアドレスを使うのは簡単だ。例えば,Windows XPでは「ローカルエリア接続」のプロパティから,LANコントローラのMACアドレス情報を書き換えることができる。

書き換えはトラブルの元

 MACアドレスを書き換えると便利なケースがある。例えば,サーバーやソフトウエアを利用する端末をMACアドレスで見分けて制限している場合,端末が故障したからといって新しい端末に交換すると,MACアドレスが変わって今まで通りに利用できなくなる。MACアドレスを書き換えれば,こうした不都合が生じた際にユーザー側で簡単に回避できる。

 だが,MACアドレスの書き換えはトラブルの原因となる。万が一,LAN上でMACアドレスが重複すると,データが届いたり届かなかったりして満足な通信ができなくなるのだ。そのため,ベンダーが設定しているMACアドレスは書き換えないのが望ましい

 MACアドレスが書き換えられるということは,セキュリティ面での弱点にもなる。例えば,本来は登録した端末だけをネットワークに接続するようにMACアドレス・フィルタリングしていても,「登録されているMACアドレスに書き換えれば,ネットワークに接続できてしまう。MACアドレスで端末を認証することは,あまり意味がない」(セキュリティフライデー佐内大司代表取締役社長)からだ。

 MACアドレスが書き換えられることを利用した攻撃があるのも知っておきたい。「ARPスプーフィング」と呼ぶ攻撃では,LAN上に流れているフレームをすべて受け取り,他の端末のMACアドレスを調べて勝手に応答してしまうのだ。