Windows Vista の DHCP クライアント

家の無線ルータを買い換えた。Linux からは普通に無線で接続できたのだけれど、Windows Vista のマシンでインターネットが使えなくなってしまう。一見、接続しているように見えるのだけれど、「限定された」とか「ローカル」などの言葉がついている。
ルータを調べると、無線の認証は通っているけれど、IP が割り振られていない。どうも、DHCP に問題がありそうだ。
Linux では接続できているので、OS との相性だと予想をつける。検索すると(vista dhcp - Google 検索)、ぴったり解決策が出てくる。Vista はアドレス要求に対してブロードキャストでの応答を求めるデフォルト設定になっていて、それに従わないパケットが DHCP サーバから返ってきても無視してしまうようだ。なるほどね。
解決策は に書いてある。レジストリをいじって、DHCP のブロードキャストフラグを利用しないようにすればいい。
ちなみに、上の解決策で必要なインターフェイスの {GUID} はコマンドプロンプトから下のコマンドで調べられる。

> getmac.exe /v

追記

多くのページでは解決策として、レジストリ内に DhcpConnDisableBcastFlagToggle を追加することが書いてあるけれど、僕の環境ではそれだけでは不十分だった。一時的に解決しても、再起動するとまたアドレス割り振りが上手くいかなくなってしまう。DHCP のリース期間と関係があるのかもしれない。対策としてさらに DhcpConnForceBroadcastFlag という項目の値をいじる必要があった。詳しくは、上のマイクロソフトのページの「詳細」セクションに書いてある。