Windows TIPS
[Network]
Tips   Windows TIPS TOPへ
Windows TIPS全リストへ
内容別分類一覧へ

Windows VistaでDHCPサーバからIPアドレスが取得できない不具合を解消する

解説をスキップして操作方法を読む

デジタルアドバンテージ 小林 章彦
2010/04/23
対象OS
Windows Vista
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に設定される。End of Article

この記事と関連性の高い別の記事

このリストは、デジタルアドバンテージが開発した自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。

generated byJigsaw
「Windows TIPS」


Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間