Что такое DNS Aging и Scavenging
В Windows Server предусмотрен механизм, который позволяет автоматически определять устаревшие динамические DNS-записи и удалять их с DNS-сервера.
Возраст DNS-записи определяется по времени, прошедшему с момента её последнего обновления до текущего времени DNS-сервера. На основании временной метки сервер может определить, является ли динамическая DNS-запись устаревшей и может ли она участвовать в очистке.
В этом механизме используются два связанных процесса:
- DNS Aging — определение возраста динамических DNS-записей и момента, когда запись может считаться устаревшей;
- DNS Scavenging — автоматическое удаление DNS-записей, которые были признаны устаревшими.
Совместное использование DNS Aging и Scavenging позволяет поддерживать DNS-зоны в актуальном состоянии без необходимости регулярно искать и удалять старые динамические записи вручную.
Настройка проверки и очистки DNS-записей
Настройку лучше выполнять последовательно. Сначала проверим существующие записи и создадим резервную копию, затем включим Aging для нужной DNS-зоны и только после этого настроим автоматическую очистку на DNS-сервере.
Шаг 1. Включение расширенного режима
Откройте Диспетчер DNS (DNS Manager).
В верхнем меню выберите Вид (View) и включите параметр Расширенный (Advanced).
Расширенный режим открывает доступ к дополнительным параметрам DNS, которые понадобятся на следующих этапах настройки.
Шаг 2. Проверка и обновление DNS-записей
Перед включением автоматической очистки необходимо проверить записи в Диспетчере DNS и определить, какие из них должны обновляться динамически, а какие необходимо сохранить как статические.
Выберите нужную DNS-зону и просмотрите находящиеся в ней записи.
В нашем примере запись EX01-2019 Host (A) является динамической. Если она перестанет обновляться и пройдёт установленный период устаревания, запись сможет быть удалена механизмом автоматической очистки.
Поскольку данную запись необходимо сохранить независимо от динамических обновлений, переведём её в статическую.
Щёлкните правой кнопкой мыши по нужной A-записи и выберите Свойства (Properties).
Снимите флажок Удалить эту запись, когда она устареет (Delete this record when it becomes stale).
Нажмите ОК.
Обновите окно Диспетчера DNS и проверьте значение временной метки (Timestamp).
Убедитесь, что запись теперь отображается как Static.
В нашем примере A-запись EX01-2019 стала статической и не будет удалена механизмом автоматической очистки.
Проверьте таким образом важные DNS-записи в зоне и только после этого переходите к следующему этапу.
Шаг 3. Резервное копирование DNS-записей
Перед включением автоматической очистки рекомендую создать резервную копию DNS-записей. Для этого можно экспортировать все записи DNS-сервера в CSV-файл.
Если после изменения настроек потребуется проверить параметры ранее существовавшей записи, её данные останутся в сохранённом CSV-файле.
Для экспорта можно использовать следующий PowerShell-скрипт:
$Report = [System.Collections.Generic.List[Object]]::new()
$zones = Get-DnsServerZone
foreach ($zone in $zones) {
$zoneInfo = Get-DnsServerResourceRecord -ZoneName $zone.ZoneName
foreach ($info in $zoneInfo) {
$timestamp = if ($info.Timestamp) { $info.Timestamp } else { "static" }
$timetolive = $info.TimeToLive.TotalSeconds
$recordData = switch ($info.RecordType) {
'A' { $info.RecordData.IPv4Address }
'CNAME' { $info.RecordData.HostnameAlias }
'NS' { $info.RecordData.NameServer }
'SOA' { "[$($info.RecordData.SerialNumber)] $($info.RecordData.PrimaryServer), $($info.RecordData.ResponsiblePerson)" }
'SRV' { $info.RecordData.DomainName }
'PTR' { $info.RecordData.PtrDomainName }
'MX' { $info.RecordData.MailExchange }
'AAAA' { $info.RecordData.IPv6Address }
'TXT' { $info.RecordData.DescriptiveText }
default { $null }
}
$ReportLine = [PSCustomObject]@{
Name = $zone.ZoneName
Hostname = $info.Hostname
Type = $info.RecordType
Data = $recordData
Timestamp = $timestamp
TimeToLive = $timetolive
}
$Report.Add($ReportLine)
}
}
$Report | Export-Csv "C:\temp\AllDNSZonesRecords.csv" -NoTypeInformation -Encoding utf8
После выполнения скрипта информация о DNS-записях будет сохранена в файл:
C:\temp\AllDNSZonesRecords.csv
Шаг 4. Включение Aging для DNS-зоны
Теперь настроим параметры устаревания записей для нужной DNS-зоны.
Щёлкните правой кнопкой мыши по DNS-зоне и выберите Свойства (Properties).
На вкладке Общие (General) нажмите Устаревание (Aging).
Установите флажок Удалять устаревшие записи ресурсов (Scavenge stale resource records).
Ниже находятся два важных параметра:
- No-refresh interval — интервал, в течение которого обновление временной метки записи блокируется;
- Refresh interval — следующий период, в течение которого динамическая запись может обновить свою временную метку.
Например, можно использовать стандартные значения 7 дней для No-refresh и 7 дней для Refresh. В этом случае динамическая запись должна пройти оба интервала, прежде чем станет кандидатом на очистку.
Нажмите ОК два раза, чтобы сохранить настройки.
Шаг 5. Включение автоматической очистки DNS-записей
Настройки Aging определяют, когда записи могут считаться устаревшими. Теперь необходимо разрешить самому DNS-серверу выполнять автоматическую очистку.
Щёлкните правой кнопкой мыши по DNS-серверу и выберите Свойства (Properties).
Перейдите на вкладку Дополнительно (Advanced).
Установите флажок Включить автоматическую очистку устаревших записей (Enable automatic scavenging of stale records).
Укажите период автоматической очистки. Например, можно оставить стандартный интервал 7 дней.
Нажмите ОК, чтобы сохранить настройки.
FAQ
Что такое DNS Aging?
DNS Aging — механизм Windows DNS, использующий временные метки динамических ресурсных записей для определения их возраста. Настройки No-refresh и Refresh определяют, когда динамическая запись сможет стать кандидатом на очистку.
Что такое DNS Scavenging?
DNS Scavenging — механизм удаления устаревших динамических DNS-записей. Он работает совместно с параметрами Aging, настроенными для DNS-зоны.
Удаляет ли Scavenging статические DNS-записи?
Нет. Статические записи без временной метки не удаляются обычным механизмом Aging and Scavenging. Поэтому старые статические записи необходимо находить и удалять отдельно.
Зачем нужны No-refresh interval и Refresh interval?
No-refresh interval предотвращает слишком частое изменение временной метки динамической записи, а Refresh interval предоставляет период, в течение которого клиент может обновить эту метку. Только после прохождения этих периодов запись может стать устаревшей.
Можно ли включить Scavenging сразу после установки DNS-сервера?
Перед включением автоматической очистки лучше проверить существующие записи, определить важные статические записи и создать резервную копию. Это особенно важно в уже работающей инфраструктуре.
Почему старая DNS-запись не удаляется автоматически?
Причин может быть несколько: запись является статической, для зоны не настроен Aging, запись ещё не прошла необходимые интервалы устаревания либо на DNS-сервере не включён Scavenging.
Как удалить старые статические DNS-записи?
Статические записи можно удалить вручную через Диспетчер DNS или автоматизировать поиск и удаление с помощью PowerShell. Для этого смотрите статью Как удалить устаревшие DNS-записи с помощью PowerShell.
Итог
Мы настроили механизм DNS Aging and Scavenging, который позволяет Windows Server автоматически определять и удалять устаревшие динамические DNS-записи.
Перед включением очистки мы проверили существующие записи, перевели необходимые записи в статические и создали резервную копию. Затем настроили Aging для DNS-зоны и включили автоматический Scavenging на DNS-сервере.
Важно помнить, что автоматическая очистка предназначена для динамических DNS-записей. Старые статические записи необходимо контролировать отдельно.
Для их поиска и удаления смотрите статью Как удалить устаревшие DNS-записи с помощью PowerShell.