Windows dns очистка старых записей

Для автоматический очистки устаревших DNS записей в Active Directory используются две специальные возможности службы DNS Windows Server: Aging и Scavenging.

  • DNS Aging – позволяет определить DNS записи, которые считаются устаревшими
  • DNS Scavenging – непосредственно удаление старых DNS записей

В DNS на Windows Server есть два тип записей – динамические и статические. У динамических записей есть параметр
time stamp
(время последнего обновления записи). Активные Windows клиенты обновляют timestamp в своих записях при загрузке или раз в 24 часа. С помощью этого параметра DNS сервер может определить записи, которые давно не обновлялись, а значит не использовались.

Откройте консоль управления DNS сервером на контроллере домена AD (
dnsmgmt.msc
) и в меню View включите опцию Advanced.

Разверните зону прямую просмотра вашего домена (Forward Lookup Zone). Как вы видите, среди записей DNS зоны есть статические записи (static) и динамические (со временем в поле timestamp).

Статические и динамически записи в DNS AD

Статические DNS записи автоматически не очищаются. Такие записи создаются администратором, или в их настройках отключена опция Delete this record them it becomes stale.

Внимательно изучите динамические записи в зоне. Для всех DNS записей, которые не нужно удалять, отключите эту опцию в свойствах. Тип записи должен измениться на static.

Проверьте, что для всех серверов, сетевого оборудования, сервисов используются статические записи.

Сделать DNS записи статическими: отключить Delete this record them it becomes stale

Автоматически будут очищаться только динамические DNS записи.

По умолчанию динамическая очистка старых записей в Windows Server DNS отключена.

Откройте свойства вашей DNS зоны и нажмите на кнопку Aging на вкладке General.

  1. Включите опцию Scavenge stale resource records.
  2. Параметр No-refresh interval определяет в течении какого срока timestamp DNS записи нельзя обновлять (позволяет снизить нагрузку на DNS и уменьшить репликацию). При этом, если у компьютера сменилось имя, DNS запись будет успешно обновлена.
  3. Параметр Refresh Interval – период, в течении которого timestamp записи может быть обновлен.

Значение No-refresh interval должно составлять половину от срока аренды IP адреса (Lease Time) на вашем DHCP сервере. Например, если DNS сервер выдает IP адреса на 12 дней, укажите здесь 6. В данном случае динамическая DNS запись будет считаться устаревшей и подлежать очистке механизмом Scavenging через 12 дней неактивности.

Настройки устаревания DNS записей в Windows Server

Настройки Aging можно применить ко всем primary DNS зонам на DC, если щелкнуть по DNS серверу и выбрать Set Aging/Scavenging for All Zones.

Пока вы только настроили опцию устаревания DNS записей для зоны. Но до тех пор, пока вы не разрешите автоматическую очистку старых записей в настройка DNS сервера, они удаляться не будут.

Рекомендуем перед первым запуском очистки экспортировать информацию о ресурсных записях в DNS зоне в CSV файл с помощью PowerShell. Это позволит в случае необходимости пересоздать критические DNS записи:

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

Перейдите на вкладку Advanced в свойствах DNS сервера.

Включите опцию Enable automatic scavenging of state records и укажите через сколько дней после того, как DNS запись признана устаревшей механизмом Aging, ее нужно удалить (по умолчанию 7 дней). После этого механизм Scavenging будет автоматически удалять старые DNS записи раз в сутки.

Включить автоматическую очистку старых DNS записей в AD

Чтобы выполнить очистку немедленно, щелкните правой кнопкой по DNS серверу и выберите Scavenging Stale Resource Records. Или выполните команду:

Start-DnsServerScavenging -Verbose

Текущие настройки очистки записей на DNS сервере и время последней очистки можно получить с помощью PowerShell:

Get-DnsServerScavenging

NoRefreshInterval : 7.00:00:00
RefreshInterval : 7.00:00:00
ScavengingInterval : 7.00:00:00
ScavengingState : False
LastScavengeTime : 4/2/2024 6:02:37 AM

Get-DnsServerScavenging

