Herumgraben im Datenwald

Ein Blick hinter die Kulissen: dig und DNS

01.11.2002
Der Domain Name Service (DNS) übersetzt zwischen benutzerfreundlichen Rechnernamen und computerfreundlichen IP-Adressen. Diesmal wollen wir uns nicht ansehen, wie man das einrichtet, sondern einen Blick hinter die Kulissen werfen. Ein kleines Programm spielt für uns Spion.

Normale Anwender kennen den Domain Name Service als Black Box wie in Abbildung 1. Irgendwann einmal richtet man den Dienst ein – heutzutage oft vollautomatisch, indem man die Übermittlung von DNS-Daten beim Aufbau einer Internet-Verbindung via PPP aktiviert. Anschließend kann man beliebige Hostnamen eingeben, und der Computer weiß bzw. erfragt automatisch die zugehörige IP-Adresse. Natürlich funktioniert das (meistens) auch umgekehrt: Zu einer IP-Adresse kann der eigene Rechner den symbolischen Namen herausfinden.

Abbildung 1: DNS als Black Box

Bei solch einer typischen Konfiguration kümmert sich der eigene Computer tatsächlich nicht weiter darum, wie DNS funktioniert. Er schickt eine Anfrage an irgendeine vorgegebene Adresse und bekommt von dort auch die Antwort. Freilich steht an dieser "vorgegebenen Adresse", irgendwo bei einem beliebigen Internet-Provider, meistens ebenfalls ein Linux-Rechner. Woher bekommt der die Daten?

Der Domain Name Service ist ein hierarchisches System. Kein Computer bei T-Online, bei der amerikanischen Regierung oder sonstwo könnte jemals die IP-Adressen aller Computer im Internet speichern. Die Größe solch einer Datenbank wäre noch das kleinere Problem: Wie wollte man die Daten aktuell halten? Hier wird ein neuer Rechner gekauft, dort wechselt ein Laptop nach dem Umstöpseln der Netzwerkkarte seine IP-Adresse.

DNS löst diese Problematik nach dem Motto "teile und herrsche": Jedermann kann einen DNS-Server aufsetzen, der aber immer nur für den eigenen kleinen Teil des Internets zuständig ist. Beispielsweise hat die Uni Trier einen eigenen DNS-Server, der nur für Adressen im Bereich uni-trier.de zuständig ist. Man sagt: Er ist für diesen Bereich autoritativ (englisch: authoritative, maßgeblich). Wenn also jemand die Adresse von www.uni-trier.de sucht, fragt er den DNS-Server, der für uni-trier.de verantwortlich ist (siehe Abbildung 2).

Abbildung 2: DNS-Server der Uni Trier

Der zwischengeschaltete DNS-Server des Internet-Providers nimmt hier die Anfrage entgegen und leitet sie an den eigentlich zuständigen Server weiter; dann nimmt er dessen Antwort und leitet sie an den ursprünglich fragenden Computer weiter. Er weiß selbst praktisch nichts bzw. nur sehr wenig über das Netz, sondern beschränkt sich auf das Weiterleiten (englisch Forwarding) von Anfragen. Daher wird er auch Forwarding Name Server genannt. Selbstverständlich ist er redundant: Wenn Sie wollen, richten Sie auf Ihrem Computer einen eigenen DNS-Server ein und verzichten auf den des Internet-Providers. Darauf gehen wir an dieser Stelle aber nicht weiter ein.

Spionage in Aktion

Stattdessen wollen wir den versprochenen Spion einmal ausprobieren. Das kleine Hilfsprogramm dig schickt eine Anfrage an einen Domain Name Server und zeigt die Antwort ganz ausführlich an.

dig ist eigentlich ein Teil des BIND-Distribution und soll das Testen eines Name-Servers erleichtern. Uns verrät es nebenbei eine Menge Interna.

