次の方法で共有


DHCP サーバーで "常に動的に DNS レコードを更新する" を使用する場合の予期しない DNS レコード登録動作

適用対象: Windows 11、Windows 10、Windows 8.1

現象

Windows 動的ホスト構成プロトコル (DHCP) クライアントと Microsoft DHCP サーバーを使用して IP アドレスの割り当てと管理を行うインフラストラクチャがあります。 DHCP サーバーでは、次の設定に従って 有効な DNS 動的更新を選択しAlways によって DNS レコードが動的に更新されます。 この構成では、DHCP サーバーが A レコードと PTR レコードの動的 DNS 更新を管理することを想定しています。 ただし、クライアントとサーバーの両方で DNS レコードが作成されます。 構成に応じて、この動作には次の効果があります。

  • 動的更新 非安全で安全 の DNS ゾーンを構成すると、DHCP サーバーによってレコードが作成され、DHCP クライアントによって同じレコードが削除されて再作成されることがわかります。
  • dns ゾーンを Secure のみ 動的更新用に構成すると、DNS レコードに不整合が生じる可能性があります。 DHCP サーバーと DHCP クライアントの両方でレコードが作成されます。 ただし、DHCP サーバーは DHCP クライアントが作成したレコードを更新できません。DHCP クライアントは、DHCP サーバーによって作成されたレコードを更新できません。

原因

IP アドレスを取得するために、DHCP クライアントは DHCP 要求メッセージを DHCP サーバーに送信します。 通常、このメッセージには、クライアントの完全修飾ドメイン名 (FQDN) と動的 DNS 更新動作を制御するフラグが含まれます。 この情報は、 Option 81 ( Client FQDN オプションとも呼ばれます) と総称されます。

Note

一部の古い DHCP クライアントでは、オプション 81 を使用しません。 これらのクライアントに動的更新を提供するには、DHCP サーバーを構成して、更新プログラムを要求しない DHCP クライアント (Windows NT 4.0 を実行しているクライアントなど) の DNS レコードを動的に更新 有効にする オプション。

DHCP サーバーには、動的 DNS 更新動作を制御するオプション 81 フラグのセットも格納されます。 DHCP DORA (検出/オファー/要求/確認) プロセスの一部では、クライアントとオプション 81 フラグの値のサーバーを比較して、DNS 更新を担当するユーザーを決定します。 Symptoms セクションで説明されている動作に関連するフラグには、O (オーバーライド) ビットと S (サーバー) ビットという名前が付けられます。 フラグは次のように機能します。

  • S = 0 の場合、クライアントは A レコードの更新を担当します。
  • S = 1 の場合、サーバーは A レコードの更新を担当します。
  • クライアントが要求で送信する S 値がサーバーの S 値と異なる場合、サーバーはその O 値を 1 に設定します。

RFC で説明されているように、要求メッセージに対する DHCP サーバーの応答には、そのフラグ値を含める必要があります。 サーバーのメッセージで O1 に設定されている場合、クライアントはサーバーがクライアントの S 値をオーバーライドしていることを認識する必要があります。

Windows 8.1 では、DHCP クライアントの動的 DNS 更新動作に意図的な設計変更が導入されました。 この変更により、新しいバージョンの Microsoft オペレーティング システムでの TCP/IP (伝送制御プロトコル/インターネット プロトコル) スタックの継続的な開発と機能強化がサポートされます。 Windows 8.1 以降のバージョンでは、DHCP クライアントは DHCP サーバーのオプション 81 O および S 値を受け入れません。 A レコードを更新するようにクライアントが構成されている場合、サーバーが A レコードの更新も構成されている場合でも、この処理が続行されます。 これは、DHCP 管理コンソールで Always によって DNS レコードが動的に更新を選択した場合です。

セキュリティのみ動的更新用に DNS ゾーンを構成した場合、DNS レコードを作成したエンティティ (DHCP クライアント、DHCP サーバー、または DHCP サービスが使用するように構成されているアカウント) のみが、そのレコードを更新または削除できます。 DHCP サーバーではなく DHCP クライアントが DNS レコードを作成する場合、DHCP サーバーは後でそのレコードを変更できません。

Note

Microsoft の DHCP クライアントには、ユーザー インターフェイスでクライアントの OS の値を直接設定するメソッドは用意されていません。 既定では、両方の値は 0です。 値を表示するには、DHCP クライアント要求の netsh トレース を記録し、Netmon などのツールを使用して結果を表示します。

Windows PowerShell コマンドレット Get-DhcpServerv4OptionValue を使用して、DHCP サーバーのオプション 81 値を表示できます。 ただし、このコマンドレットは、複数の異なる設定をビット値として組み合わせた単一の整数としてこの値を報告します。 たとえば、DHCP スコープのプロパティ ウィンドウの DNS タブで Always 動的に DNS レコードを更新を選択すると、Sの値が1に設定されます。 ただし、コマンドレットはオプション 81 の 8 つの可能な値の 1 つを報告します。 これらのすべては、 S=1を使用します。 特定の値は、 DNS タブで行われる設定の組み合わせによって異なります。

DHCP クライアント、DHCP サーバー、DNS サーバーの間の動的更新のしくみの詳細については、「 DNS プロセスと相互作用」を参照してください。

解決方法

アーキテクチャで Always を使用して DNS レコードを動的に更新する必要がある場合クライアント コンピューターにレジストリ キーを作成して、DHCP クライアントに DHCP サーバーのオーバーライドを強制できます。

重要

このセクション、方法、またはタスクには、レジストリの編集方法が記載されています。 レジストリを誤って変更すると、深刻な問題が発生することがあります。 したがって、次の手順を注意深く実行してください。 保護のために、レジストリを変更する前にレジストリをバックアップして、問題が発生した場合にレジストリを復元できるようにします。 レジストリのバックアップと復元方法の詳細は、「Windows のレジストリのバックアップおよび復元の方法」を参照してください。

  1. 次のサブキーに移動します。 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters

  2. サブキーの下に、次のエントリを作成します。

    • 名前: RegistrationOverwrite
    • 型: REG_DWORD
    • 値: 2

    Note

    RegistrationOverwrite には、次の使用可能な値があります。

    • 0 - 上書きなし。
    • 1 - DNS クライアントが作成したレコードは、DHCP サーバーによって作成されるレコードを上書きします。 これが既定値です。
    • 2 - DHCP サーバーによって作成されたレコードは、DNS クライアントによって作成されるレコードを上書きします)。
  3. クライアント コンピュータを再起動します。

  4. DNS サーバー 管理コンソールで、前方参照ゾーンと逆引き参照ゾーンを確認します。 特定の環境によっては、DHCP サーバーに削除または変更のアクセス許可がない A レコードと PTR レコードを手動で削除する必要がある場合があります。