Japanese Stable CLIP を試してみた

Windows VISTA で DHCP サーバーから IP アドレスを取得できない

以前の投稿で Microsoft の KB と、Fedora のフォーラムにあった手順を紹介したけど、Microsoft の KB についてちょっと不思議な点があったのでメモ。
ついてに参考:RFC2131(Dynamic Host Configuration Protocol) の日本語訳
あとMicrosoft のこの KB は英語にして見た方が詳しく記述されています。

「VISTA DHCP 取得できない」などで検索すると、Microsoft の KB と、レジストリに「DhcpConnDisableBcastFlagToggle」という名前の DWORD 値を作成するように記述しているサイトが目立ちます。あとは、「DhcpConnForceBroadcastFlag」を編集する方法。また、Windows7 でも同様の手順を紹介しているサイトもありました。

で、これは このページ の下のほうを見ると、Microsoft の記述ミスで、KB の初出では Disable で記述されていたんだとか。現在は修正されて、「DhcpConnEnableBcastFlagToggle」となっている。

多分、Windows のバージョンごとのデフォルト値 (というかデフォルトはそれぞれ 0 で、1 の項目が標準設定としてレジストリに記載されている状態) がこんな感じだと推測。

Windows XP...........DhcpConnForceBroadcastFlag=0, DhcpConnEnableBcastFlagToggle=0
Windows VISTA....DhcpConnForceBroadcastFlag=1, DhcpConnEnableBcastFlagToggle=0
Windows 7............DhcpConnForceBroadcastFlag=1, DhcpConnEnableBcastFlagToggle=1

まずは Broadcast Flag を Force するかどうかの設定があって、それを enable にした (1 にした) 場合に追加の設定として、Broadcast Flag の Toggle を Enable にするかどうかを設定する、と考えればつじつまが合う。
でも、Broadcast Flag の Toggle を Disable にするかどうか、って設定項目だと、デフォルトで Broadcast Flag の Toggle を行うみたいになってしまう。それはそれで機能としてはありだけど、問題は「DhcpConnDisableBcastFlagToggle」に「1」を設定することで問題が解決するように記述しているページがあること。
Broadcast Flag の Toggle を Disable にするかどうかに「1」を設定したら、Flag を Toggle しなくなっちゃうように思うよね。

たとえば こういうページ を見ると、ブロードキャストじゃないほうが、DHCP クライアントの挙動としては面倒になるのかもしれない。だから、Microsoft は DHCP クライアントはブロードキャストフラグを使用する方に向かいたいのかもしれない。
実際、VISTA でも常に DHCP で IP アドレスが取得できないのではなく、ほかのクライアントとの兼ね合いで IP アドレスの取得に失敗することがある感じ。

というわけで、解決方法は「DhcpConnEnableBcastFlagToggle」を追加して「1」をセットするか、「DhcpConnForceBroadcastFlag」を「0」に変更するか、ではないかと思います。

コメント