こんにちは、阿久津です。夏も終わり秋の気配が感じられるようになりましたが、我が仕事場は相変わらず。クライアントコンピュータやサーバの排熱により、エアコンいらずクーラー必須という有様です。今年の夏もクーラーフル稼働で過ごしてきましたが、つい昨日、ブロードバンドルーターが熱暴走。熱を冷ましてからハードリセットを繰り返してもランプが点灯し、PPPoE接続する気配を見せません。
仕方なしに、お古のブロードバンドルーターを設置してみましたが、今度はクライアント側で問題が。Windows Vistaをインストールしたコンピュータだけ、ブロードバンドルーターのDHCPサーバからIPアドレスを取得できないのです。Windows XPやWindows Server 2003をインストールしたコンピュータは正常に動作していますので、手持ちの資料を調べてみますと、BROADCASTフラグに起因する問題でした。
そもそもWindows Vistaは、DHCPサーバを発見するためのパケットにBROADCASTフラグを使用していますが、Windows XP以前はBROADCASTフラグが無効の状態で運用されてきました。そのため、一部のブロードバンドルーター、もしくは古いDHCPサーバの場合、BROADCASTフラグがないと誤動作を起こし、IPアドレスを取得できないというトラブルが発生するのです。今回はこの問題を解決するチューニングを紹介しましょう。
まずはBROADCASTフラグの無効対象となるネットワークアダプタに割り当てられたGUIDを調べなければなりません。コマンドプロンプトを起動し、「getmac -v」を実行しますと、「トランスポート名」にGUIDが表示されます。これをメモしてから先に進みましょう(図01~02)。
クイック検索やファイル名を指定して実行などから「regedit」を実行してレジストリエディタを起動し、HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Parameters \ Interfacesまでキーをたどって開きます。先ほどメモしたGUIDを持つキーを開き、右ペインの何もないところを右クリックしてください。メニューから<新規>→<DWORD(32ビット)値>と選択して、新しいDWORD値の名前を「DhcpConnDisableBcastFlagToggle」に変更します(図03~04)。
続いてDWROD値DhcpConnDisableBcastFlagToggleをダブルクリックで開き、値のデータを「1」に変更して<OK>ボタンをクリックします。変更内容をシステムに反映させるため、レジストリエディタを終了し、コンピュータを再起動すれば、チューニング完了です(図05~06)。
これで、Windows VistaのDHCPクライアント機能が、BROADCASTフラグを参照しないようになります。このチューニングで正常に動作しない場合は、もう1つのチューニングもお試しください。
先ほどの手順を参考にレジストリエディタでGUIDを持つキーを開き、右ペインの何もないところを右クリックしてください。メニューから<新規>→<DWORD(32ビット)値>と選択して、新しいDWORD値の名前を「DhcpConnForceBroadcastFlag」に変更します。同値のデータ値は「0」のままでよいため、そのままレジストリエディタを終了し、コンピュータを再起動してください(図07~08)。
図07: HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Parameters \ Interfaces \ {GUID}までキーをたどって開き、右ペインを右クリック。メニューから<新規>→<DWORD(32ビット)値>と選択して、DWORD値DhcpConnForceBroadcastFlagを作成します |
それでは、また次号でお会いしましょう。
阿久津良和(Cactus)