20.4 DNS-Tools 

Unter BSD und Linux stehen Ihnen diverse Tools zur Verfügung, mit denen Sie DNS-Requests durchführen können. Diese Tools sind zum einen äußerst nützlich, wenn es darum geht, einen DNS-Server zu debuggen, und zum anderen, wenn man testen möchte, ob die Konfiguration, die man einem DNS-Server übergeben hat, funktioniert.
20.4.1 host 

Das Tool host kann DNS-Requests an einen Server schicken. Es unterstützt alle gängigen Resource Records und ist IPv6-kompatibel. Außerdem kann es mit verschiedenen DNS-Klassen umgehen. Um den lokalen DNS-Server nach der Adresse des Hosts »eygo.sun« zu fragen, übergibt man host einfach dessen Namen und den DNS-Server der Wahl. In unserem Fall wollen wir den lokalen DNS-Server auf 127.0.0.1 testen:
$ host eygo.sun 127.0.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:
eygo.sun has address 192.168.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:
eygo.sun has IPv6 address fe80::250:bfff:fe11:35a5
eygo.sun has IPv6 address ::1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:
Host eygo.sun not found: 3(NXDOMAIN)
Listing 20.12 Einfaches host-Query
Die letzte Meldung »Host eygo.sun not found« kommt dadurch zustande, dass host auch ein Mail-Exchanger-Lookup durchführt und in unserer DNS-Konfiguration kein MX-Record definiert wurde.
Für den Fall, dass ein Resource Record nicht gefunden werden kann, gibt ein DNS-Server NXDOMAIN zurück. |
Möchte man nun etwas gezielter vorgehen und/oder genauere Angaben von host erhalten, verwendet man natürlich dessen Optionen, die sehr leicht verständlich in der Manpage erklärt sind. Wir wollen hier wenigstens ein Beispiel zeigen, das die wichtigsten dieser Optionen erklärt:
Es sollen detaillierte Informationen (-v) zur IPv6-Adresse (-t AAAA) des Rechners »eygo.sun« über eine IPv6-Verbindung (-6) zum Server mit der IP ::1 ausgegeben werden. Dabei soll die DNS-Klasse »Internet« (-c IN) verwendet werden: |
$ host -v -c IN -t AAAA –6 eygo.sun ::1
Trying "eygo.sun"
Using domain server:
Name: ::1
Address: ::1#53
Aliases:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id:
;; 8778
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2,
;; AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;eygo.sun. IN AAAA
;; ANSWER SECTION:
eygo.sun. 3600 IN AAAA fe80::250:bfff:fe11:35a5
eygo.sun. 3600 IN AAAA ::1
Received 98 bytes from ::1#53 in 4 ms
Listing 20.13 Gezieltes Host-Lookup
Die Ausgaben von host gliedern sich dabei in drei Teile: den DNS-Header, die Question-Section (in der die Frage steht, die host dem DNS-Server stellt) und die Answer-Section, in der die Antworten des DNS-Servers auf diese Frage stehen. Die Ausgaben der Resource Records sind dabei in dem Format gehalten, das auch in der BIND-Konfiguration anzuwenden ist: Hostname, TTL (in diesem Fall 3600 Sekunden), DNS-Klasse (IN), RR-Typ (AAAA) und Wert (in diesem Fall die Adresse).
20.4.2 nslookup 

