こんにちは、阿久津です。夏も終わり秋の気配が感じられるようになりましたが、我が仕事場は相変わらず。クライアントコンピュータやサーバの排熱により、エアコンいらずクーラー必須という有様です。今年の夏もクーラーフル稼働で過ごしてきましたが、つい昨日、ブロードバンドルーターが熱暴走。熱を冷ましてからハードリセットを繰り返してもランプが点灯し、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)。

図01: 「ファイル名を指定して実行」や「クイック検索」のテキストボックスに「cmd」と入力して[Enter]キーを押します

図02: コマンドプロンプトが起動したら、「getmac -v」と実行します。ネットワークアダプタのGUIDが表示されますので、メモしておきましょう

クイック検索やファイル名を指定して実行などから「regedit」を実行してレジストリエディタを起動し、HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Parameters \ Interfacesまでキーをたどって開きます。先ほどメモしたGUIDを持つキーを開き、右ペインの何もないところを右クリックしてください。メニューから<新規>→<DWORD(32ビット)値>と選択して、新しいDWORD値の名前を「DhcpConnDisableBcastFlagToggle」に変更します(図03~04)。

図03: 「ファイル名を指定して実行」や「クイック検索」のテキストボックスに「regedit」と入力して[Enter]キーを押します

図04: HKEYLOCALMACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Parameters \ Interfaces \ {GUID}までキーをたどって開き、右ペインを右クリック。メニューから<新規>→<DWORD(32ビット)値>と選択して、DWORD値DhcpConnDisableBcastFlagToggleを作成します

続いてDWROD値DhcpConnDisableBcastFlagToggleをダブルクリックで開き、値のデータを「1」に変更して<OK>ボタンをクリックします。変更内容をシステムに反映させるため、レジストリエディタを終了し、コンピュータを再起動すれば、チューニング完了です(図05~06)。

図05: DWORD値DhcpConnDisableBcastFlagToggleをダブルクリックで開き、値のデータを「1」に書き換えてから<OK>ボタンをクリックします

図06: 設定を終えたらレジストリエディタを終了し、Windows Vistaを再起動してください

これで、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を作成します

図08: そのままレジストリエディタを終了し、Windows Vistaを再起動してください

それでは、また次号でお会いしましょう。

阿久津良和(Cactus)