Чаще всего в AD используются интегрированные DNS зоны, которые автоматически реплицируются между серверами (классический PRIMARY DNS сервер для таких зон отсутствует). Поэтому вам достаточно настроить параметры очистки старых записей на любом из контроллеров домена (кроме RODC). Если такой контроллер домена будет удален или выведен из эксплуатации, настройки нужно повторить на другом DC.



  • #1

Добрый день, есть два контроллера домена на windows server 2016, они же два DNS сервера. Во внутренней зоне днс серверов полно старых многолетних записей, подскажите как настроить автоматическую очистку старых записей в DNS ?



  • #2

К записям ресурсов, которые не добавляются динамически к данным зон DNS, применяется нулевое значение штампа времени, что предотвращает удаление таких записей во время очистки.
Однако можно вручную изменить свойства записи, чтобы любые статически вводимые записи могли быть задействованы в процессе очистки. При этом запись будет удаляться в зависимости от измененного значения штампа времени; в этот момент может потребоваться повторно создать эту запись, если она все еще необходима.

Это я к чему все, нужно настроить автоматическую очистку устаревших записей в DNS.
По умолчанию этот флажок устанавливается для динамически созданных записей и сброшен для статических.
Вот здесь

Если вникать нет времени
1. Выбираете ваш DNS сервер в оснастке MMC.
2. Свойства — Дополнительно — Разрешить автоматические удаление устаревших записей



  • #3

Я понял. Благодарствуем



  • #4

Кстати о птичках… а какое рекомендуемое количество дней ставить ? У меня выставлено в DNS = 7 дней. Это норма ?




  • #5

Если нет специальных требований оставьте значение по-умолчанию

Если в кратце, вот пример: Вы выдали dhcp адрес на x дней. С точки зрения DHCP адрес будет жить х дней, из которых х/2 дней он будет неизменям, по истечение х/2 первых дней жизни (половины срока лиза) клиент сам начинает обращаться на dhcp-сервер за продлением лиза — если клиент успел обратиться до окончания полного срока лиза — аренда продлевается.
Что происходит на стороне DNS — dhcp выдал адрес, и тут же зарегил запись в DNS — dhcp НЕ волнуется за жизнь записи в DNS, его дело — аренда адресов, и сообщение DNSу о новых арендах и продлении старых — удаление записей в DNS — дело самого DNS. Срок лиза адреса в dhcp никак не влияет на срок жизни ресурсной записи заводимой в DNS. На срок жизни записи в DNS влияют интервалы блокирования и обновления. Интервал блокирования — это период, в течение которого запись не может обновлятся, она может быть только полностью удалена. Интервал обновления — это интервал, в течение которого запись ожидает обновления (можно обновить дату создания, и тогда срок блокирования начнет новый отсчет), т.е. что dhcp придет и скажет — «пациент жив, продлевать буду» — это происходит как только «пациент» обратился к DHCP после истечения срока половины аренды, а запись еще не успела попасть в DNS под очистку, даже при условии, что истекли сроки блокировки и обновления, но она еще есть — у нее обновится дата создания, и сроки пойдут считаться с новой даты. Если прошли и срок блокирования и срок обновления записи на DNS — то при следующем запуске очистки запись будет удалена.
Т.е. срок блокировки и обновления записи желательно держать равными времени лиза — т.е. в вашем случае по 12 часов каждый. А срок очистки поставить скажем каждый час. Это увеличит нагрузку на сервер, но избавит вас от головной боли о дублирующихся записях. Чем чаще будет проходить очистка — тем меньше шансов дублирования будет. Но прямо пропорционально будет и рост нагрузки на DNS (если записей не много — не критично).

When you remove AD computer objects, DNS records are left in the Windows Server DNS. The best way is to Set up DNS aging and scavenging. But if these records are static, they will not be removed automatically. Also, what if you can’t wait and want to remove the stale records immediately? That’s when PowerShell comes to the rescue. In this article, you will learn how to clean up stale DNS records with PowerShell.

Table of contents

  • What are DNS records
  • Check old records in DNS Manager
  • Remove stale DNS entries with PowerShell script
    • Step 1. Download Remove-DNSRecords PowerShell script
    • Step 2. Run Remove-DNSRecords PowerShell script
  • Conclusion

What are DNS records

