Udostępnij za pośrednictwem


Opcje transferu strefy DNS są resetowane po zmianie zakresu replikacji strefy w systemie Windows Server 2008 R2

Ten artykuł zawiera pomoc w rozwiązaniu problemu polegającego na tym, że opcje transferu strefy DNS są resetowane po zmianie zakresu replikacji strefy.

Oryginalny numer KB: 4050194

Symptomy

Rozważmy następujący scenariusz:

  • Domena o nazwie contoso.com zawiera dwa kontrolery domeny, DC1.contoso.com i DC2.contoso.com.

  • Oba kontrolery domeny są serwerami systemu nazw domen (DNS), które hostują strefę Contoso.com .

  • Zakres replikacji strefy jest ustawiony na następującą wartość:

    Do wszystkich kontrolerów domeny w domenie (w przypadku zgodności systemu Windows 2000): contoso.com

  • Strefa contoso.com na DC1 i DC2 jest skonfigurowana do zezwalania na transfery stref do serwerów pomocniczych.

  • Zakres replikacji strefy należy ustawić na następującą wartość:

    Do wszystkich serwerów DNS uruchomionych na kontrolerach domeny w tej domenie: contoso.com

    Zrzut ekranu przedstawiający ustawianie zakresu replikacji strefy.

  • Ta zmiana jest replikowana do dc2, a następnie strefa contoso.com jest ponownie ładowana przez usługę DNS na DC2.

W tym scenariuszu ustawienia transferu strefy na dc2 są usuwane. Występują następujące zmiany:

  • Pole wyboru Zezwalaj na transfery stref jest wyczyszczone.

  • Lista serwerów, do których wcześniej dozwolony był transfer strefy, jest usuwana. Wartości serwera są również usuwane z rejestru.

    Zrzut ekranu przedstawiający okno właściwości, w którym jest wyświetlane pole wyboru Zezwalaj na transfery stref zostało wyczyszczone.

    Uwaga 16.

    W przypadku wystąpienia tego problemu ustawienia transferów stref na DC1 nie mają wpływu.

Przyczyna

Ten problem występuje, ponieważ istniejący obiekt strefy jest usuwany z partycji, a nowy obiekt jest tworzony w odpowiedniej partycji po zmianie zakresu replikacji. Ta zmiana jest replikowana na wszystkich kontrolerach domeny.

Gdy wątek sondowania na DC2 ściąga zmianę z nowej partycji, ustawienia rejestru są resetowane. Transfer strefy jest wyłączony, ponieważ wartość protokołu SecureSecondaries jest ustawiona na 3. Ponadto wszystkie skonfigurowane serwery na liście transferu strefy są usuwane, ponieważ wartość SecondaryServers jest usuwana. Z perspektywy DNS ten proces przypomina tworzenie nowej strefy w innej partycji.

Rozwiązanie

Przed zmianą zakresu replikacji zanotuj ustawienia transferu strefy. Ponownie skonfiguruj ustawienia transferu strefy po zmianie zakresu replikacji.
Możesz również użyć następujących skryptów, aby utworzyć kopię zapasową i przywrócić ustawienia.

Uwaga 16.

Te skrypty są udostępniane w sposób ciągły. Zalecamy dokładne przetestowanie tych skryptów przed ich użyciem w środowisku produkcyjnym.

Skrypt kopii zapasowej

Zapisz następujący kod jako plik o nazwie 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

Przywracanie skryptu

Zapisz następujący kod jako plik o nazwie 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

Skrypt kopii zapasowej wykonuje kopię zapasową ustawień transferu strefy dla określonej strefy. (Dla wygody kopia zapasowa jest przechowywana w rejestrze HKEY_CURRENT_USER w gałęzi).

Uwaga 16.

Możesz uruchomić polecenie cmdlet Set-ExecutionPolicy programu PowerShell, aby zezwolić na niepodpisane skrypty.

Drugie polecenie (wyróżnione) na poniższym zrzucie ekranu wykonuje kopię zapasową ustawień transferu strefy dla strefy o nazwie "test3.com".

Zrzut ekranu przedstawiający polecenie służące do tworzenia kopii zapasowej ustawień transferu strefy.

Miejsce tworzenia kopii zapasowej ustawień w rejestrze

Zrzut ekranu przedstawiający okno Edytor rejestru, w którym są tworzone kopie zapasowe ustawień.

Uruchomienie skryptu w celu przywrócenia ustawień transferu strefy (skrypt przywracania przywraca tylko te dwie wartości)

Zrzut ekranu przedstawiający okno programu Windows PowerShell, w którym jest uruchamiany skrypt przywracania.

Ustawienia transferu strefy w rejestrze przed operacją przywracania

Zrzut ekranu przedstawiający okno Edytor rejestru z ustawieniami transferu strefy przed operacją przywracania.

Ustawienia transferu strefy w rejestrze po operacji przywracania

Zrzut ekranu przedstawiający okno Edytor rejestru z ustawieniami transferu strefy po operacji przywracania.

Uwaga 16.

Po uruchomieniu skryptu przywracania należy ponownie uruchomić usługę DNS, aby zastosować zmiany.

Więcej informacji

Magazyn ustawień transferu strefy

Ustawienia transferu strefy są przechowywane w rejestrze na serwerze DNS w następującej ścieżce:

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

Po ustawieniu transferu strefy na określone serwery lub adresy IP zostaną wypełnione następujące wartości:

  • Ustawienie SecureSecondaries ma wartość 0x2. Odpowiada to opcji Tylko następującym serwerom .
  • Wartość wielociągowa o nazwie SecondaryServers jest tworzona przy użyciu adresów IP serwerów.

Ustawienia

Zrzut ekranu przedstawiający okno właściwości z ustawieniami transferu strefy.

Rejestr

Zrzut ekranu przedstawiający okno Edytor rejestru z ustawieniami transferu strefy.

Uwaga 16.

Ustawienia transferu strefy nie są przechowywane w usłudze Active Directory. W związku z tym ustawienia nie są replikowane w ramach replikacji usługi Active Directory.

Wątek sondowania DS

Usługa DNS utrzymuje wątek sondowania DS, który okresowo sonduje partycje i pobiera listę wszystkich stref. Aby uzyskać więcej informacji, zobacz Jak często usługa serwera DNS sprawdza usługę AD pod kątem nowych lub zmodyfikowanych danych?
Domyślnie usługa DNS sonduje usługę Active Directory pod kątem zmian co 180 sekund (3 minuty). Ten proces można kontrolować za pomocą klucza rejestru DsPollingInterval lub przełącznika dnscmd /dspollinginterval .

Uwaga 16.

Przełącznik akceptuje wartości z zakresu od 0 do 3600 sekund. Jednak wartości z zakresu od 1 do 29 nie są dozwolone. Minimalna akceptowalna wartość to 30 sekund.

Aby uzyskać więcej informacji, zobacz Konfiguracja dnscmd.