Conditional Forwarder Probleme in Windows Server 2008 R2


Ich habe kürzlich bei einem Kunden die gesamte Domänen- Infrastruktur von Windows 2003 Server auf Windows Server 2008 R2 im nativen R2 Modus gehoben.

So weit so gut, es lief alles wie erwartet. Der Kunde, der mehrere Netzwerkverbindungen zu Lieferanten hat, meldete jedoch Probleme mit Webapplikationen seiner Lieferanten. Konkret “froren” die Applikationen immer wieder ein, unabhängig vom Browser. Teilweise waren sie gar nicht aufrufbar, oder nur nachdem man mehrmals die Refresh Funktion des Browsers betätigt hatte. Relativ schnell wurde klar dass dies etwas mit der Umstellung auf Windows Server 2008 R2 zu tun haben musste.

Ich ging daher daran dem Weg des Browsers nachzugehen. Da im Internet alles über Namen passiert, nahm ich die DNS Konfiguration näher unter die Lupe. Klar stellte der Kunde fest, das es vor der Umstellung immer lief ๐Ÿ™‚

Die besagten Webapplikationen wurden über DNS Namen aufgerufen. Da die Namensverwaltung der Applikationen in der Herrschaft der Lieferanten lag, hatte ich lediglich 2 Anhaltspunkte:

  1. Der Lieferant hatte was geändert
  2. Die Übergabe der Namensauflösung an den Lieferanten von den internen Clients her hatte ein Problem

Natürlich versuchte ich zuerst den Fehler beim Lieferanten zu finden. Dies war jedoch nicht wirklich leicht, da der Lieferant die Dienste in Asien hostet und die Kommunikation zum Lieferanten sich daher relativ schwer gestaltete. Ich denke ihr kennt das Problem- ihr steht einem Internationalen Unternehmen mit einer unglaublich grossen IT Landschaft gegenüber und die Wege die richtige Person in deren Organisation zu finden, gestalten sich mehr als schwer.

Der Kunde schloss das Problem auf Seite Lieferant aus- schliesslich lief es ja vor der Umstellung.

Ich ging also daran die interne DNS Struktur auseinander zu nehmen.

Der Client registrierte sich auf einem DNS in seiner Zone, eine Active Directory integrierte Zone einer Child Domain. Falls die Anfragen nicht beantworten werden konnten, wurden diese an die Root Domain übergeben und schliesslich dann weiter ins Internet. Da die Hersteller Applikationen jedoch nicht übers Internet aufgelöst wurden, bestanden auf dem DNS Conditional Forwarder auf 2 DNS Server der Lieferanten. Diese 2 DNS Server sind über eine dedizierte Netzanbindung zwischen Kunde und Lieferant ansprechbar.

Ich pickte mir einige dieser DNS Namen raus und versuchte diese zu pingen. Meist war ich erfolgreich, nur manchmal war der Namen plötzlich nicht mehr auflösbar um dann 30 Sekunden später wieder auflösbar zu sein:

Es war nicht so das ich einen Timeout erhalten habe, sondern der Name war komplett nicht mehr auflösbar.

Das hat die Lage natürlich nicht erleichtert, da es generell zu funktionieren schien- aber halt nicht immer. Auch schien es Schwankungen in der Stärke des Problems zu geben, nur auch diese nicht rekonstruierbar oder irgendwie auf ein Muster anwendbar. Da der Kunde mit immer grösseren Problemen konfrontiert wurde und daher natürlich auch die Benutzer ihren Unmut an der Hotline äusserten- entschloss ich mich kurzfristig in der Child Domain eine neue Zone zu errichten und die Hosts des Herstellers statisch einzutragen. Die Conditional Forwarder entfernte ich. Nun schien auch kein Problem mehr da zu sein, die Applikationen liefen einwandfrei und die Namensauflösung klappte wunderbar. Doch es wäre nicht IT wenn sich dies nicht schnell wieder geändert hätte. Einige Tage danach hatte der Hersteller einigen der Hosts neue IP Adressen vergeben- mit den statischen Einträgen in unserer DNS Zone passte dies natürlich nicht mehr überein und die Applikationen waren somit gar nicht mehr erreichbar.

Es musste also eine andere Lösung her und ich ging nochmals daran raus zu finden was das Probem mit den Conditional Forwarder sein könnte. Ich nahm mir also Bing zur Hand und durchsuchte das Internet nach Artikeln zu DNS Conditional Forwarder Problemen nach der Migration von 2003 zu 2008. Und ich wurde fündig ๐Ÿ™‚

In Windows 2003 DNS wurde eine Funktion hinzugefügt die sich EDNS0 nennt. Dabei geht es darum das der DNS UDP Anfragen senden kann die grösser als der Default Wert von 512 Byte ist: Mit der in RFC 2671 definierten Erweiterung des DNS-Protokolls “EDNS0” (Extension Mechanisms for DNS) können DNS-Anforderer die UDP-Paketgröße ankündigen und Pakete mit mehr als 512 Bytes übertragen.

http://technet.microsoft.com/en-us/library/cc785769(v=WS.10).aspx

Nun ist es aber so, dass nicht alle Systeme, resp. auch Firewalls nicht damit umgehen können. Ich fand dazu den Artikel:

http://support.microsoft.com/kb/832223

Dieser beschreibt genau mein Problem und legt auch nahe das die Firewall das Problem sein könnte. Die EDNS0 lässt sich auf dem DNS Server via Command Line abschalten:

dnscmd /config /enableednsprobes 0

Da ich aber nicht einfach ausschalten wollte, schaute ich mir mit dem Kunden die Firewall Logs an und stiess tatsächlich auf viele Einträge die sagten dass die UDP Pakete von dem internen DNS gedropt wurden, da sie nicht die Standard Grösse hatten und sie die Firewall so als potentiell gefährlich einstufte. Wir schauten uns daher die Firewall Regeln in Richtung Lieferant an und fanden tatsächlich eine Option wie sie in dem KB Artikel beschrieben ist, nämlich das Zulassen von UDP DNS Paketen grösser als 512 Byte. Kaum war der Hacken gesetzt, liefen auch die Webapplikationen anstandslos ๐Ÿ˜€

 

Nun stellte sich natürlich die abschliessende Frage, wieso der Fehler jetzt aufgetreten ist. Schliesslich wurde die Funktionalität in Windows 2003 Server eingeführt und hätte somit schon vorher aktiv sein müssen. Da wir aber keine alten 2003 DC’s mehr hatten- mussten wir davon ausgehen dass die Option auf den alten DNS abgeschaltet wurde, nur hatten wir dies wahrscheinlich bei der Migration übersehen. Eine andere Möglichkeit wäre natürlich noch das die Firewall mal einen Update bekam zum Zeitpunkt der Migration- dies konnte mir der Kunde jedoch nicht schlüssig beantworten.

Nach der Anpassung der Firewall Rule sind nie mehr Fehler diesbezüglich aufgetreten.

 

 

 

 

Comments (0)

Skip to main content