15.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 äußerst hilfreich, wenn man testen möchte, ob die Konfiguration, die man einem DNS-Server übergeben hat, funktioniert.
15.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 seiner 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 15.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 bekommen, 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) über die 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 15.13 Gezieltes Host-Lookup
Die Ausgaben von host gliedern sich dabei in 3 Teile: in den DNS-Header, in die Question-Section (in der die Frage steht, die host dem DNS-Server stellt) und in die Answer-Section, in der die Antworten zu finden sind, die der DNS-Server auf diese Frage gab. 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).
15.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 (und diese besteht auch vor und nach jeder Anfrage, die man an einen DNS-Server sendet), das Verhalten von nslookup zu verändern.
Zunächst kann man den gewünschten Server via server <server> angeben. Weitere Variablen setzt man über set. Um etwa den 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 15.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 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 15.15 nslookup – Teil 2
Auch die Abfrage weiterer Records, 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 15.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 15.17 Debug-Modus
15.4.3 dig
Das Tool dig verrichtet wiederum im Wesentlichen dieselben Aufgaben wie host und nslookup und soll daher nur der Vollständigkeit halber erwähnt werden, damit Sie über seine Existenz informiert sind.
15.4.4 whois
Ein völlig anderes Tool ist whois. whois stellt keine Anfrage an einen DNS-Server, sondern an eine sogenannte Whois-Datenbank, in der Domain-Informationen gespeichert sind. Über dieses Tool bekommen 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 15.18 whois-lookup