Domain Name System (vgl.: DNS) ist das Telefonbuch des Internets. Wir benutzen es, um für uns sprechende Namen – aka Domänen – einer IP Adresse zuzuordnen. Die prinzipielle Arbeitsweise habe ich früher schon mal dargestellt – du kannst es hier, hier auch und auch hier, nachlesen. Dieses Mal möchte ich mich vorrangig mit der DNS Funktionalität der Weiterleitung beschäftigen.
Eine DNS Weiterleitung verbessert die Leistung und schafft auch bedingt einen Lastausgleich. Eine Weiterleitung macht Dein Netzwerk widerstandsfähiger. Es bietet eine Möglichkeit, Namespaces oder Ressourceneinträge, die nicht in der Zone eines lokalen DNS-Servers enthalten sind, an den Remote-DNS-Server zur Auflösung von Namensabfragen sowohl innerhalb als auch außerhalb eines Netzwerks weiterzugeben.
Es gibt zwei Methoden, die ich beschreiben werde: Weiterleitung und bedingte Weiterleitung (vgl.: conditional forwarding). Um die Vorteile von Conditional Forwarding zu verstehen, müssen wir zuerst verstehen, wie die Weiterleitung an sich funktioniert.
Weiterleitung
In einem einfachen Beispiel sendet eine DNS-Weiterleitung Namensabfragen externer Domänen zur Auflösung an einen definierten Remote-DNS-Server außerhalb des eigenen lokalen Netzwerks. Interne Namensabfragen werden vom internen DNS-Server bearbeitet. So schaut zumindest die graue Theorie aus.
Die Abbildung stellt den Ablauf einer Abfrage dar, wenn es nicht die eigene Domäne ist. In einem ersten Schritt fragt der Client seinen internen DNS Server – im Regelfall ist das ein Windows Server in einer Windows Domäne mit der DNS Rolle. Dieser Server kann aber den Domänennamen nicht seinem lokalen Domänennamen zuordnen. Die abgefragte Domäne hat einen anderen Namen. Dafür ist in der Konfiguration des DNS eine Weiterleitungsadresse vorgesehen. An diese Weiterleitungsadresse reicht der interne Webserver die Client Anfrage weiter. Damit landet die Anfrage in der demilitarisierten Zone (vgl.: DMZ – besonders abgesicherter Bereich im internen Netzwerk, das direkten Kontakt nach draussen hat). Der Weiterleitungsserver kann entweder die Anfrage bedienen, oder geht jetzt den langen Weg. Der lange Weg ist zuerst über eine Abfrage bei den Root Servern herauszufinden, wo der eigentliche Domänen Name hingehört in dem hierarchischen Domänen Namen Baum. Ergebnis ist, dass der Weiterleitungsserver die Adresse des zuständigen DNS für diese Domäne bekommt. An diese Adresse leitet der Weiterleitungsserver die eigentlich Anfrage des Clients nun weiter. Von dort bekommt dann auch der Weiterleitungsserver die Antwort auf die ursprüngliche Client Abfrage. Das Ergebnis reicht der Forwarder an den internen DNS dann weiter und dieser reicht die Adresse zu dem Domänen Namen dann an den Client wieder zurück. Damit kann der Client nun, wenn die Abfrage erfolgreich war, zum Beispiel im Browser die Seite aufrufen.
Die übliche Konfiguration
Die Abbildung zeigt die Konfiguration in den meisten Fällen. Als Weiterleitungsserver dient im Regelfall der DNS des Providers. Damit ist der Provider, und jeder der Zugang hat, in der Lage mitzulesen, welche Adressen im Internet aufgerufen werden. Es ist auch möglich die Antworten durch den Provider zu manipulieren. Damit können Anfragen auf andere Adressen umgeleitet oder ganz gesperrt werden. Wenn man in diesem Fall den DNS des Providers benutzt. Man kann das auch selber feststellen, wie folgend beschrieben.
Im ersten Schritt frage ich hier die Domäne „kinox.to“ ab und verwende dazu den DNS von Magenta Telekom Österreich. Die Antwort ist, dass aus rechtlichen Gründen die Domäne nicht vorhanden ist im Magenta DNS. (So in etwa – es gab ein Verfahren bezüglich Urheberrechtsverletzung durch den Domänenbetreiber und die Provider wurde vom Richter in die Pflicht genommen diese Domäne zu sperren.)
stefan@MBP3 ~ % dig @195.58.161.123 kinox.to
; <<>> DiG 9.10.6 <<>> @195.58.161.123 kinox.to
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7036
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;kinox.to. IN A
;; ANSWER SECTION:
kinox.to. 360 IN CNAME unavailable.for.legal.reasons.
unavailable.for.legal.reasons. 225 IN A 212.166.122.119
;; Query time: 73 msec
;; SERVER: 195.58.161.123#53(195.58.161.123)
;; WHEN: Mon Jul 25 12:16:17 CEST 2022
;; MSG SIZE rcvd: 96
In einem zweiten Schritt verwende ich einen anderen, ungefilterten, DNS, wie zum Beispiel den von Cloudflare. Ungefiltert stimmt hier auch nur bedingt, aber das führt hier zu weit.
stefan@MBP3 ~ % dig @1.1.1.1 kinox.to
; <<>> DiG 9.10.6 <<>> @1.1.1.1 kinox.to
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44503
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;kinox.to. IN A
;; ANSWER SECTION:
kinox.to. 300 IN A 188.114.96.12
kinox.to. 300 IN A 188.114.97.12
;; Query time: 62 msec
;; SERVER: 1.1.1.1#53(1.1.1.1)
;; WHEN: Mon Jul 25 12:16:39 CEST 2022
;; MSG SIZE rcvd: 69
Hier bekomme ich eine ungefilterte Antwort mit der Adresse der in Österreich verbotenen Domäne. Sinnhaftigkeit und Effektivität der Massnahme wurden in dem Verfahren von Providerseite dargestellt.
Wie weiter oben beschrieben erfolgt die Zuordnung von IP Adresse zu Domäne in mehreren Schritten. Beide Verfahren, die der Weiterleitung und die der bedingten Weiterleitung, halten sich an eine Vorgehensweise, die aber im Detail voneinander abweicht.
Rekursive Namens Abfrage
Eine weitergeleitete Abfrage ist dann rekursiv, wenn folgendes zutrifft. In diesem Szenario fordert der (DNS) Client, dass der DNS Server entweder mit dem angeforderten Ressourceneintrag oder einer Fehlermeldung antwortet. Die Fehlermeldung besagt, dass der Datensatz oder Domänen Name nicht vorhanden ist. Der DNS Server kann den (DNS) Client nicht einfach an einen anderen DNS-Server verweisen.
Interative Namens Abfrage
Der (DNS) Client ermöglicht es dem DNS Server, die beste Antwort zurückzugeben. Diese Information bezieht der DNS Server entweder aus seinem Cache, oder Zonendate, wenn vorhanden. Diese Vorgehen kann in mehreren Zyklen, Schritten, erfolgen, deswegen die Bezeichnung iterativ.
DNS Server, die eine Server für eine Weiterleitung definiert haben, reagieren anders, als solche DNS Server, die keine Weiterleitung verwenden. Hier nochmals eine Beschreibung, wie ein DNS Server arbeitet, wenn er die Weiterleitungsfunktion verwendet.
- Wenn der DNS Server eine Anfrage bekommt, um einen Namen einer Adresse zuzuordnen, eigentlich aufzulösen, dann schaut der Server zuerst in seinen primären Zonen nach, dann in seinen sekundären Zonen und zum Schluss in seinem Zwischenspeicher, aka Cache.
- Kann der DNS Server den Namen nicht auflösen unter Verwendungen von seinen Zonendateien und Zwischenspeicher, dann gibt er die Anfrage an den definierten Weiterleitungsserver weiter. Ein Resultat ist, dass in diesem Fall nicht die Root Zonen Datei für die Auflösung verwendet wird.
- Antwortet der Weiterleitungsserver aber nicht in angemessener Zeit, dann reicht der interne DNS Server die Anfrage doch an die DNS Server weiter, die in der Root Zonen Datei stehen.
Dann gibt es aber auch noch die bedingte Weiterleitung. Diese ermöglicht es, die Namensauflösung zwischen internen (privaten) DNS Namespaces zu verbessern, die nicht Teil des DNS Namespace des Internets sind, z. B. Ergebnisse einer Unternehmensfusion, Test- und Entwicklungsumgebungen.
Bedingte Weiterleitung
Bedingte Weiterleitungen sind DNS Server, die nur Abfragen für bestimmte Domain Namen weiterleiten. Anstatt alle Abfragen weiterzuleiten, die der DNS Server nicht lokal auflösen kann, wird ein bedingter Weiterleitungs DNS Serverso konfiguriert, dass eine Abfrage basierend auf dem in der Abfrage enthaltenen Domänennamen an bestimmte Weiterleitungsadressen weitergeleitet wird. Die Weiterleitung nach Domainnamen verbessert die herkömmliche Weiterleitung, indem dem Weiterleitungsprozess eine namenbasierte Bedingung hinzugefügt wird.
Anhand zweier Beispiele, bei denen Conditional Forwarding wirklich nützlich ist, möchte ich das erklären. Das erste Beispiel ist ein interner Name und das zweite ist ein externes Namensauflösungsszenario.
Beispiel 1 – Internet Namens Auflösung
Wenn ein DNS-Server, der mit einer bedingten Weiterleitung konfiguriert ist, eine Abfrage für einen Domänen Namen erhält, vergleicht er diesen Domänen Namen mit seiner Liste der Domänen Namen Bedingungen und verwendet die längste Domain Namen Bedingung, die dem Domänen Namen in der Abfrage entspricht. In der folgenden Abbildung führt der DNS Server beispielsweise die folgende bedingte Weiterleitungslogik durch, um zu bestimmen, wie eine Abfrage nach einem Domänen Namen weitergeleitet wird:
- Der DNS Server erhält eine Anfrage für die Domäne intern.netzwerk.imatrix.at.
- Der DNS Server vergleicht den Domänen Namen mit seinen Zonen imatrix.at und netzwerk.imatrix.at.
- Der DNS Server entscheidet, dass netzwerk.imatrix.at mehr der abgefragten Domäne entspricht, als imatrix.at.
- Der DNS Server leitet die Anfrage an den dafür definierten DNS Server weiter.
Beispiel 2: Internet Namens Auflösung
DNS Server können bedingte Weiterleitungen verwenden, um Abfragen zwischen den DNS Domänen Namen von Unternehmen aufzulösen, die Informationen gemeinsam nutzen. Zum Beispiel wollen zwei Unternehmen, Wasser GmbH und Luft GmbH, verbessern, wie die DNS Clients von der Wasser GmbH die Namen der DNS Clients von Luft GmbH auflösen. Die Administratoren von der Wasser GmbH informieren die Administratoren von der Luft GmbH über den Satz von DNS Servern im Wasser GmbH Netzwerk, wohin Clients der Luft GmbH Abfragen für die Domain hahn.wasser.com senden können. Die DNS-Server im Luft GmbH Netzwerk sind so konfiguriert, dass alle Abfragen nach Namen, die mit hahn.wasser.com enden, an die designierten DNS-Server im Netzwerk für die Wasser GmbH weitergeleitet werden. Folglich müssen die DNS-Server im Luft GmbH Netzwerk ihre internen Root-Server oder die Internet-Root-Server nicht abfragen, um Abfragen nach Namen aufzulösen, die mit hahn.wasser.com enden.
Das Ergebnis ist eine bessere Leistung, weniger Netzwerkbandbreite und zufriedenere Endbenutzer, da ihre Namens Abfragen zwischen verschiedenen Domänen schneller gelöst werden.
Vorteile bedingter Weiterleitung
Bedingte Weiterleitung führt zu einem sichereren, schnelleren, intelligenteren und zuverlässigeren Internet. Wenn ein DNS Server eine Abfrage an einen Weiterleitungsserver weiterleitet, sendet er eine rekursive Abfrage an den Weiterleitungsserver. Dies unterscheidet sich von der iterativen Namensabfrage, die ein DNS Server während der Standard Namens Abfrageauflösung an andere DNS Server sendet (Namensauflösung, die keinen Weiterleitung beinhaltet).
Durch die Konfiguration der DNS Server in einem internen Namespace, um Abfragen an die autoritativen DNS-Server in einem zweiten internen Namespace weiterzuleiten, ermöglichen bedingte Weiterleitungen die Namensauflösung zwischen den beiden Namespaces, ohne iterative Namensabfragen im DNS-Namespace des Internets durchzuführen, was zu einer besseren Leistung und Nutzung von DNS-Servern und reduziertem Datenverkehr in einem LAN-Subnetz führt.
Ein LAN ist ein Computernetzwerk, das Computer in einem begrenzten Bereich wie einem Wohnsitz, einer Schule, einem Labor oder einem Bürogebäude verbindet. Ein lokales Netzwerk steht im Prinzip einem Weitverkehrsnetz (WAN) gegenüber, in dem zwei oder mehrere LANs verbunden sind und somit eine größere geografische Entfernung abdecken und geleaste Telekommunikationsschaltungen beinhalten können, während die Medien für LANs lokal verwaltet werden.
Wenn Du einen DNS Server als Weiterleitung festlegst, machst du diesen Weiterleitungsdienst für den Umgang mit externem Datenverkehr verantwortlich und begrenzt so die Exposition des DNS-Servers gegenüber dem Internet. Verständlich ausgedrückt – die Angriffsfläche nach außen wird kleiner. Ein Betreiber eines DNS als Weiterleitungsziel baut einen großen Cache mit externen DNS Informationen auf, da alle externen DNS Abfragen im Netzwerk über ihn aufgelöst werden. In kurzer Zeit wird ein Weiterleitungsender in der Lage sein, einen guten Teil der externen DNS Abfragen mit diesen zwischengespeicherten Daten aufzulösen und dadurch den Internetverkehr über das Netzwerk und die Antwortzeit für DNS Clients zu verringern. Infolgedessen wird die Verwendung von Root-Hinweisen stark reduziert.
Schlussbemerkung
Das DNS Protokoll ist ein wichtiger Teil der Infrastruktur des Webs und dient als Telefonbuch des Internets: jedes Mal, wenn du eine Website besuchst, führt dein Computer eine DNS Suche durch. Komplexe Seiten erfordern oft mehrere DNS Suchen, bevor sie mit dem Laden beginnen können, so dass dein Computer möglicherweise Hunderte, wenn nicht sogar Tausende, von Suchabfragen pro Tag durchführt. DNS Conditional Forwarding kann eine höhere Leistung und Sicherheit bieten.