DNS の清掃のセットアップ
この記事では、ドメイン ネーム システム (DNS) の清掃を設定する方法について説明し、既存のゾーンで清掃を設定する例を示します。
DNS の古いレコードをクリーンアップ (削除) する。 削除が行われると、多くの安全バルブが清掃に組み込まれており、清掃を有効にするには長い時間がかかります。
Note
この記事では、最も一般的な Windows DNS シナリオである、Active Directory (AD) 統合ゾーンをホストする Windows Server DNS サーバーについて説明します。
Windows Server では、次の 3 つの場所すべてに清掃を設定する必要があります。
- 清掃する個々のリソース レコード。
- 清掃するゾーン。
- 清掃を実行している 1 つ以上のサーバー上。
リソース レコードの清掃設定
DNS Microsoft 管理コンソール (MMC) で View>Advanced を選択し、リソース レコードのプロパティを確認して、清掃設定を確認します。 例えば次が挙げられます。
リソース レコードの清掃は、次の 3 つの方法で設定できます。
- 1 つ目は、 古くなったときにこのレコードを削除します チェック ボックスをオンにして、 Apply。 Apply を選択すると、現在の時刻は最も近い時間に切り捨てられ、レコードのタイムスタンプとして適用されます。 静的レコードのタイムスタンプは 0で、消去されていないことを示します。
- 2 つ目の方法は、動的 DNS (DDNS) を使用して登録しているクライアント コンピューターによってレコードが作成される場合です。 Windows クライアントは、24 時間ごとに DNS を動的に更新します。 すべての DDNS レコードがスカベンジに設定されます。 既存のレコードがないクライアントによってレコードが最初に作成されると、レコードは "更新" と見なされ、タイムスタンプが設定されます。 クライアントに既存のホスト レコードがあり、ホスト レコードの IP を変更した場合は、これも "更新" と見なされ、タイムスタンプが設定されます。 クライアントに同じ IP アドレスを持つ既存のホスト レコードがある場合、これは "更新" と見なされ、タイムスタンプの変更はゾーン設定によって異なります。
- レコードに対して清掃を設定する 3 番目の方法は、 dnscmd /ageallrecords コマンドを使用することです。 このコマンドをゾーンに対して実行すると、清掃を行わない静的レコードを含め、ゾーン内のすべてのレコードに対して清掃とタイムスタンプが設定されます。
レコードにタイムスタンプが設定されると、ゾーンをホストするすべてのサーバーにタイムスタンプがレプリケートされます。
Note
レコードをホストするゾーンが清掃を有効にしていない場合、スキャベンジは行われないため、タイムスタンプは関係ありません。 タイムスタンプは、クライアントが動的に登録するサーバーで更新される可能性がありますが、ゾーン内の他のサーバーにはレプリケートされません。
ゾーンの清掃設定
サーバーがレコードをチェックして、そのレコードが清掃されるかどうかを確認する前に、ゾーンで清掃が有効になっている必要があります。 ゾーンの清掃設定にアクセスするには、ゾーンを右クリックし、Properties を選択し、General タブの [Aging を選択します。
Note
このスクリーンショットは、このゾーンがレプリケートされるすべての DNS サーバーで同じです。
ゾーンで最初に清掃を設定すると、タイムスタンプ (下部に表示) が現在の時刻 (最も近い時間に切り捨て) と更新間隔に設定されます。 この設定は、ゾーンが読み込まれるか、ゾーンで動的更新が有効になっている場合にもリセットされます。
Note
が表示されない場合は、タイムスタンプ後にゾーンを清掃できます。ゾーンを再読み込みします。
ゾーンは後で清掃することができます タイムスタンプは最初の安全弁です。 これにより、クライアントはレコードのタイムスタンプを更新する時間が与えます。 ゾーンの清掃が無効になっている場合、新しいレコードのタイムスタンプはレプリケートされないため、レプリケーションの時間を確保して順番に維持することもできます。
更新間隔と更新なし間隔
次の安全バルブは、リフレッシュ間隔と更新なし間隔です。 両方の間隔が経過すると、レコードを削除できます。
更新なし間隔は、リソース レコードを更新できない期間です。 "更新" は、ホスト リソース レコードを変更しない動的更新です。タイムスタンプをタッチするだけです。 クライアントがホスト レコードの IP を変更した場合、これは "更新" と見なされ、更新なし間隔から除外されます。 更新なし間隔の目的は、レプリケーション トラフィックを減らすことです。 レコードに対する変更は、変更をレプリケートする必要があることを意味します。
レコードタイムスタンプと更新なし間隔が経過した後、更新間隔を入力できます。 更新間隔は、タイムスタンプへの更新が許可される時間です。 クライアントが入ってタイムスタンプを更新することが許可されています。 このタイムスタンプがレプリケートされ、更新なし間隔が再び開始されます。 更新間隔中にクライアントがレコードの更新に失敗した場合、クライアントは消去の対象になります。
Note
更新間隔と更新なし間隔を設定する場合は、更新間隔中にクライアントが複数の登録試行を行うのに十分な時間を許可します。 これを行わないと、更新の試行が失敗したためにレコードが清掃の対象になる可能性があります。
サーバーを右クリックし、[すべてのゾーン エイジング/清掃の設定]... を選択すると、上記のようなスクリーンショットが表示されます。 このオプションは、このサーバーが新しいゾーンを作成するときに使用される既定の設定を設定します。 これらの設定を既存の Active Directory 統合ゾーンに適用しない限りチェックボックスは、既存のゾーンには影響しません。
サーバーの清掃設定
サーバーで清掃を設定するには、MMC でサーバーを右クリックし、 Properties を選択します。 次に、 古いレコードの自動清掃を有効にする Advanced タブのチェック ボックスをオンにします。
Scavenging period 値は、このサーバーがスキャンする頻度です。 サーバーがスキャンすると、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
コマンドでは、192.168.1.1 と 192.168.1.2 の IP アドレスを持つ DNS サーバーのみが、 contoso.com
ゾーンで清掃を行うことができます。
清掃プロセスと最終チェック
サーバーを右クリックし、古いリソース レコードの を選択して、清掃の試行を手動で開始することもできます。 手動で試しても安全弁はバイパスされません。
古いレコードを削除する前に、以下を確認してください。
- ゾーンで清掃は有効になっていますか?
- ゾーンで動的更新は有効になっていますか?
- 清掃サーバーは、ゾーンの清掃サーバーの 1 つとして表示されますか?
- ゾーンのタイムスタンプが超過した場合、"ゾーンを清掃することはできますか?
これにより、開始する前にクライアントと AD レプリケーションを準備できます。 - このゾーンが Active Directory で最後にレプリケートされてから、更新間隔よりも長くなっていますか?
レプリケーションの問題があるサーバーで清掃が有効になっている場合、これは、他のサーバーで有効なレコードの不要な廃棄を防ぐのに役立ちます。
上記のすべてのチェックに合格した場合、ゾーンは清掃の準備ができています。 この時点で、清掃サーバーは各リソース レコードのタイムスタンプをチェックします。 現在の日付と時刻がタイムスタンプと更新なし間隔と更新間隔を超える場合、レコードは削除されます。
例: 既存のゾーンでの清掃の設定
既存のゾーンで清掃を設定する例を次に示します。 このプロシージャは最高の安全のために設計されている。 既定の設定を使用する場合、このプロセスには 4 ~ 5 週間かかる場合があります (サニティ チェック フェーズでは 2 週間、有効化フェーズでは 2 ~ 3 週間)。
セットアップ フェーズ
- すべてのサーバーで清掃をオフにします。
dnscmd /zoneresetscavengeservers
コマンドを使用して、清掃を 1 台のサーバーに制限し、このサーバーで清掃が無効になっていることを確認できます。 - スカベンジするゾーンで清掃を有効にします。 必要に応じて、[更新] 間隔と [更新なし] 間隔を設定します。 より効果的にスキャンするには、更新なし間隔を小さくし、[更新間隔] を既定値のままにすることをお勧めします。
- 今日の日付に更新間隔と更新なし間隔を追加します。 この時間が経過したら、数週間後に戻って来てください。
サニティ チェック フェーズ
DNS レコードで、更新間隔と更新なし間隔より古いレコードを探します。 表示された場合は、続行する前に修正する必要がある動的登録プロセスに問題があります。 この時点での徹底的なチェックは、セットアップの最も重要な手順です。
古いレコードが見つかるかどうかを確認する方法:
ipconfig /registerdns
コマンドは機能しますか?- レコードの所有者は誰ですか (レコード プロパティの Security タブを参照してください)。
- レコードは管理者によって静的に作成され、その後、清掃が有効になっていますか? その場合は、レコードを削除して所有権をクリアし、
ipconfig /registerdns
コマンドを実行して更新する必要があります。 - サーバーの Active Directory レプリケーションは正常に機能していますか?
古いレコードを説明できない限り、続行しないでください。 次のフェーズでは、削除されます。
フェーズを有効にする
dnscmd /zoneresetscavengeservers
コマンドを使用して、1 つのサーバーで清掃を有効にすることができます。
清掃が有効になったら、新しいテスト レコードを作成し、それを有効にして清掃します。 次に、このレコードが消える時点をマップします。 次に手順を示します。
- レコードのタイムスタンプから始めます。
- 更新間隔を追加します。
- 更新なし間隔を追加します。
- 結果は、"スカベンジの対象" 時間になります。 ただし、この時点ではレコードは消えません。
- DNS イベント ログでイベント ID 2501 と 2502 を確認し、DNS サーバーが清掃を実行するタイミングを確認します。
- "スキャンの対象となる" 時間に基づいて、最新のイベント ID 2501 またはイベント ID 2502 イベントを見つけ、サーバーの清掃期間 (サーバー プロパティの [ Advanced タブから) を追加します。
- これは、テスト レコードが消える時点です。
例えば次が挙げられます。
- ゾーンは、3 日間の更新間隔と 3 日間の更新なし間隔に設定されます。
- サーバーの清掃期間は 3 日に設定されます。
- 最後の DNS イベント ID 2501 または 2502 は、2008 年 1 月 1 日午前 6 時に発生しました。
- タイムスタンプが 2008/1/1 のレコードが 12:00 (正午) です。
これらの前提条件を考えると、2008 年 1 月 10 日午前 6 時にレコードが削除されることを予測できます。 この例の図を次に示します。
清掃が有効になったら、定期的にチェックしてイベント ID 2501 と 2502 のイベントを探し、状況を確認できます。 また、予測された日時に戻って、テスト レコードが消えたかどうかを確認することもできます。