Windows TIPS
[Network]
Windows VistaでDHCPサーバからIPアドレスが取得できない不具合を解消する
■
Windows Vistaでは、DHCP発見パケットのBROADCASTフラグがセットされている。
■
そのため、特定のルータやDHCPサーバからIPアドレスが取得できないという障害が発生することがある。
■
レジストリを編集して、DHCPのBROADCASTフラグの扱いを変更すれば不具合を解消できる。
Windows XPやWindows 7ではIPアドレスが取得できるのに、Windows Vistaでは取得できないルータやDHCPサーバがある。これは、Windows VistaのDHCP発見パケットのBROADCASTフラグがセットされていることに起因する。
DHCPのBROADCASTフラグとは?
DHCPは、RFC2321 で定義されている、IPアドレス設定を自動化するためのプロトコルである。
DHCPクライアントが、DHCPでIPアドレスを取得するとき、IPアドレスを配布するDHCPサーバを発見するため、ネットワークに対して、DHCP発見(DHCPDISCOVER)パケットをブロードキャストする。DHCPサーバは、その発見パケットに対して、DHCP提供(DHCPOFFER)パケットで応えると、DHCPクライアントがDHCP要求(DHCPREQUEST)パケットをブロードキャストし、サーバがこれに応えて必要な情報(DHCPACKパケット)を提供する。これによりDHCPクライアントは、DHCPサーバからIPアドレスが取得できることになる。
クライアントから送信されるDHCPパケットでBROADCASTフラグがセットされていた場合、DHCPサーバや(DHCPのリレーを行う)ルータは、クライアントに対してブロードキャストで応答を返す。Windows Vista以前のOSではこのフラグは0だったので、ブロードキャストではなく、可能な場合はユニキャスト(特定のコンピュータだけに対する送信) で応答を返していた。これは、IPアドレスなどが確定する前には、ユニキャストのパケットを受け取ることができないようなシステムのために用意されている機能である。
Windows Vistaでは、BROADCASTフラグをセットするようにデフォルト設定を変更したが、DHCPサーバやリレー・エージェントの実装によっては、BROADCATフラグがセットされているパケットを正しく処理できないものがある。そのような環境ではWindows VistaがIPアドレスを取得できないという問題が発生する可能性がある。
Windows 7以降ではBROADCASTフラグに関する扱いが変更され、状況に応じて両方のパケットを順次試行し、応答が得られたフラグ設定を次回以降も使用する、などの変更が行われている。
この問題を解消するためには、BROADCASTフラグを正しく処理できるルータやDHCPサーバを導入するか、Windows Vistaのレジストリを編集してBROADCASTフラグの扱いを変更すればよい。BROADCASTフラグを常に0に設定させるという方法もあるが、より柔軟な対応としては、0と1の両方で順次試行させるのがよいだろう。以下ではそのためのレジストリ設定の方法を紹介する。
BROADCASTフラグの扱いを変更するには、レジストリを編集する方法と、サポート技術情報で提供されている「Fix it」を利用する方法がある(「Fix it」については「Windows TIPS:サポート技術情報にある[Fix it]アイコンとは 」参照のこと)。
■レジストリを編集する方法
[注意]
レジストリに不正な値を書き込んでしまうと、システムに重大な障害を及ぼし、最悪の場合、システムの再インストールを余儀なくされることもあります。レジストリ・エディタの操作は慎重に行うとともに、あくまで御自分のリスクで設定を行ってください。何らかの障害が発生した場合でも、本Windows Server Insider編集部では責任を負いかねます。ご了承ください。
Windows Vistaで、BROADCASTフラグの扱いを変更するには、レジストリ・エディタを起動し、以下のキーに名前「DhcpConnEnableBcastFlagToggle」(DWORD値)を新規作成し、データを「1」にセットする。キーの{GUID}は、ネットワーク・インターフェイスに対応したGUIDになるので、複数のネットワーク・インターフェイスが搭載されている場合は、それぞれに対して設定を行う必要がある。
項目
内容
キー
HKEY_LOCAL_MACHINEの\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{GUID}
名前
DhcpConnDisableBcastFlagToggle
種類
REG_DWORD
データ
1
BROADCASTフラグの設定を変更するレジストリ設定
これを1に設定しておくと、まずBROADCASTフラグを無効にしてDHCPパケットを送信し、応答がなければ、次はセットしてDHCPパケットを送信するようになる(トグル機能)。
0に設定しておくと、BROADCASTフラグはデフォルトの設定にしたがってどちらかだけが利用される。BROADCASTフラグのデフォルト値を変更するレジストリもこれとは別に存在するが、さまざまな環境に柔軟に対応するには、このトグル機能を利用するのがよいだろう。
■Fix itを利用する方法
レジストリを編集したくなかったり、設定変更の台数が多かったりする場合は、サポート技術情報のWebページで提供されているFix itを利用するとよい。以下のサポート技術情報のWebページを開き、真ん中付近にある[Fix it]アイコンをクリックすると、「MicrosoftFixit50357.msi」がダウンロードできる。このMSIファイルを実行すると、上記のレジストリ設定が反映され、DhcpConnDisableBcastFlagToggleが1に設定される。
この記事と関連性の高い別のWindows TIPS
generated by
TechTargetジャパン
Windows Server Insider フォーラム 新着記事
キャリアアップ
**先週の人気講座ランキング**
〜 Android編 〜