Interaktive Abfragen
Ein weiteres wichtiges Tool ist nslookup. Es verrichtet im Grunde fast die gleiche Arbeit wie host, ist jedoch interaktiv. Nach dem Programmstart hat man die Möglichkeit, das Verhalten von nslookup zu verändern (diese Möglichkeit besteht auch vor und nach jeder Anfrage, die man mit nslookup an einen DNS-Server sendet).
Zunächst kann man den gewünschten Server via server <server> angeben. Weitere Variablen setzt man über set. Um etwa den DNS-Server 192.168.0.2 nach IPv4-Adress-Records zu fragen, setzt man die Variable type auf »A«.
$ nslookup > server 192.168.0.2 Default server: 192.168.0.2 Address: 192.168.0.2#53 > set type=A > eygo.sun Server: 192.168.0.2 Address: 192.168.0.2#53 Name: eygo.sun Address: 192.168.0.1 > milk.sun Server: 192.168.0.2 Address: 192.168.0.2#53 Name: milk.sun Address: 192.168.0.2
Listing 20.14 nslookup
Möchte man die DNS-Klasse oder den Port des Servers ändern, sollten die Variablen class und port über den set-Befehl angepasst werden. Eine Liste der aktuellen Variablenwerte erhält man über das Kommando set all.
> set class=IN > set port=53 > set all Default server: 192.168.0.2 Address: 192.168.0.2#53 Default server: 194.25.2.129 Address: 194.25.2.129#53 Set options: novc nodebug nod2 search recurse timeout = 0 retry = 3 port = 53 querytype = A class = IN srchlist =
Listing 20.15 nslookup – Teil 2
Auch die Abfrage weiterer Records wie etwa NS oder PTR ist kein Problem. Beendet wird nslookup über den Befehl exit:
> set type=NS > sun Server: 192.168.0.2 Address: 192.168.0.2#53 sun nameserver = milk.sun. > set type=PTR > 192.168.0.1 Server: 192.168.0.2 Address: 192.168.0.2#53 1.0.168.192.in-addr.arpa name = eygo.sun. > exit $
Listing 20.16 nslookup – Teil 3
Via set debug (und bei noch mehr Bedarf über set debug2) liefert Ihnen nslookup eine ganze Menge an zusätzlichen Informationen – ähnlich wie host -v. |
> set debug > set debug2 > set type=A > yorick.sun Server: 192.168.0.2 Address: 192.168.0.2#53 ------------ QUESTIONS: yorick.sun, type = A, class = IN ANSWERS: -> yorick.sun internet address = 192.168.0.5 AUTHORITY RECORDS: ADDITIONAL RECORDS: ------------ Name: yorick.sun Address: 192.168.0.5
Listing 20.17 Debug-Modus
20.4.3 dig 

Das Tool dig verrichtet wiederum im Wesentlichen dieselben Aufgaben wie host und nslookup und wird daher hier nur der Vollständigkeit halber erwähnt.
20.4.4 whois 

Ein völlig anderes Tool ist whois. Dieses Programm richtet keine Anfrage an einen DNS-Server, sondern an eine sogenannte Whois-Datenbank, in der Domain-Informationen gespeichert sind. Über dieses Tool erhalten Sie Informationen über den Eigentümer einer Domain, den eventuellen Service-Provider dieser Domain oder die Nameserver einer Domain.
$ whois google.net Whois Server Version 1.3 [3 Zeilen Text entfernt] Domain Name: GOOGLE.NET Registrar: ALLDOMAINS.COM INC. Whois Server: whois.alldomains.com Referral URL: http://www.alldomains.com Name Server: NS2.GOOGLE.COM Name Server: NS1.GOOGLE.COM Name Server: NS3.GOOGLE.COM Name Server: NS4.GOOGLE.COM Status: REGISTRAR-LOCK Updated Date: 12-feb-2005 Creation Date: 15-mar-1999 Expiration Date: 15-mar-2006 >>> Last update of whois database: Wed, 13 Jul 2005 04:22:03 EDT <<< NOTICE: The expiration date displayed in this... [48 Zeilen Text entfernt] Registrant: Google Inc. (DOM-258962) 2400 E. Bayshore Pkwy Mountain View CA 94043 US Domain Name: google.net Registrar Name: Alldomains.com Registrar Whois: whois.alldomains.com Registrar Homepage: http://www.alldomains.com Administrative Contact: DNS Admin (NIC-1340142) Google Inc. 2400 E. Bayshore Pkwy Mountain View CA 94043 US dns-admin@google.com +1.6503300100 Fax- +1.6506181499 Technical Contact, Zone Contact: DNS Admin (NIC-1340144) Google Inc. 2400 E. Bayshore Pkwy Mountain View CA 94043 US dns-admin@google.com +1.6503300100 Fax- +1.6506181499 Created on..............: 1999-Mar-15. Expires on..............: 2006-Mar-15. Record last updated on..: 2005-Feb-12 06:14:05. Domain servers in listed order: NS1.GOOGLE.COM NS2.GOOGLE.COM NS3.GOOGLE.COM NS4.GOOGLE.COM ...
Listing 20.18 whois-lookup