次の方法で共有


DNS 清掃のセットアップ

この記事では、ドメイン ネーム システム (DNS) の清掃を設定する方法について説明し、既存のゾーンで清掃を設定する例を示します。

清掃は、DNS の古いレコードをクリーンアップ (削除) します。 削除が伴うにつれて、多くの安全バルブが清掃に組み込まれており、清掃を有効にするには長い時間がかかります。

注:

この記事では、最も一般的な Windows DNS シナリオである、Active Directory (AD) 統合ゾーンをホストする Windows Server DNS サーバーについて説明します。

Windows Server では、次の 3 つの場所すべてに清掃を設定する必要があります。

  1. 清掃する個々のリソース レコード。
  2. 清掃するゾーン。
  3. 清掃を実行している 1 つ以上のサーバー上。

リソース レコードの清掃設定

DNS Microsoft 管理コンソール (MMC) で、[詳細の表示>] を選択し、リソース レコードのプロパティをチェックして、清掃設定を表示します。 例:

清掃設定を表示するためにリソース レコードのプロパティを確認するスクリーンショット。

リソース レコードの清掃は、次の 3 つの方法で設定できます。

  • 1 つ目は、[ 古くなったときにこのレコードを削除する ] チェック ボックスをオンにし、[ 適用] を選択します。 [ 適用] を選択すると、現在の時刻は最も近い時間に切り捨て、レコードのタイムスタンプとして適用されます。 静的レコードのタイムスタンプは 0 で、清掃されていないことを示します。
  • 2 つ目の方法は、動的 DNS (DDNS) を使用して登録しているクライアント マシンによってレコードが作成される場合です。 Windows クライアントは、24 時間ごとに DNS を動的に更新します。 すべての DDNS レコードは、スカベンジに設定されます。 既存のレコードを持たないクライアントによってレコードが最初に作成されると、"更新" と見なされ、タイムスタンプが設定されます。 クライアントに既存のホスト レコードがあり、ホスト レコードの IP を変更した場合、これは "更新" とも見なされ、タイムスタンプが設定されます。 クライアントに同じ IP アドレスを持つ既存のホスト レコードがある場合、これは "更新" と見なされ、タイムスタンプの変更がゾーン設定に依存するかどうかが考えられます。
  • レコードに対して清掃を設定する 3 番目の方法は、 dnscmd /ageallrecords コマンドを 使用することです。 ゾーンに対してこのコマンドを実行すると、清掃を行いたくない静的レコードを含め、ゾーン内のすべてのレコードに対して清掃とタイムスタンプが設定されます。

レコードにタイムスタンプが設定されると、ゾーンをホストするすべてのサーバーにレプリケートされます。

注:

レコードをホストするゾーンで清掃が有効になっていない場合は、清掃は行われないため、タイムスタンプは関係ありません。 タイムスタンプは、クライアントが動的に登録されているサーバーで更新される場合がありますが、ゾーン内の他のサーバーにはレプリケートされません。

ゾーンの清掃設定

サーバーがレコードをチェックして清掃するかどうかを確認する前に、ゾーンで清掃が有効になっている必要があります。 ゾーンの清掃設定にアクセスするには、ゾーンを右クリックし、[プロパティ] を選択し、[全般] タブで [エージング] を選択します。

ゾーン エージング 清掃プロパティ ウィンドウのスクリーンショット。

注:

スクリーンショットは、このゾーンがレプリケートされている DNS サーバーでも同じです。

最初にゾーンで清掃を設定すると、タイムスタンプ (下部に表示) が現在の時刻 (最も近い時間に切り捨て) と更新間隔に設定されます。 この設定は、ゾーンが読み込まれたり、ゾーンで動的更新が有効になったりするたびにリセットされます。

注:

[タイムスタンプ の後にゾーンを清掃できます ] が表示されない場合は、ゾーンを再読み込みします。

タイムスタンプが最初の安全バルブの後にゾーンを清掃することができます。 これは、クライアントがレコードタイムスタンプを更新する時間を与えます。 ゾーンの清掃が無効になっている場合、新しいレコードタイムスタンプはレプリケートされないため、レプリケーションの時間を確保して順序を維持することもできます。

