DNS-Survey
Das Primary-Secondary-Überkreuz-Problem
Ein häufig zu beobachtendes Problem beim Betrieb von Nameservern ist das
Weiterleben von resource records an der Zonengrenze zwischen
delegierender und delegierter Zone. Es tritt i.d.R. dann auf, wenn die
primary server für beide Zonen auf verschiedenen Rechnern
angesiedelt und zusätzlich für die jeweils andere Zone als
secondary server konfiguriert sind.
Beispiel:
Sei der Server ns.Her.DE primary für die Zone
Her.DE und secondary für Vieh.Her.DE.
Der Server rind.Vieh.Her.DE sei der primary server
für die Zone Vieh.Her.DE und secondary für
Her.DE. Es existieren also in der Zone Vieh.Her.DE
u.a. die beiden NS-resource records
Vieh.Her.DE. IN NS rind.Vieh.Her.DE.
Vieh.Her.DE. IN NS ns.Her.DE.
Es gebe jetzt außerdem einen dritten NS-RR, z.B.
Vieh.Her.DE. IN NS wilde.Hor.DE.
(Dieser RR existiert bei korrekter Verwaltung sowohl in der Zonendatei
für Her.DE als auch in der für Vieh.Her.DE.)
Soll dieser RR jetzt entfernt werden (weil etwa die Delegation an den
Server wilde.Hor.DE aufgehoben werden soll), so wird - wiederum
korrekte Administration vorausgesetzt - der RR sowohl aus der delegierenden Zone
Her.DE als auch aus der delegierten Zone Vieh.Her.DE
gestrichen.
Nach einem reload der beiden Server wird der alte - aus den
Originalen gelöschte - NS-RR dennoch auf beiden Servern weiterhin
vorhanden sein, auch wenn beide Administratoren sich bis hierher
korrekt verhalten.
Die häufig anzutreffenden, schlechte Praxis, dem Verwalter der
übergeordneten Zone Änderungen nicht oder nur verspätet
mitzuteilen und nicht mit ihm abzustimmen, sorgt für weitere Fehlerquellen.
Gegenmaßnahmen
Ein lokaler Neustart der beteiligten Nameserver führt nicht zum Ziel, da
vom jeweils anderen Server umgehend die fehlerhaften Daten wieder
übernommen werden.
Wichtig ist vielmehr ein koordiniertes Vorgehen, bei dem beide Nameserver
zeitgleich von der Zonenkopie der Zone, für die sie als
secondary konfiguriert sind, befreit werden. Der folgende Fahrplan
hilft, der einst gerufenen Geister wieder ledig zu werden:
- Schritt 1:
- Zuerst müssen beide Zonen aktualisiert werden. Dazu editieren Sie die
Original-Zonendateien auf dem jeweiligen primary. Vergessen
Sie nicht, dabei jeweils die SOA-Seriennummer zu erhöhen. Die aus der
delegierenden Zone und aus der delegierten Zone stammenden Sätze von
NS-RRs müssen übereinstimmen.
- Schritt 2:
- Stoppen Sie die beiden beteiligten Nameserver-Prozesse
- Schritt 3:
- Um eine Reinfektion zu verhindern müssen Sie jetzt die Dateien
löschen, die die Kopie der Zone halten, für die der jeweilige Server
secondary ist.
- Schritt 4:
- Sie können jetzt beide Nameserver neu starten. Dabei werden dann die
aktuellen, "sauberen" Zonen gelesen und per AXFR dem jeweils
anderen zur Verfügung gestellt.
Man kann auch um das Anhalten des Server-Prozesses herumkommen, indem man
z.B. kurzfristig auf den jeweils überkreuz liegenden secondary
verzichtet.
Ursachen
Die Ursache des Problems liegt zum einen in einer nicht bis ins letzte
Detail ausgeführten Spezifikation des DNS, zum anderen an einer
unsauberen bzw. unvorsichtigen Implementierung des BIND.
Der Nameserver dürfte, wenn er für die delegierte Zone autoritativ
ist, nur die in der zugehörigen Zonendatei angegebenen NS-RRs abgeben,
und zwar auch beim Zonentransfer der delegierenden Zone - unabhängig von
den dort für die delegierte Zone angegebenen RRs.
Bei alten BIND-Versionen treten diese Zombie-RRs nicht nur in
als NS-RRs, sondern auch als MX-RRs, A-RRs oder andere Typen von
resource records auf, die an der Zonengrenze existieren
können.
Peter Koch, 1994-10-07, 1994-10-24