Поделиться через


Параметры передачи зоны DNS сбрасываются после изменения области репликации зоны в Windows Server 2008 R2

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

Исходный номер базы знаний: 4050194

Симптомы

Рассмотрим следующий сценарий:

  • Домен с именем contoso.com содержит два контроллера домена, DC1.contoso.com и DC2.contoso.com.

  • Оба контроллера домена — это DNS-серверы, на которых размещается Contoso.com зона.

  • Область репликации зоны имеет следующее значение:

    Для всех контроллеров домена в домене (для совместимости Windows 2000): contoso.com

  • Зона contoso.com в DC1 и DC2 настроена на разрешение передачи зоны на вторичные серверы.

  • Для области репликации зоны задано следующее значение:

    Для всех DNS-серверов, работающих на контроллерах домена в этом домене: contoso.com

    Снимок экрана: настройка области репликации зоны.

  • Это изменение реплицируется в DC2, а затем зона contoso.com перезагрузится службой DNS на DC2.

В этом сценарии параметры передачи зоны в DC2 удаляются. Следующие изменения происходят:

  • Флажок "Разрешить передачу зоны" снят.

  • Список серверов, на которые ранее разрешена передача зоны. Значения сервера также удаляются из реестра.

    Снимок экрана: окно свойств, в котором установлен флажок

    Примечание.

    При возникновении этой проблемы параметры передачи зоны в DC1 не затрагиваются.

Причина

Эта проблема возникает, так как существующий объект зоны удаляется из раздела, а новый объект создается в соответствующей секции при изменении области репликации. Это изменение реплицируется во всех контроллерах домена.

Когда поток опроса в DC2 извлекает изменение из новой секции, параметры реестра сбрасываются. Передача зоны отключена, так как для параметра SecureSecondaries задано значение 3. Кроме того, все настроенные серверы в списке передачи зоны удаляются из-за удаления значения SecondaryServers . С точки зрения DNS этот процесс напоминает создание новой зоны в другой секции.

Решение

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

Примечание.

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

Скрипт резервного копирования

Сохраните следующий код в виде файла с именем BackupZoneTransferSettings.ps1.

# Begin Script  
param([string]$ZoneName = "test2.com")  
#Build the vars  
$TargetRoot = "HKCU:\DNSZoneConfigMigration\"  
$TargetKeyPath = $TargetRoot  
$SourceRoot = "HKLM:\Software\Microsoft\Windows Nt\CurrentVersion\DNS Server\Zones\"  
$SourceKeyPath = $SourceRoot + $ZoneName  
#Copy the Item  
#Check for the presence of the item  
Get-Item HKCU:\DNSZoneConfigMigration -ErrorAction SilentlyContinue >$null  
if($?)  
{  
"DNSZoneConfigMigration key present already!"  
}  
else  
{  
New-Item -Path HKCU:\DNSZoneConfigMigration -ErrorAction SilentlyContinue >$null  
}  
if($?)  
{  
Copy-Item -Path $SourceKeyPath -Destination $TargetKeyPath -ErrorAction SilentlyContinue >$null  
if($?)  
  {  
"Key backed up in registry (Current User Hive) successfully!"  
  }
 else  
  {  
"Key Backup Failed.Error Code is " + $Error[0].Exception.Message  
  }  
}  
else  
{ "Unable to Create Backup Key.Error code is " + + $Error[0].Exception.Message + ".Exiting"  
}  
# End Script

Скрипт восстановления

Сохраните следующий код в виде файла с именем RestoreZoneTransferSettings.ps1.

# Begin Script  
param([string]$ZoneName = "test2.com")  
#Build the vars
$SourceRoot = "HKCU:\DNSZoneConfigMigration\"  
$SourceKeyPath = $SourceRoot + $ZoneName  
$DestinationRoot = "HKLM:\Software\Microsoft\Windows Nt\CurrentVersion\DNS Server\Zones\"  
$DestinationKeyPath = $DestinationRoot + $ZoneName  
#Copy the ItemProperty Values  
Copy-ItemProperty -Path $SourceKeyPath -Destination $DestinationKeyPath -Name "SecureSecondaries" -ErrorAction SilentlyContinue >$null  
if($?)
{  
    "SecureSecondaries Value Successfully Restored for " + $ZoneName  
    Copy-ItemProperty -Path $SourceKeyPath -Destination $DestinationKeyPath -Name "SecondaryServers" -ErrorAction SilentlyContinue >$null  
    if($?)  
    {  
       "SecondaryServers Value Successfully Restored for " + $ZoneName "Restore Successful! Deleting the backup" Remove-Item -Path $SourceKeyPath  
if(-Not $?)  
    {  
    "Unable to Delete Backup Key. Delete Manually. Error :" + $Error[0].Exception.Message  
}  
    }  
    else
    {
     "Failed to restore SecondaryServers value. " + $Error[0].Exception.Message  
    }  
}  
else  
{  
    "Failed to restore SecureSecondaries value. " + $Error[0].Exception.Message  
}
# End Script

Скрипт резервного копирования выполняет резервное копирование параметров передачи зоны для определенной зоны. (Для удобства резервное копирование хранится в реестре HKEY_CURRENT_USER под hive.)

Примечание.

Командлет Set-ExecutionPolicy PowerShell можно запустить, чтобы разрешить неподписанные скрипты.

Вторая команда (выделенная) на следующем снимке экрана создает резервную копию параметров передачи зоны для зоны с именем "test3.com".

Снимок экрана: команда для резервного копирования параметров передачи зоны.

Где параметры резервируются в реестре

Снимок экрана: окно редактора реестра, в котором создаются резервные копии параметров.

Выполнение скрипта для восстановления параметров передачи зоны (скрипт восстановления восстанавливает только эти два значения)

Снимок экрана: окно Windows PowerShell, которое запускает скрипт восстановления.

Параметры передачи зоны в реестре перед операцией восстановления

Снимок экрана: окно редактора реестра с параметрами передачи зоны перед операцией восстановления.

Параметры передачи зоны в реестре после операции восстановления

Снимок экрана: окно редактора реестра с параметрами передачи зоны после операции восстановления.

Примечание.

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

Дополнительная информация

Хранилище параметров передачи зоны

Параметры передачи зоны хранятся в реестре на DNS-сервере в следующем пути:

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DNS Server\Zones\<domain name>

Если для передачи зоны заданы определенные серверы или IP-адреса, заполняются следующие значения:

  • SecureSecondaries имеет значение 0x2. Это соответствует параметру "Только для следующих серверов ".
  • Многостроовое значение, которое называется SecondaryServers , создается с помощью IP-адресов серверов.

Настройки

Снимок экрана: окно свойств с параметрами передачи зоны.

Реестр

Снимок экрана: окно редактора реестра с параметрами передачи зоны.

Примечание.

Параметры передачи зоны не хранятся в Active Directory. Поэтому параметры не реплицируются в рамках репликации Active Directory.

Поток опроса DS

Служба DNS поддерживает поток опроса DS, который периодически опрашивает секции и извлекает список всех зон. Дополнительные сведения см. в статье "Как часто служба DNS-сервера проверяет AD для новых или измененных данных"
По умолчанию служба DNS опрашивает Active Directory за изменения каждые 180 секунд (3 минуты). Этот процесс можно контролировать с помощью раздела реестра DsPollingInterval или параметра dnscmd /dspollinginterval.

Примечание.

Параметр принимает значения от 0 до 3600 секунд. Однако значения от 1 до 29 не допускаются. Минимально допустимое значение — 30 секунд.

Дополнительные сведения см . в разделе "Конфигурация Dnscmd".