DNS resource records contain the information that a zone maintains about the resources (such as hosts) that the zone contains. A typical resource record consists of the following:

  • Name (host) of the resource record.
  • Information about how long the resource record can remain in the cache.
  • Resource record type, such as a host (A) resource record.
  • Data that’s specific to the record type, such as the host’s IPv4 address.

You can add resource records directly, or they can be added automatically when Windows-based, Dynamic Host Configuration Protocol (DHCP) enabled clients join a network using dynamic update.

The following type of resource record types are well-known:

  • Host (A, AAAA) records
  • Alias (CNAME) records
  • Mail exchanger (MX) records
  • Pointer (PTR) records
  • Service location (SRV) records
  • Name server (NS) records
  • Text (TXT) record
  • Delegation name (DNAME) record
  • Start of authority (SOA) record

Check old records in DNS Manager

Start DNS Manager and check for the old DNS record that contains the hostname, FQDN, and IP address.

In our example, we like to find the Domain Controller that we demoted:

  • Hostname: DC01-2019
  • FQDN: DC01-2019.exoip.local.
  • IP address: 192.168.1.51

Right-click on a zone and click Properties.

Clean up DNS records with PowerShell properties

Click Name Servers.

The old server appears in the list, which is the Name Server (NS) record.

How to clean up stale DNS records with PowerShell name servers

The Host (A) record is present.

How to clean up stale DNS records with PowerShell A record

The Service Location (SRV) record is present.

If we go through more zones, we will find all the stale DNS records of that particular AD computer object.

Going through all the zones and removing the old DNS records takes time. It may also happen that you do not see a record, and it will stay there.

Instead of going through all the DNS server zones and removing the DNS records of the AD computer object manually, we will automate the process with PowerShell and clean up all the stale records.

Note: You should Set up DNS Aging and Scavenging in Active Directory, so it will remove the stale dynamic DNS records. While this will clean up the stale records in DNS, it will not remove old static DNS records, and that’s what the PowerShell script below will do.

Remove stale DNS entries with PowerShell script

An excellent way to remove old DNS records is with the Remove-DNSRecords.ps1 PowerShell script that uses the following three cmdlets:

  1. Get-DnsServerZone cmdlet to retrieve the primary zones.
  2. Get-DnsServerResourceRecord cmdlet to find all resource records equal to the FQDN, Hostname, and IP address.
  3. Remove-DnsServerResourceRecord to remove the retrieved DNS records.

Step 1. Download Remove-DNSRecords PowerShell script

Download and place Remove-DNSRecords.ps1 PowerShell script on the Domain Controller C:\scripts folder. If you don’t have a scripts folder, create one.

Ensure the file is unblocked to prevent errors when running the script. Read more in the article Not digitally signed error when running PowerShell script.

Another option is to copy and paste the code below into Notepad. Give it the name Remove-DNSRecords.ps1 and place it in the C:\scripts folder.

<#
    .SYNOPSIS
    Remove-DNSRecords.ps1

    .DESCRIPTION
    Clean up stale DNS records with PowerShell.

    .LINK
    www.alitajran.com/clean-up-dns-records-powershell/

    .NOTES
    Written by: ALI TAJRAN
    Website:    www.alitajran.com
    LinkedIn:   linkedin.com/in/alitajran

    .CHANGELOG
    V1.00, 01/20/2024 - Initial version
#>

$ServerFQDN = "dc01-2019.exoip.local." #Keep the dot (.) at the end
$ServerHostname = "dc01-2019"
$IPAddress = "192.168.1.51"

$Zones = Get-DnsServerZone | Where-Object { $_.ZoneType -eq "Primary" } |
Select-Object -ExpandProperty ZoneName

foreach ($Zone in $Zones) {
    Get-DnsServerResourceRecord -ZoneName $Zone | Where-Object { 
        $_.RecordData.IPv4Address -eq $IPAddress -or
        $_.RecordData.NameServer -eq $ServerFQDN -or
        $_.RecordData.DomainName -eq $ServerFQDN -or
        $_.RecordData.HostnameAlias -eq $ServerFQDN -or
        $_.RecordData.MailExchange -eq $ServerFQDN -or
        $_.HostName -eq $ServerHostname
    } | Remove-DnsServerResourceRecord -ZoneName $Zone -Force -WhatIf
}
  • Lines 20, 21, 22: Change the ServerFQDN, ServerHostname, and IPAddress values to the AD computer object from which you want to remove the stale DNS records.

