現象
ドメイン ネーム システム (DNS) サーバー サービスのセキュリティ更新プログラム 953230 (MS08-037) をインストールし、コンピューターを再起動すると、UDP に依存するネットワーク サービスに問題が発生する可能性があります。 セキュリティ更新プログラム 953230 をインストールした後、Windows 2000、Windows Server 2003、および Windows Server 2008 を実行しているコンピューターで、UDP ポートに依存するサービスを開始しない場合があります。 この問題は、セキュリティ更新プログラム 953230 のインストール後にサービスが DNS サーバー サービスに割り当てられている場合に発生します。
原因
この問題は、サービスが正常に機能するために必要なポートを取得できないために発生します。 この問題は、セキュリティ更新プログラム 953230 がインストールされた後に DNS サービスのポート割り当てが変更されたために発生します。
既定では、セキュリティ更新プログラム 953230 のインストール後、DNS サーバー サービスは、短期ポート範囲で 2,500 個のポートをランダムに割り当てます。 これは、この更新プログラムで導入された新しい動作です。 ランダムに割り当てられたこれらのポートの 1 つが、競合しているサービスで使用されているポートである場合、競合が発生する可能性があります。
サービスの競合は、DNS 機能などの追加ロールを提供するマルチロール サーバーで起こりやすくなります。 これらのポートはランダムに割り当てられるため、これらの障害は断続的に発生する可能性があります。
たとえば、この競合は Windows IPsec サービス サービスで発生する可能性があります。 IPsec サービス サービスでは、UDP ポート 4500 を使用します。 IPsec サービスも提供する DNS サーバーでは、ポートの競合により IPsec サービスを開始できない可能性があります。
回避策
この問題を回避するには、短期ポート範囲から UDP ポートを予約し、ポートに依存するサービスを開始できることを確認します。
短期ポートを予約する方法の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft サポート技術情報) をクリックしてください。
812873 Windows Server 2003 または Windows 2000 Server を搭載しているコンピューターで短期ポートの範囲を予約する方法
競合する可能性のある UDP ネットワーク ポートの詳細については、以下のサポート技術情報番号をクリックしてください。
832017 Windows Server システムのサービス概要およびネットワーク ポート要件
前述の IPsec サービスの例では、ReservedPorts レジストリ キーを使用してポート 4500 - 4500 を追加できました。
追加情報
詳細な原因
この問題の原因の詳細については、以下を参照してください。
DNS サーバーの送信元ポートのランダム化と SocketPool の実装
DNS サーバーのセキュリティ更新プログラムを実装すると、クエリをランダム化するときに一連のポートが予約されます。 この設計上の決定は、Windows ベースのクライアントと比較して、非常に多くのクエリを処理および発信する DNS サーバーのパフォーマンスの問題に対処するために行われました。 DNS サーバーによって予約されたポートのセットを、以降 "ソケット プール" と呼びます。
Windows ベースのサーバーのソケット プールの既定のサイズは 2,500 ソケットです。 このサイズは、レジストリ内の以下のサブキーの SocketPoolSize レジストリ エントリを変更することで構成できます。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNS\Parameters\SocketPoolSize
注: SocketPoolSize レジストリ エントリの変更を有効にするには、DNS サービスを再起動する必要があります。
Windows 2000 および Windows Server 2003
エフェメラル ポート割り当てと MaxUserPort レジストリ エントリ
ソケット プールの一部として割り当てられたポートは、サーバー上の使用可能な短期ポートのセットからプルされます。 エフェメラル ポートは、目的の発信元ポートが指定されていない "ワイルドカード バインド" 中に TCP/IP スタックによって一時的に割り当てられます。Windows ベースのサーバーでは、MaxUserPort レジストリ エントリはエフェメラル ポート範囲を定義し、エフェメラル ポートに割り当てることができる最大のポート番号を定義します。 MaxUserPort レジストリ エントリは、レジストリの次のサブキーにあります。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\
MaxUserPort レジストリ エントリの詳細については、次のマイクロソフト Web ページを参照してください。MaxUserPort レジストリ エントリの値が明示的に設定されている場合の有効な短期ポート範囲
Windows Server 2003 または Windows 2000 Server では、MaxUserPort レジストリ エントリの値が短期ポート範囲を定義します。 範囲は 1024 から、MaxUserPort レジストリ エントリで定義された値までです。Windows Server 2003 および下位レベルのプラットフォームにセキュリティ更新プログラム 953230 をインストールした後、次の条件が満たされます。
- MaxUserPort レジストリ エントリの値が設定されている場合、ポートは [1024, MaxUserPort] の範囲からランダムに割り当てられます。
- MaxUserPort レジストリ エントリの値が設定されていない場合、[49152, 65535] の範囲からポートがランダムに割り当てられます。
Windows Server 2008
有効なエフェメラル ポート範囲
Windows Server 2008 にセキュリティ更新プログラム 953230 をインストールする前に、[49152-65535] ポート範囲で短期ポート割り当てが発生します。 このポート割り当て動作は、セキュリティ更新プログラム 953230 をインストールした後も変更されません。 現在のエフェメラル ポート範囲を表示するには、次のコマンドを実行します。netsh int <ipv4|ipv6> show dynamicport <tcp|udp>
このセキュリティ更新プログラム、およびこのソフトウェアの特定のリリースで発生する既知の問題の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft サポート技術情報) をクリックしてください。
929851 動的な TCP/IP の既定のポート範囲が Windows Vista と Windows Server 2008 で変更されました
状態
Microsoft は、これが "適用対象" セクションに記載されている Microsoft 製品の問題であることを確認しました。