Es gibt ein Tool, mit dem man fast beliebige DNS-Anfragen machen
kann, um z.B. Konfigurationen zu testen. Dieses ist Teil der
bind-Distribution und heißt
nslookup. Dieses
versteht viele Optionen als Parameter, kann aber auch
interaktiv verwendet werden. Um die Wirkung der Searchlist zu
unterdrücken, sollten wiederum vollqualifizierte Hostnamen mit
einem anschließenden Punkt verwendet werden. Mit diesem Tool
fragt man nach Daten der Zone, z.B. "www.selflinux.de."
Folgende Optionen stehen im interaktiven Modus zur Verfügung
(hier teilweise abgekürzt):
-
"server <server>", z.B.
server ns.selflinux.de
Die Anfragen werden an <server> gesendet.
-
"set querytype=<RR Typ>", z.B.
set q=any
Anfragen nach RR-Typ machen
-
"set debug" / "set nodebug"
Es werden viele zusätzliche Informationen angezeigt, sehr
hilfreich bei der Fehlersuche
-
"set recurse" / "set norecurse"
Rekursive oder nicht rekursive Anfragen machen
-
"ls <zone>", z.B.
ls selflinux.de
Zonentransfer machen, und diese auflisten
ls kennt mehrere Optionen, z.B.
"-t <RR Type>"
Beim Testen muß natürlich auch nach IP-Adressen gefragt werden,
um zu testen, ob diese richtig zurück in Hostnamen übersetzt
werden.
Ein sehr gutes automatisches Tool für derartige Tests ist
dnswalk, insbesondere bei großen Zones ist
es sehr nützlich. Dieses erfordert Perl5, und
das Modul Net::DNS.
Dieses kann, falls erforderlich, mit der CPAN-Shell
einfach und meist unproblematisch installiert werden
(perl -MCPAN -e shell, nach der
Konfiguration genügt in der Regel ein
install Net::DNS).
dnswalk findet man unter:
http://www.cis.ohio-state.edu/~barr/dnswalk/
Beim Aufruf übergibt man mindestens die zu testende Zone (mit
abschließendem Punkt). DNSwalk kann auch rekursiv delegierte
Zones durchlaufen.
Das Tool nslookup hat aber auch einige
Nachteile, die das Debugging erschweren können.
Beispielsweise versucht nslookup stets,
zumindest in neueren Versionen, den Namen des DNS-Servers
rückwärts aufzulösen. Dies ist oft sinnvoll, um
DNS-Spoof-Angriffe zu erschweren.
Bei Aufsetzen eines DNS-Systems funktioniert damit
das Tool jedoch erst, wenn die Reverse-Zonen konfiguriert sind,
und die DNS-IPs richtig auflösen. Um "nur" einfache
Tests der Namen zu machen, kann man jedoch andere Tools
verwenden, zum Beispiel die, die den normalen Resolver verwenden
(beispielsweise zeigt auch ping die IP-Adresse
an).
bind kann auch sämtliche Anfragen via
syslog(3) loggen. Dazu
verwendet man das Dienstprogramm ndc (das
Kontroll-Interface), um es einzuschalten:
user@linux $
ndc querylog
|
Nun kann man verfolgen, welche Namen aufgelöst werden sollen,
welche Server dazu verwendet werden, usw. Das ist auch bei
Dial-On-Demand-Verbindungen hilfreich. Ein Blick in die Manpage
von ndc verrät außerdem weitere Kommandos.
Eines davon ist dumpdb:
Das sorgt dafür, dass die gesamte Datenbank in eine
Datei geschrieben wird. Deren Name kann mit der
"dump-file"-Direktive im "options {};"-
Block gesetzt werden, ansonsten wird
/var/tmp/named_dump.db verwendet. Diese Datei
enthält alle autoritativen Zonendaten und den gesamten Cache,
d.h. sie ist ziemlich groß (ein normaler Server produziert dabei
einige tausend Zeilen!). Dort kann man z.B. die Zonen überprüfen,
oder nach evtl. falsch gecachten Einträge suchen (wenn z.B. zu
klären ist, welcher Server eine bestimmte Anfrage falsch
beantwortet),
in der Praxis wird das aber vermutlich die Ausnahme sein.
|