Freigeben über


DNS-Zonenübertragungsoptionen werden zurückgesetzt, nachdem Sie den Zonenreplikationsbereich in Windows Server 2008 R2 geändert haben.

Dieser Artikel enthält Hilfe zum Beheben eines Problems, bei dem DNS-Zonenübertragungsoptionen zurückgesetzt werden, nachdem Sie den Zonenreplikationsbereich geändert haben.

Ursprüngliche KB-Nummer: 4050194

Problembeschreibung

Stellen Sie sich folgendes Szenario vor:

  • Eine Domäne mit dem Namen contoso.com enthält zwei Domänencontroller, DC1.contoso.com und DC2.contoso.com.

  • Beide Domänencontroller sind DNS-Server (Domain Name System), die die Contoso.com Zone hosten.

  • Der Bereich für die Zonenreplikation wird auf den folgenden Wert festgelegt:

    Für alle Domänencontroller in der Domäne (für Windows 2000-Kompatibilität): contoso.com

  • Die contoso.com Zone auf DC1 und DC2 ist so konfiguriert, dass Zonenübertragungen an sekundäre Server zugelassen werden.

  • Sie legen den Zonenreplikationsbereich auf den folgenden Wert fest:

    Für alle DNS-Server, die auf Domänencontrollern in dieser Domäne ausgeführt werden: contoso.com

    Screenshot der Einstellung des Zonenreplikationsbereichs.

  • Diese Änderung wird in DC2 repliziert, und dann wird die contoso.com Zone vom DNS-Dienst auf DC2 neu geladen.

In diesem Szenario werden die Zonenübertragungseinstellungen für DC2 entfernt. Folgende Änderungen werden vorgenommen:

  • Das Kontrollkästchen "Zonenübertragungen zulassen" ist deaktiviert.

  • Die Liste der Server, auf die die Zonenübertragung zuvor zulässig war, wird entfernt. Die Serverwerte werden auch aus der Registrierung entfernt.

    Screenshot des Eigenschaftenfensters, in dem das Kontrollkästchen

    Notiz

    Wenn dieses Problem auftritt, sind die Zonenübertragungseinstellungen auf DC1 nicht betroffen.

Ursache

Dieses Problem tritt auf, da das vorhandene Zonenobjekt aus der Partition gelöscht wird und ein neues Objekt in der entsprechenden Partition erstellt wird, wenn der Replikationsbereich geändert wird. Diese Änderung wird auf allen Domänencontrollern repliziert.

Wenn der Abrufthread auf DC2 die Änderung von der neuen Partition abruft, werden die Registrierungseinstellungen zurückgesetzt. Die Zonenübertragung ist deaktiviert, da der Wert von SecureSecondaries auf 3 festgelegt ist. Außerdem werden alle konfigurierten Server in der Zonenübertragungsliste entfernt, da der Wert "SecondaryServers " entfernt wird. Aus DNS-Sicht ähnelt dieser Prozess dem Erstellen einer neuen Zone in einer anderen Partition.

Lösung

Bevor Sie den Replikationsbereich ändern, beachten Sie die Zonenübertragungseinstellungen. Konfigurieren Sie die Zonenübertragungseinstellungen neu, nachdem der Replikationsbereich geändert wurde.
Sie können auch die folgenden Skripts verwenden, um die Einstellungen zu sichern und wiederherzustellen.

Notiz

Diese Skripts werden auf der Basis von "as-is" bereitgestellt. Es wird empfohlen, diese Skripts gründlich zu testen, bevor Sie sie in einer Produktionsumgebung verwenden.

Sicherungsskript

Speichern Sie den folgenden Code als Datei mit dem Namen 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

Skript wiederherstellen

Speichern Sie den folgenden Code als Datei mit dem Namen "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

Das Sicherungsskript sichert die Zonenübertragungseinstellungen für eine bestimmte Zone. (Aus Gründen der Einfachheit wird die Sicherung in der Registrierung unter der HKEY_CURRENT_USER Struktur gespeichert.)

Notiz

Sie können das PowerShell-Cmdlet Set-ExecutionPolicy ausführen, um nicht signierte Skripts zuzulassen.

Der zweite Befehl (hervorgehoben) im folgenden Screenshot erstellt eine Sicherung der Zonenübertragungseinstellungen für die Zone mit dem Namen "test3.com".

Screenshot des Befehls zum Erstellen einer Sicherung der Zonenübertragungseinstellungen.

Wo die Einstellungen in der Registrierung gesichert werden

Screenshot des Registrierungs-Editor-Fensters, in dem die Einstellungen gesichert werden.

Ausführen des Skripts zum Wiederherstellen der Zonenübertragungseinstellungen (das Wiederherstellungsskript stellt nur diese beiden Werte wieder her)

Screenshot des Windows PowerShell-Fensters, in dem das Wiederherstellungsskript ausgeführt wird.

Zonenübertragungseinstellungen in der Registrierung vor dem Wiederherstellungsvorgang

Screenshot des Fensters

Zonenübertragungseinstellungen in der Registrierung nach dem Wiederherstellungsvorgang

Screenshot des Fensters

Notiz

Nachdem Sie das Wiederherstellungsskript ausgeführt haben, müssen Sie den DNS-Dienst neu starten, um die Änderungen anzuwenden.

Weitere Informationen

Speicher für Zonenübertragungseinstellungen

Die Zonenübertragungseinstellungen werden in der Registrierung auf dem DNS-Server im folgenden Pfad gespeichert:

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

Wenn die Zonenübertragung auf bestimmte Server oder IP-Adressen festgelegt ist, werden die folgenden Werte aufgefüllt:

  • SecureSecondaries ist auf 0x2 festgelegt. Dies entspricht der Option "Nur für die folgenden Server ".
  • Ein Mehrfachzeichenfolgenwert namens SecondaryServers wird mithilfe der IP-Adressen der Server erstellt.

Einstellungen

Screenshot des Eigenschaftenfensters mit Zonenübertragungseinstellungen.

Registrierung

Screenshot des Registrierungs-Editor-Fensters mit Zonenübertragungseinstellungen.

Notiz

Die Zonenübertragungseinstellungen werden nicht in Active Directory gespeichert. Daher werden die Einstellungen nicht als Teil der Active Directory-Replikation repliziert.

DS-Umfragethread

Der DNS-Dienst verwaltet einen DS-Abrufthread, der in regelmäßigen Abständen Partitionen abruft und die Liste aller Zonen abruft. Weitere Informationen finden Sie unter Wie oft überprüft der DNS-Serverdienst AD auf neue oder geänderte Daten?
Standardmäßig fragt der DNS-Dienst Active Directory für Änderungen alle 180 Sekunden ab (3 Minuten). Sie können diesen Prozess steuern, indem Sie den Registrierungsschlüssel "DsPollingInterval " oder den Dnscmd /dspollinginterval-Switch verwenden.

Notiz

Der Schalter akzeptiert Werte von 0 bis 3.600 Sekunden. Werte von 1 bis 29 sind jedoch nicht zulässig. Der minimal zulässige Wert beträgt 30 Sekunden.

Weitere Informationen finden Sie in der Dnscmd-Konfiguration.