Step 2. Run Remove-DNSRecords PowerShell script

Start Windows PowerShell and run the Remove-DNSRecords.ps1 script.

Note: Nothing will happen to the environment when you run the script because the -WhatIf parameter is added in the script. Once you identify and confirm the stale records, remove the -WhatIf parameter and rerun the script.

C:\scripts\.\Remove-DNSRecords.ps1

This is how it looks in our example.

What if: Removing DNS resource record @ of type NS from zone _msdcs.exoip.local on DC01-2022 server.
What if: Removing DNS resource record @ of type NS from zone autodiscover.exoip.com on DC01-2022 server.
What if: Removing DNS resource record dc01-2019 of type A from zone exoip.local on DC01-2022 server.
What if: Removing DNS resource record @ of type NS from zone exoip.local on DC01-2022 server.
What if: Removing DNS resource record DomainDnsZones of type A from zone exoip.local on DC01-2022 server.
What if: Removing DNS resource record _ldap._tcp.Default-First-Site-Name._sites.DomainDnsZones of type SRV from zone exoip.local on DC01-2022 server.
What if: Removing DNS resource record _ldap._tcp.Default-First-Site-Name._sites.ForestDnsZones of type SRV from zone exoip.local on DC01-2022 server.
What if: Removing DNS resource record _ldap._tcp.DomainDnsZones of type SRV from zone exoip.local on DC01-2022 server.
What if: Removing DNS resource record ForestDnsZones of type A from zone exoip.local on DC01-2022 server.
What if: Removing DNS resource record _ldap._tcp.ForestDnsZones of type SRV from zone exoip.local on DC01-2022 server.
What if: Removing DNS resource record @ of type NS from zone TrustAnchors on DC01-2022 server.

After you verify the old DNS records of that specific AD computer object, remove the -WhatIf parameter and rerun the script.

C:\scripts\.\Remove-DNSRecords.ps1

All the DNS records are successfully deleted for that specific AD computer object from Windows Server DNS.

That’s it!

Read more: Configure OneDrive administrative template files (ADMX/ADML) »

Conclusion

You learned how to clean up stale DNS records with PowerShell. The next time you want to remove a DNS record from DNS, use the PowerShell script to delete the DNS records and save yourself time.

Did you like this article? You may also like How to Disable access to install Office add-ins. Don’t forget to follow us and share this article.

Устаревшие DNS записи в Active Directory могут вызывать проблемы с разрешением имен, поэтому очень важно удалять такие записи на DNS сервере вашей организации. В этой статье я расскажу как можно включить автоматическую очистку DNS сервера от устаревших записей и настраивать параметры DNS Aging и DNS Scavenging.

Что такое устаревшие DNS записи

Устаревшие записи DNS — это записи на сервере DNS, которые по-прежнему указывают на старый IP-адрес устройства. Это может вызвать проблемы при обращении к устройству по имени. Например, при попытке зайти на общую сетевую папку. Такие записи могут появляются на сервере DNS из-за некорректного отключения компьютера от сети и перерегистрации его с новым IP адресом. Особенно актуальна проблема с устаревшими записями в случае присутствия большого количества ноутбуков или мобильных клиентов в вашей сети.

Как работает очистка DNS

Чтобы автоматически удалять старые записи в DNS, нужно корректно настроить DNS Aging (Устаревание) и Scavenging (Очистку). Давайте разберемся как это работает.

DNS Aging (Устаревание) позволяет идентифицировать устаревшие записи DNS. При этом используется два интервала, и запись DNS считается устаревшей по истечении обоих интервалов.

  • Non-Refresh Interval (интервал без обновления): это период времени, в течение которого запись устройства не может быть обновлена. Отказ от обновления в течение этого периода времени снижает трафик репликации, поскольку нет необходимости повторно реплицировать одну и ту же информацию.
  • Refresh Interval (интервал обновления): это период времени, в течение которого запись устройства может быть обновлена.