dig starten Sie an der Kommandozeile, z. B. in einem Terminal-Fenster. (Ist das Programm nicht installiert, finden Sie es meist in einem Paket namens bind-utils.) Als Argument übergeben Sie den gesuchten Hostnamen bzw. eine IP-Adresse. Optional ist die Angabe eines Name-Servers nach einem Klammeraffen @, dann wird statt des voreingestellten Name-Servers ein anderer Rechner abgefragt. Als letztes Argument darf noch ein Abfragetyp festgelegt werden, so dass nicht nur eine Adresse, sondern noch andere oder zusätzliche Informationen ausgegeben werden.

dig @name.server.org host.name.com any

Ein Beispiel finden Sie in Listing 1. Gezeigt wird eine Anfrage an einen Name-Server von T-Online (dns00.btx.dtag.de) nach dem Hostnamen www.uni-trier.de. Das Ergebnis orientiert sich in seinem Format an einer BIND-Konfigurationsdatei; dabei sind Kommentare durch Strichkommata am Anfang der Zeile gekennzeichnet.

dig wiederholt zunächst seine Argumente und stellt anschließend die Antwort vom Server in halbwegs verständlicher Form dar. Diese besteht hier aus einem Header und vier Abschnitten: Der Anfrage (QUERY SECTION), der Antwort im engeren Sinne (ANSWER), dem Authority-Abschnitt sowie zusätzlichen Daten (ADDITIONAL SECTION).

Listing 1

Beispiel für eine

dig

-Anfrage

nathan:~ $ dig @dns00.btx.dtag.de www.uni-trier.de
; <<>> DiG 8.3 <<>> @dns00.btx.dtag.de www.uni-trier.de
; (1 server found)
;; res options: init recurs defnam dnsrch
;; got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 5, ADDITIONAL: 6
;; QUERY SECTION:
;;      www.uni-trier.de, type = A, class = IN
;; ANSWER SECTION:
www.uni-trier.de.       1D IN CNAME     maui.uni-trier.de.
maui.uni-trier.de.      1D IN A         136.199.8.62
;; AUTHORITY SECTION:
uni-trier.de.           1h49m49s IN NS  dns.uni-trier.de.
uni-trier.de.           1h49m49s IN NS  dns2.uni-trier.de.
uni-trier.de.           1h49m49s IN NS  rzsun02.uni-trier.de.
uni-trier.de.           1h49m49s IN NS  ws-was.win-ip.dfn.de.
uni-trier.de.           1h49m49s IN NS  deneb.dfn.de.
;; ADDITIONAL SECTION:
dns.uni-trier.de.       4h12m47s IN A   136.199.8.101
dns2.uni-trier.de.      4h12m47s IN A   136.199.8.129
rzsun02.uni-trier.de.   4h12m47s IN A   136.199.8.224
ws-was.win-ip.dfn.de.   16h43m53s IN A  193.174.75.126
ws-was.win-ip.dfn.de.   16h43m53s IN A  193.174.75.110
deneb.dfn.de.           15h31m36s IN A  192.76.176.9
;; Total query time: 633 msec
;; FROM: nathan to SERVER: dns00.btx.dtag.de  194.25.2.132
;; WHEN: Mon Sep 16 15:08:55 2002
;; MSG SIZE  sent: 34  rcvd: 292
nathan:~ $

Die Anfrage war hier nach www.uni-trier.de, Typ A, Klasse IN. Der Typ zeigt die Art des Ergebnisses, in diesem Fall eine numerische IP-Adresse. Wichtige Datentypen sind in Tabelle 1 aufgelistet; all diese Typen lassen sich durch ein entsprechendes Argument an dig auch direkt abfragen. Die Klasse IN steht für "Internet" und ist die einzige Klasse, die in unseren Beispielen vorkommen wird.

Tabelle 1: Wichtige Datentypen im DNS