更新間隔と更新なし間隔

次の安全弁は、更新間隔と更新なし間隔です。 両方の間隔が経過すると、レコードを削除できます。

更新なし間隔は、リソース レコードを更新できない期間です。 "更新" は、ホスト リソース レコードを変更しない動的更新です。タイムスタンプをタッチするだけです。 クライアントがホスト レコードの IP を変更した場合、これは "更新" と見なされ、更新なし間隔から除外されます。 更新なし間隔の目的は、レプリケーション トラフィックを減らすことです。 レコードに対する変更は、変更をレプリケートする必要があることを意味します。

レコードタイムスタンプと更新なし間隔が経過した後、更新間隔を入力できます。 更新間隔は、タイムスタンプへの更新が許可される時間です。 クライアントは、入ってタイムスタンプを更新できます。 このタイムスタンプがレプリケートされ、更新なし間隔が再び開始されます。 更新間隔中にクライアントがレコードの更新に失敗した場合、クライアントは清掃の対象となります。

注:

更新間隔と更新なし間隔を設定する場合は、更新間隔中にクライアントが複数の登録試行を行うのに十分な時間を許可します。 これを行わないと、更新試行が失敗したためにレコードが清掃の対象になる可能性があります。

サーバーを右クリックし、[ すべてのゾーンのエージング/清掃の設定]を選択すると、上記のようなスクリーンショットが表示されます。 このオプションは、このサーバーが新しいゾーンを作成するときに使用される既定の設定を設定します。 [ 既存の Active Directory 統合ゾーンにこれらの設定を適用する ] チェック ボックスをオンにしない限り、設定は既存のゾーンに影響しません。

サーバーの清掃設定

サーバーで清掃を設定するには、MMC でサーバーを右クリックし、[プロパティ] を選択 します。 次に、[詳細] タブの [古いレコードの自動清掃を有効にする] チェック ボックスをオンにします。

[詳細] タブで [古いレコードの自動清掃を有効にする] チェック ボックスがオンのサーバー プロパティのスクリーンショット。

清掃期間の値は、このサーバーがスキャンする頻度です。 サーバーは、清掃時に DNS イベント ID 2501 をログに記録して、清掃されたレコードの数を示します。 消去されたレコードがない場合、イベント ID 2502 がログに記録されます。 ゾーン データはゾーンをホストしているすべてのサーバーにレプリケートされるため、清掃に必要なサーバーは 1 つだけです。

ヒント

最新のイベント ID 2501 または 2502 のタイムスタンプを取得し、それに清掃期間を追加することで、サーバーがスカベンジを試みるタイミングを正確に知ることができます。

ゾーンをホストしているすべてのサーバーをスカベンジに設定できますが、設定を 1 つだけにすることをお勧めします。 サーバーが清掃に失敗した場合、重大な影響はありません。 疑いを探す場所が 1 つあり、ログのセットが 1 つチェック。 多数のサーバーが清掃に設定されている場合は、清掃が失敗した場合にチェックするログが多数あります。

ゾーンの清掃を行うサーバーを制御するには、 dnscmd コマンドを使用して、スカベンジする可能性のあるサーバーを正確に指定できます。 たとえば、コマンドでは dnscmd /zoneresetscavengeservers contoso.com 192.168.1.1 192.168.1.2 、IP アドレスが 192.168.1.1 と 192.168.1.2 の DNS サーバーのみがゾーンで contoso.com 清掃できます。

清掃プロセスと最終チェック

サーバーを右クリックし、[ 古いリソース レコードのスカベンジ] を選択して、清掃の試行を手動で開始することもできます。 手動による試みは安全弁をバイパスしません。

古いレコードを削除する前に、次の点を確認してください。

  • ゾーンで清掃は有効になっていますか?
  • ゾーンで動的更新が有効になっていますか?
  • 清掃サーバーは、ゾーンの清掃サーバーの 1 つとして一覧表示されていますか?
  • ゾーンの "ゾーンは後で清掃できます" タイムスタンプを超えていますか?
    これにより、開始する前にクライアントと AD レプリケーションを準備できます。
  • このゾーンが Active Directory で最後にレプリケートされてから、更新間隔よりも長くなっていますか?
    レプリケーションの問題があるサーバーで清掃が有効になっている場合、これは、他のサーバーで有効な可能性があるレコードの不要な廃棄を防ぐのに役立ちます。