Для лучшего понимания рассмотрим эти интервалы на двух примерах.

  1. Интервал без обновления и интервал обновления составляют по семь дней (это значения по умолчанию). В этом случае запись устройства считается устаревшей по прошествии четырнадцати дней.
  2. Интервал без обновления 4 дня, интервал обновления 7 дней. В этом случае запись устройства можно обновить через 4 дня, в течение последующих 7 дней. После этого начнется новый период без обновления, который составит 4 дня. Если в течение 11 дней запись не обновится, то она будет считаться устаревшей.

Даже если интервалы Non-Refresh Interval и Refresh Interval истекли, запись устройства может быть обновлена ​​до тех пор, пока она не будет удалена из зоны DNS. После этого начнется новый интервал Non-Refresh, и запись больше не будет считаться устаревшей. Клиент Windows пытается обновлять метку времени каждые 24 часа.

Для определения факта устаревания записи устройства DNS Aging использует отметку времени (timestamp).  Статические записи, которые имеют отметку времени, равную нулю, никогда не устаревают. Для динамических записей отметка времени представляет собой дату и время последнего обновления записи устройства на DNS сервере.

DNS Scavenging (Очистка) позволяет удалять устаревшие записи устройств в зонах DNS. Функция очистки включается для всего DNS сервера, но также должна быть настроена для каждой зоны DNS. Интервал очистки не зависит от интервалов без обновления (Non-Refresh Interval)  и интервалов обновления (Refresh Interval).

Чтобы узнать, какие установлены настройки DNS Aging и Scavenging и когда будет запущен следующий цикл очистки, мы можем использовать командлет PowerShell:

Get-DnsServerScavenging

Powershell получение информации об интервалах

В результатах вывода команды видно, что интервал установлен на 7 дней, а очистка устаревших записей еще ни разу не проводилась.

Включение автоматической очистки устаревших DNS записей

Для включения функции автоматического очистки устаревших записей на DNS сервере нужно запустить оснастку DNS Manager (Диспетчер DNS), нажать правой кнопкой мыши на DNS сервере и выбрать пункт Properties.

dns server properties

На вкладке Advanced необходимо активировать автоматическую очистку устаревших записей и указать период очистки.

dns server enable scavenging

Для корректной работы очистки необходимо активировать настройки устаревания DNS записей устройств для каждой зоны на сервере. Для этого выбираем необходимую зону в области прямого просмотра, нажимаем на ней правой кнопкой мыши и выбираем Properties. На вкладке General нажимаем кнопку Aging.

DNS Zone Aging

И задаем для этой зоны значения интервалов Non-Refresh Interval и Refresh Interval.

DNS ZOne Scaving settings

Интервал без обновления + интервал обновления должен быть меньше или равен времени аренды DHCP. Причем интервал без обновления равен или меньше интервала обновления.

Чтобы включить устаревание и очистку DNS по умолчанию для всех зон DNS на DNS-сервере, выполните следующие действия. Щелкните правой кнопкой мыши на имени сервера, а затем выберите Set Aging/Scavenging for All Zones  (Установить устаревание/очистку для всех зон).

По аналогии с DNS зонам задаем Non-Refresh Interval и Refresh Interval. Включите Apply these settings to the existing Active Directory-integrated zones (Применить эти параметры к существующим зонам, интегрированным с Active Directory) для применения устаревания и очистки DNS у существующих зон, интегрированных с Active Directory.

All Zone Aging

Если у вас DNS зона интегрирована с Active Directory, то одного DNS сервера с включенной очисткой DNS записей достаточно, чтобы правильно её проводить. Обычно не рекомендуется настраивать очистку DNS на нескольких серверах, поскольку это усложняет устранение неполадок, связанных с очисткой. Например, удаление допустимых записей DNS.

Поддержание чистоты записей DNS помогает предотвратить ошибки разрешения имен в вашей сети. Но прежде чем включить очистку устаревших записей DNS, убедитесь, что вы тщательно проверили все свои настройки DNS.

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Темные стандартные обои windows 10
  • Компьютер не видит второй монитор через hdmi windows 11
  • Hdrezka client для windows
  • Где настройка яркости в windows 10
  • Как установить windows на внешний жесткий диск подключенный через usb