Abkürzung Erklärung
A IP-Adresse. Ein Hostname darf auf mehrere IP-Adressen zeigen!
CNAME Alias: Ein Hostname zeigt auf einen anderen Hostnamen, erst dieser zeigt auf eine IP-Adresse.
PTR Pointer: Eine IP-Adresse zeigt auf einen Hostnamen.
MX Mail Exchange: Welcher Server nimmt E-Mail für die betreffende Domain entgegen?
NS Gibt einen Name-Server an, der für eine bestimmte Adresse oder einen ganzen Adressbereich autoritative Daten vorhält.
SOA "Start Of Authority": Die hier gezeigten Daten gelten für alle folgenden Adressen. Derartige Einträge enthalten Gültigkeitszeiten und verweisen über eine E-Mail-Adresse auf den verantwortlichen Hostmaster, auf den Menschen also, der die Daten pflegt.
ANY Ein Pseudo-Datentyp, den Sie dig übergeben, wenn Sie einfach alle verfügbaren Daten auflisten wollen.

In der ANSWER SECTION folgen die eigentlich abgefragten Daten. Dieser Abschnitt darf fehlen! Wenn ein Name-Server die Antwort nicht kennt, aber auf einen anderen Name-Server verweisen kann, der vermutlich mehr weiß, liefert er ein Ergebnis zurück, das keine Answer Section enthält.

Stattdessen steht in der folgenden AUTHORITY SECTION die Information darüber, welcher (oder welche) Name-Server für den betreffenden Adressbereich autoritative Daten vorhalten. In unserem Beispiel kennt dns00.btx.dtag.de zwar die Antwort auf die Frage und liefert ein Ergebnis zurück: www.uni-trier.de ist ein CNAME (Spitzname) für maui.uni-trier.de, und dieser Rechner hat die IP-Adresse 136.199.8.62. Autoritative, also garantiert richtige Daten, kann man jedoch nur von den übrigen aufgelisteten Name-Servern erhalten, also von dns.uni-trier.de, dns2.uni-trier.de usw.

Die einzelnen Datenzeilen enthalten neben Hostname, Klasse, Datentyp und "Inhalt" (IP-Adresse oder ein weiterer Hostname) noch eine Zeitangabe, z. B. 1D (ein Tag) oder 16h43m53s (16 Stunden, 43 Minuten, 53 Sekunden). Dies ist ein Mindesthaltbarkeitsdatum für die angegebenen Daten: Mindestens für diese Zeit bleibt der "Inhalt" der Datenzeile gültig, danach muss er aufgefrischt werden.

Es folgt ein Abschnitt mit zusätzlichen Infos, in denen die IP-Adressen der weiteren erwähnten Hosts zurückgeliefert werden. So könnten wir beispielsweise dns.uni-trier.de direkt ansprechen und müssten dann nicht im nächsten Schritt versuchen, dessen IP-Adresse herauszufinden.

Kasten 1:

dig

und Ihre Firewall

Als verantwortungsbewusster Netzbewohner haben Sie Ihren Computer vermutlich mit einem Paketfilter (einer "Firewall") ausgestattet. Sofern Sie keinen eigenen DNS-Server betreiben, sollte dieser Filter DNS-Anfragen nur an den DNS-Server Ihres Internet-Providers zulassen und auch Antworten nur von dessen IP-Adresse erlauben.

Wenn Sie die Beispiele aus diesem Artikel nachvollziehen möchten, müssen Sie folglich Ausnahmeregeln definieren, die einen fast beliebigen Austausch von DNS-Daten genehmigen. Unnötig zu sagen, dass dies für einen echten Server nicht empfehlenswert ist und nur für die Dauer der Experimente aktiv bleiben sollte!

Für iptables (Linux seit Kernel-Version 2.4) lauten die entsprechenden Befehle, die als root auszuführen sind:

iptables -I OUTPUT 1 -p udp --dport 53 -j ACCEPT
iptables -I INPUT  1 -p udp --sport 53 -j ACCEPT

