古くなった AD DNS レコードをクリーンアップするための DNS スカベンジングの設定方法

Windows Server で DNS の乱雑な管理に困っていませんか?古いレコードが残って DNS ゾーンが乱雑になると、イライラさせられます。特に Active Directory 環境では、古い DNS レコードを整理しないと、解決に問題が発生したり、古い情報が複製されたりする可能性があります。Windows Server には、DNS エージングと清掃という便利な機能が組み込まれており、こうしたクリーンアップの大部分を自動化できます。しかし、正しく設定するのは簡単ではありません。そこで、このガイドでは、これらの機能の仕組みを理解し、重要な情報を失うことなく、実際に機能していることを確認する方法について説明します。

基本的に、DNS スカベンジングを設定すると、しばらく更新されていないレコードを削除することで DNS ゾーンをクリーンな状態に保つことができます。これは、一定期間後に迷惑メールを自動削除するようなものです。ただし、適切に設定する必要があります。あまりに積極的に設定すると、有用な静的レコードが失われる可能性があります。逆に、あまりに緩い設定だと意味がありません。重要なのは、適切なバランスを見つけることです。ここでの目標は、スカベンジングを有効にし、適切な間隔を設定し、動的レコードに正しくフラグが付けられていることを確認することです。その後は、DNS クリーンアップは手動で開始しない限り、ほぼ自動で実行されます。

Windows ServerでDNSレコードのクリーンアップを修正する方法

DNSエージングと清掃の有効化と設定

まず、DNSエージングと清掃が有効になっていることを確認する必要があります。これは通常、DNS管理コンソール(dnsmgmt.msc )から行います。ゾーンレベルの設定とサーバー全体の設定の両方を確認する必要があります。

  • DNS ゾーン ( contoso.comなど) を右クリックし、[プロパティ]を選択します。
  • 「一般」タブに移動し、「エイジング」ボタンをクリックします。ここから魔法が始まります。

「エイジング」ダイアログで、 「古いリソースレコードの清掃」チェックボックスをオンにします。これでクリーンアッププロセスが起動します。ただし、デフォルトではオフになっているため、手動で有効にする必要があります。

次に、パラメータを微調整します。

  • 非更新間隔: DNSレコードの更新を行わない期間を設定することで負荷を軽減します。DHCPリース期間の約半分に設定してください。例えば、DHCPリース期間が12日間の場合、6に設定します。これは、レコードが6日間更新されず、12日間更新されない場合、レコードが削除されるためです。
  • 更新間隔: DNSレコードを更新できる期間。通常、合計間隔(非更新間隔 + 更新間隔)をDHCPリース時間と同じにするのが適切です。

設定が完了したら、ゾーンのプロパティの「詳細設定」タブで「ステータスレコードの自動清掃を有効にする」チェックボックスをオンにしてください。また、DNSサーバー自体を右クリックし、 「すべてのゾーンのエージング/清掃を設定」を選択することで、すべてのゾーンのこれらの設定を一括で変更することもできます。

念のためお知らせしますが、ほとんどのWindows Serverではこの機能がデフォルトで無効になっているため、最初に有効にする必要があります。また、何か大きな変更を行う前に、念のため既存のDNSレコードをバックアップとしてエクスポートしておくことをお勧めします。ゾーンのすべてのレコードをバックアップする便利なPowerShellコマンドを以下に示します。

Get-DnsServerResourceRecord -ZoneName 'contoso.com' | Select-Object hostname, timestamp, recordtype, @{Name='RecordData';Expression={$_. RecordData.ipv4address}} | Export-Csv -Path "C:\temp\BackupDNSZoneContoso.csv" -NoTypeInformation

こうすることで、何か問題が発生した場合でも、後で手動でレコードを復元できます。

清掃プロセスを手動で開始し、設定を確認します

すべて設定済みだが、実際に動作を確認するために簡単なクリーンアップを実行したい場合は、コンソールでDNSサーバーを右クリックし、「古いリソースレコードの清掃」を選択してください。または、PowerShellで次のコマンドを使用することもできます。

Start-DnsServerScavenging -Verbose

また、以下の方法で清掃状況を監視することも価値があります。

Get-DnsServerScavenging

これにより、清掃が有効になっているかどうか、最後に実行された時刻などについての情報がすぐに得られます。アクティブでない場合は、ゾーンとサーバーの設定を再確認してください。

Active Directory の DNS ゾーンのほとんどは自動的に複製されるため、すべてのドメインコントローラで複製する必要はありません。ゾーンごとに 1 つずつ複製するだけです。ただし、サーバーを廃止したり、ゾーンを移動したりする場合は、当然ながら新しいサーバーで再構成する必要があります。

正直なところ、設定によっては、スカベンジング機能を有効にして適切な間隔を設定するのに多少の試行錯誤が必要です。最初は期待通りに動作しなかったり、少し過剰に動作したりすることがあります。なぜうまくいく時とうまくいかない時があるかは分かりませんが、再起動して再度確認すると、通常は設定が「定着」しやすくなります。

より高度な制御やトラブルシューティングを行うには、より詳細なログを調べたり、GUI ベースの管理にWinhanceなどのツールの使用を検討したりする必要がありますが、ほとんどの人にとっては手動の PowerShell で十分です。