上記のすべてのチェックに合格した場合、ゾーンは清掃の準備ができています。 この時点で、清掃サーバーは各リソース レコードのタイムスタンプをチェックします。 現在の日付と時刻がタイムスタンプと更新なし間隔と更新間隔を超える場合、レコードは削除されます。

例: 既存のゾーンで清掃を設定する

既存のゾーンで清掃を設定する例を次に示します。 このプロシージャは最高の安全のために設計されている。 既定の設定を使用する場合、このプロセスには 4 ~ 5 週間かかる場合があります (サニティ チェック フェーズでは 2 週間、有効化フェーズでは 2 ~ 3 週間)。

セットアップ フェーズ

  1. すべてのサーバーで清掃をオフにします。 コマンドを dnscmd /zoneresetscavengeservers 使用して、清掃を 1 つのサーバーに制限し、このサーバーで清掃が無効になっていることを確認できます。
  2. スカベンジするゾーンで清掃を有効にします。 必要に応じて、[更新] 間隔と [更新なし] 間隔を設定します。 より効果的に清掃するには、更新なし間隔を低くし、更新間隔を既定のままにすることをお勧めします。
  3. 今日の日付と更新間隔と No-Refresh 間隔を追加します。 この時間が経過した数週間後に戻って来てください。

Sanity チェック フェーズ

DNS レコードの更新間隔と No-Refresh 間隔より古いレコードを探します。 ある場合は、続行する前に修正する必要がある動的登録プロセスに問題があります。 この時点での完全なチェックは、セットアップの最も重要な手順です。

古いレコードが見つかる場合にチェックする事項:

  • コマンドは ipconfig /registerdns 機能しますか?
  • レコードの所有者は誰ですか (レコードのプロパティの [ セキュリティ ] タブを参照してください)。
  • レコードは管理者によって静的に作成され、清掃が有効になっていますか? その場合は、レコードを削除して所有権をクリアし、コマンドを ipconfig /registerdns 実行して更新する必要があります。
  • サーバーの Active Directory レプリケーションが正常に機能していますか?

古いレコードを説明できない限り、続行しないでください。 次のフェーズでは、削除されます。

有効化フェーズ

コマンドを dnscmd /zoneresetscavengeservers 使用して、1 つのサーバーで清掃を有効にすることができます。

清掃が有効になったら、新しいテスト レコードを作成し、清掃のために有効にします。 次に、このレコードが消える時点をマップします。 それらのステップは次のとおりです。

  1. レコードのタイムスタンプから始めます。
  2. 更新間隔を追加します。
  3. 更新なし間隔を追加します。
  4. 結果は、"スカベンジの対象" 時間になります。 ただし、この時点ではレコードは消えません。
  5. DNS サーバーが清掃を実行するタイミングを確認するには、DNS イベント ログでイベント ID 2501 と 2502 を確認します。
  6. "スカベンジの対象" 時間に基づいて、最新のイベント ID 2501 またはイベント ID 2502 イベントを見つけて、サーバーの清掃期間 (サーバー プロパティの [詳細設定 ] タブから) を追加します。
  7. これは、テスト レコードが消える時点です。

例:

  • ゾーンは、3 日間の更新間隔と 3 日間の更新なし間隔に設定されます。
  • サーバーの清掃期間は 3 日間に設定されます。
  • 最後の DNS イベント ID 2501 または 2502 は、2008 年 1 月 1 日の午前 6 時に発生しました。
  • 2008 年 1 月 1 日 12:00 (正午) のタイムスタンプを持つレコードがあります。

これらの前提条件を考えると、2008 年 1 月 10 日の午前 6 時ごろにレコードが削除されると予測できます。 この例の図を次に示します。

削除するレコードに関する予測の図。

清掃が有効になると、定期的にイベント ID 2501 および 2502 イベントを探して状況を確認チェック。 予測された日時に戻って、テスト レコードが消えたかどうかを確認することもできます。