Sofern Sie noch ipchains verwenden (Linux 2.2), ersetzen Sie iptables durch ipchains und schreiben die Namen INPUT und OUTPUT in Kleinbuchstaben:

ipchains -I output 1 -p udp --dport 53 -j ACCEPT
ipchains -I input  1 -p udp --sport 53 -j ACCEPT

Durch Bäume klettern

Eine wichtige Frage ist bislang noch unbeantwortet. dns.uni-trier.de kennt also "autoritative" Daten für die Domain uni-trier.de. Aber woher wissen wir das? Bzw. woher weiß dns00.btx.dtag.de das?

Für die Antwort muss man sich hierarchisch durch den DNS-"Baum" hindurch hangeln. In Abbildung 3 ist dieser Baum traditionsgemäß mit der Wurzel oben dargestellt: Der Name dieser Wurzel-Domain ist ein einfacher Punkt. Unmittelbar nachgeordnet sind die so genannten Top-Level-Domains wie z. B. de, com, net und org. Die Root-Server oder "Wurzel-Server" verfügen über autoritative Daten für diese Wurzel-Domain, sie wissen also, welche Server beispielsweise Auskunft über die Top-Level-Domain de geben können.

Abbildung 3: Der DNS-Baum

Damit es kein Henne-und-Ei-Problem gibt, sind die Root-Server fest vordefiniert. Sie tragen Namen wie a.root-servers.net, b.root-servers.net usw. und sind quer über den ganzen Erdball verteilt. Ihre IP-Adressen haben sich seit Jahren nicht mehr geändert; jeder Root-Server kennt sie. Zusätzlich sind diese IPs in einer weit verbreiteten "Hints"-Datei ("Tipps") abgelegt, die jeder Name-Server als Ausgangsbasis nutzt.

Diese Root-Server sind einer enormen Belastung ausgesetzt; ohne sie würde im Internet kaum etwas funktionieren. Zwar beantworten sie immer nur die ewig gleichen Anfragen ("wer ist autoritativ für de?"), aber das mit enormer Frequenz. Für Listing 2 wurde ein Root-Server mit dig belästigt. Sie sehen: Eine große Top-Level-Domain wie Deutschland kommt selbstverständlich nicht mit einem einzigen autoritativen Server aus. Um die Belastung ein wenig zu verteilen, sind momentan nicht weniger als sieben Server im Einsatz. Alle diese beantworten öffentliche Anfragen nach Domains innerhalb Deutschlands.

Listing 2

Wer ist autoritativer Server für

de

?

nathan:~ $ dig @a.root-servers.net de
; <<>> DiG 8.3 <<>> @a.root-servers.net de
; (1 server found)
;; res options: init recurs defnam dnsrch
;; got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 7, ADDITIONAL: 7
;; QUERY SECTION:
;;      de, type = A, class = IN
;; AUTHORITY SECTION:
de.                     2D IN NS        AUTH03.NS.DE.UU.NET.
de.                     2D IN NS        DNS.DENIC.de.
de.                     2D IN NS        SUNIC.SUNET.SE.
de.                     2D IN NS        DNS.NIC.XLINK.NET.
de.                     2D IN NS        SSS-AT.DENIC.de.
de.                     2D IN NS        SSS-NL.DENIC.de.
de.                     2D IN NS        DNS2.DENIC.de.
;; ADDITIONAL SECTION:
AUTH03.NS.DE.UU.NET.    2D IN A         192.76.144.16
DNS.DENIC.de.           2D IN A         194.246.96.79
SUNIC.SUNET.SE.         2D IN A         192.36.125.2
DNS.NIC.XLINK.NET.      2D IN A         193.141.40.42
SSS-AT.DENIC.de.        2D IN A         193.171.255.34
SSS-NL.DENIC.de.        2D IN A         193.0.0.237
DNS2.DENIC.de.          2D IN A         194.246.96.49
;; Total query time: 175 msec
;; FROM: nathan to SERVER: a.root-servers.net  198.41.0.4
;; WHEN: Mon Sep 16 15:09:40 2002
;; MSG SIZE  sent: 20  rcvd: 306
nathan:~ $

