Einer der am meisten unterschätzten Dienste im Internet und auch in vielen lokalen Netzwerken dürfte wohl der DNS Dienst sein. Erst wenn er ausgefallen ist bekommen wir zu spüren das nichts mehr funktioniert und Namensauflösung nicht gerade unwichtig ist. Zusätzlich gibt es durch sog. Virtual Hosts sogar die Anforderung eine funktionierende Namensauflösung zu haben, den ein Webserver mit mehreren Hosts benötigt in der Anfrage zwingend den Hostname und nicht nur eine IP die man sich vielleicht noch merken konnte.

Es gibt insgesamt 5 Tools für DNS welche ich sehr gerne benutze, das wären:

host
Der Standard um zu schauen ob man einen Namen oder eine IP aufgelöst bekommt.
dig
Für Profis das Tool der Wahl wenn es um DNS Records geht und ein Fehler zu suchen ist.
nsupdate
Änderungen an DNS Records ohne ein Zone File manuell bearbeiten zu müssen.
rndc
Nützliches Tool um den Bind Nameserver auf die Sprünge zu helfen.
dnstop
Schauen was im Netzwerk eigentlich los ist.
Ich werde diese jetzt nachfolgend mal kurz vorstellen, mehr Details gibt es in den Manpages ;-)

host

Ist wohl bei den ganzen DNS Tools das am weitesten verbreitete, es gibt davon viele verschiedene Implementierungen mit teilweise vielen besonderen Features. Die Grundlegende Funktion ist aber das Auflösungen von Rechnernamen zu IP Adressen und zurück. Alle weiteren Features sind Optional und je nach Implementierung nicht vorhanden. Die Anwendung von host erfordert keine Erläuterung:

[stefan@pc2007 ~]$ host server.hornynet
server.hornynet has address 192.168.1.1
server.hornynet has IPv6 address fd07:4763:c4fd:8192::1
[stefan@pc2007 ~]$ host 192.168.1.1
1.1.168.192.in-addr.arpa domain name pointer server.hornynet.

dig

Gerne darf es etwas mehr sein, und hierfür nutzt man in der Regel das Tool dig. Der größte und wichtigste Vorteil von dig gegenüber host ist der hohe Informationsgehalt:

[stefan@pc2007 ~]$ dig server.hornynet

; <<>> DiG 9.9.2-P2 <<>> server.hornynet
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14980
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;server.hornynet.               IN      A

;; ANSWER SECTION:
server.hornynet.        86400   IN      A       192.168.1.1

;; AUTHORITY SECTION:
hornynet.               86400   IN      NS      server.

;; Query time: 0 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Sat May 11 15:16:08 2013
;; MSG SIZE  rcvd: 80

Hier sehen wir unter anderem folgende Informationen:

  • Antwort auf unsere Anfrage
  • TTL Zeit vom Record (wichtig bei Sachen wie dynamischem DNS)
  • Zeit die der Nameserver für die Antwort benötigt hat
  • Welcher Server uns geantwortet hat
  • Ob es beim bearbeiten unserer Anfrage Probleme gab
Sehr wichtig aus dieser Liste ist vor allem, neben der eigentlichen Anfrage und ob diese Fehlerfrei beantwortet werden konnte, die Verarbeitungszeit vom Server. Bei vielen unterschiedlichen Anfragen welche relativ lange dauern summiert sich das bei heutigen Webanwendungen gerne mal auf mehrere Sekunden, da hilft dann auch eine vorhandene 100 MBit/s Leitung nicht mehr viel.

nsupdate

Um Änderungen am DNS durchzuführen hat man früher und auch heute noch in einigen Heimnetzwerken diese direkt in das entsprechende Zone File geschrieben. Das Zone File ist der Ort von welchem der DNS Server seine Informationen über einen bestimmten Bereich des DNS bezieht, meist also die eigenen Domains.

Das manuelle bearbeiten von Zone Files ist dabei relativ Fehler trächtig und erfordert Zugriff auf das Dateisystem des DNS Servers. Die wenigsten Provider werden daher dem Anwender direkten Zugriff auf diesen (wichtigen) Dienst geben. Um Änderungen auch Remote durchführen zu können gibt es das Tool nsupdate. Mit diesem Tool können einem DNS Server über ein definiertes Protokoll die Änderungen zugespielt werden, dieser schreibt diese (wenn valide) in das Zone File und informiert wenn erforderlich auch gleich Slave Nameserver. Der größte Vorteil ist das hierbei gleiche eine Syntaxprüfung durchgeführt wird und der Nameserver nicht neu gestartet werden muss.

In der Praxis sieht das Anlegen eines neuen Hosts dann so aus:

[stefan@pc2007 ~]$ nsupdate -l
> update add server.hornynet. 86400 A 192.168.1.1
> send

rndc

Speziell für mich als Freund des bind Nameservers ist auch rndc ein nützliches Tool. Es wird zur Verwaltung dieses Dienstes verwendet, aber nicht zum bearbeiten der Zone Files sondern wirklich nur für den Dienst an sich. Eine gängige Anwendung wäre das neu laden der Zonen, oder aber auch das Einfrieren einer Zone. Eine Zone die eingefroren ist kann nicht mehr über Tools wie nsupdate verändert werden. Man kann sich aber auch nur den Status vom Server geben lassen:

[root@server ~]# rndc status
version: 9.9.2-P2 (version.bind/txt/ch disabled)
number of zones: 39
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
recursive clients: 0/0/1000
tcp clients: 0/100
server is up and running

dnstop

Ein weiteres Tool welches ich gerne verwende, und auch das letzte in diesem Artikel, ist dnstop. Es handelt sich dabei um ein Tool welches auf einem Netzwerkinterface Traffic mitschneidet und Statistiken über den DNS Dienst anlegt.

Das ganze ist sehr informartiv, vor allem Datenschützer wundern sich immer wieder wie viele DNS Anfragen zu Diensten die man eigentlich nicht nutzen möchte rausgehen. Gleichzeitig kann man so auch sehen ob sich ggf. der Einsatz eines DNS Caches lohnt, den gerade bei Veranstaltungen im Bereich von > 20 Personen habe ich schon festgestellt das eine Fritzbox oder ein Telekom Speedport Router gerne mal bei vielen Anfragen in die Knie geht und die Gesamtperformance (wenn man davon bei einem SOHO Router überhaupt sprechen kann) spürbar leidet.

Fazit

Es lohnt sich mal die wichtigsten Tools anzuschauen, spätestens im Fehlerfall ist jedes dieser Tools Gold wert und spart wenn man damit umgehen kann viel Zeit.