Dec 15, 2010

DHCP

先日購入した MacBook Air を自宅のネットワークに接続しようとした所、 何故か DHCP での IP アドレス取得に失敗してしまう現象が発生した。 Windows Xp や FreeBSD がインストールされた PC では正しく取得できるが、 MacOS X ではどうやっても IP アドレスが取得できない。 無線 LAN 接続のアクセスポイント(TimeCapsule)の設定を変更したり、 アクセス制御を解除してみても全然 IP アドレスが取得できず DHCP サーバの設定を何度も確認しても症状はいっこうに改善されない。

そこでネットワーク障害はパケットキャプチャが基本だと思い立ち、 IP アドレスが取得できない MacBook Air で tcpdump (1) を実行すると、 クライアントからの DHCP DISCOVER に対して サーバは DHCP OFFER を応答しているのだが、 パケットの Source IP Address が 127.0.0.1 となっている事を発見した。

なぜ DHCP OFFER パケットの Source IP Address が 127.0.0.1 だったのか、 結論から言うと /usr/local/etc/dhcp.conf ファイル中の option domain-name に設定した FQDN が /etc/hosts127.0.0.1 で登録されていたため、 DHCP サーバがパケットを送信する際に domain-name を逆引きした結果として 127.0.0.1 を Source IP Address に設定してしまった様だ。
/etc/hosts から該当する FQDN のエントリーを削除して、 DHCP サーバを再起動した所 IP アドレスが取得できた。

FQDN を 127.0.0.1/etc/hosts に登録する事は Linux の一部のディストリビューションなどでは普通に行われている様だが、 メイルが送信できない、DHCP が機能しないなどの障害発生の原因になるので 是非とも辞めて欲しい。

それにしてもこの MacOS X の DHCP クライアントは Source IP Address が 127.0.0.1 の DHCP OFFER を無視しちゃうのね。

Edit this entry...

wikieditish message: Ready to edit this entry.
















A quick preview will be rendered here when you click "Preview" button.