Wenn ein Name-Server auf der Suche nach einer IP-Adresse vom Root-Server eine autoritative Datenquelle für de erfahren hat, fragt er dort nach dem zuständigen Server für die nächste Verzweigung, z. B. nach uni-trier.de. Bei noch längeren Hostnamen wird dieser Prozess immer weiter fortgesetzt – bis irgendwann der letzte Knoten erreicht ist: die gewünschte Adresse selbst. Abbildung 4 zeigt diesen Prozess aus Sicht des einzelnen Name-Servers.

Abbildung 4: Eine vollständige DNS-Abfrage

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

  • Verzeichnisdienst whois
    Das Internet bietet eine Fülle von Informationen. Dazu gehören auch Auskünfte über den zugehörigen Anbieter in Form von Kontaktinformationen zu Domains und IP-Adressen. Freilich sollte man wissen, wie man darauf zugreift.
  • Stets gut informiert
    Deutsche Webseiten bieten meist ein Impressum mit wichtigen Informationen zum Anbieter – das gilt aber nicht immer, und für ausländische Seiten erst recht nicht. Kommandozeilentools für Linux geben die gesuchte Auskunft.
  • Addon überprüft DNSSec-Status

    Die holländischen Studenten Danny Groenewegen und Pieter Lange schrieben für ihre Master-Arbeit den "Extended DNSSec Validator", mit dem Firefox-Nutzer der Idee nach die Identität besuchter Webseiten überprüfen.
  • Bin ich schon drin?
    Wenn Sie über einen Router mit DHCP ins Internet gehen, können Sie im Handumdrehen ein Heimnetzwerk aufbauen. Was aber tun, wenn Sie eine feste IP-Adresse brauchen?
  • Paketfilter-Firewall
    Eine Firewall sollte heutzutage zum unverzichtbaren Sicherheitsrepertoire jedes vernetzten Computers gehören. Aktuelle Linux-Distributionen liefern die Software dazu mit – man muss sie nur benutzen können.
Kommentare

Infos zur Publikation

LU 11/2014: VIDEOS BEARBEITEN

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Schnell Multi-Boot-Medien mit MultiCD erstellen
Schnell Multi-Boot-Medien mit MultiCD erstellen
Tim Schürmann, 24.06.2014 12:40, 0 Kommentare

Wer mehrere nützliche Live-Systeme auf eine DVD brennen möchte, kommt mit den Startmedienerstellern der Distributionen nicht besonders weit: Diese ...

Aktuelle Fragen

Artikelsuche
Erwin Ruitenberg, 09.10.2014 07:51, 1 Antworten
Ich habe seit einige Jahre ein Dugisub LinuxUser. Dann weiß ich das irgendwann ein bestimmtes Art...
Windows 8 startet nur mit externer Festplatte
Anne La, 10.09.2014 17:25, 4 Antworten
Hallo Leute, also, ich bin auf folgendes Problem gestoßen: Ich habe Ubuntu 14.04 auf meiner...
Videoüberwachung mit Zoneminder
Heinz Becker, 10.08.2014 17:57, 0 Antworten
Hallo, ich habe den ZONEMINDER erfolgreich installiert. Das Bild erscheint jedoch nicht,...
internes Wlan und USB-Wlan-Srick
Gerhard Blobner, 04.08.2014 15:20, 2 Antworten
Hallo Linux-Forum: ich bin ein neuer Linux-User (ca. 25 Jahre Windows) und bin von WIN 8 auf Mint...
Server antwortet mit falschem Namen
oin notna, 21.07.2014 19:13, 1 Antworten
Hallo liebe Community, Ich habe mit Apache einen Server aufgesetzt. Soweit, so gut. Im Heimnet...