Toolbox: Namebench findet schnelle DNS-Server

Namebench hilft bei der Suche nach dem schnellsten Nameserver. Das Python-Tool prüft und vergleicht dabei die Reaktionszeiten mehrerer DNS-Server.

In Pocket speichern vorlesen Druckansicht 14 Kommentare lesen
Lesezeit: 6 Min.
Von
  • David Wolski
Inhaltsverzeichnis

Das Python-basierte Open-Source-Tool Namebench überprüft und vergleicht die Reaktionszeiten von DNS-Servern.

Ob der bisher verwendete DNS-Server schnell genug ist, oder eine öffentliche Alternative womöglich etwas schneller wäre, können Stichproben über den Befehl nslookup allein nicht beantworten. Zu groß sind die Unterschiede bei den Antworten, je nachdem ob diese vom DNS-Server oder aus dem DNS-Cache des Routers stammen. Ein systematischer Check mit mehreren hundert DNS-Anfragen lässt sich mit Namebench durchführen. Dabei handelt es sich um ein Python-Skript mit optionaler grafischer Oberfläche.

Entwickelt wurde Namebench von dem belgischen Google-Mitarbeiter Thomas Strömberg als "20-Prozent-Projekt", also in der Zeit, die Google seinen Angestellten für eigene Programmierprojekte überlässt. Das Tool wird nicht mehr aktiv weiterentwickelt, erfüllt seinen Zweck aber immer noch.

Namebench (4 Bilder)

NXDOMAIN Hijacking

Namebench zeigt, welche DNS-Dienste Anfragen zu nicht existenten Domains auf eigene Seiten umleiten.

Namebench protokolliert die Antwortzeiten ausgewählter DNS-Server und ergänzt diese auf Wunsch um bekannte, öffentliche DNS-Dienste. Mit von der Partie sind Google Public DNS und dessen Konkurrenten OpenDNS und UltraDNS. Die abgefragten Adressen bezieht Namebench aus mehreren Quellen: Für realistische Ergebnisse kann das Tool Web-Adressen aus der History diverser Browser, darunter Chrome, Firefox, Safari, Internet Explorer, Konqueror, Epiphany und Midori, abgreifen. Für weitere, populäre Adressen kann die Statistik des Ranking-Dienstes Alexa hingezogen werden.

Interessant ist auch, ob ein DNS-Dienst oder Provider Anfragen an nicht existente Domains auf eigene Werbeseiten umleitet, anstatt korrekt mit NXDOMAIN zu antworten. Diese Manipulation ist nicht nur lästig, sondern hat auch ungünstige Nebenwirkungen, zum Beispiel für Programme und Skripte, die auf eine NXDOMAIN-Rückmeldung warten, um zu entscheiden, ob es sich um einen Host im LAN oder im WAN handelt. Einen DNS-Dienst mit dieser Unsitte sollte man meiden.

Ohne Installation: Namebench wird wie ein gewöhnliches Python-Skript gestartet, wobei Tk die grafische Oberfläche liefert.

Das Programm steht auf der Projekt-Webseite in Versionen für Linux, Mac OS X und Windows zum Download bereit. Da auf Linux-Systemen der Python-Interpreter meist schon installiert ist, muss lediglich das Tk-Toolkit für Python nachinstalliert werden, damit die grafische Oberfläche angezeigt werden kann. In Debian, Ubuntu und OpenSuse heißt das Paket python-tk, bei Fedora tkinter. Nach dem Entpacken des tar.gz-Archivs lässt sich Namebench im entpackten Verzeichnis mit ./namebench.py starten. Viele Linux-Distributionen enthalten Namebench in ihren Repositories.

In der Oberfläche von Namebench zeigt das Feld "Nameservers" den aktuell eingerichteten DNS-Server an, wie er auch in der /etc/resolv.conf eingetragen ist. Wenn Namebench eine Reihe ausgewählter DNS-Dienste testen soll, lassen sich in dieses Feld mehrere, durch Kommas getrennte Adressen eingeben. Geht es um die Suche nach einer Alternative, bezieht die Option "Include global DNS providers" die Server von Google, UltraDNS und OpenDNS mit ein.

Namebench sortiert die getesteten Nameserver nach ihrer Geschwindigkeit.

Eine Reihe bekannter regionaler DNS-Dienste bringt Namebench in seiner Konfigurationsdatei im Unterverzeichnis config/namebench.cfg mit. Diese Server lassen sich mit der Checkbox "Include best available regional DNS services" testen. Die gewünschte Region wählt man in der Dropdown-Box "Your Location" aus.

Soll auch auf zensierende DNS-Server getestet werden, aktiviert man die Option "Include censorship checks". Welche Adressen hierbei getestet werden, lässt sich in der Konfigurationsdatei config/hostname_reference.cfg manuell anpassen und erweitern. Die dort eingetragenen IP-Adressen sind allerdings größtenteils veraltet; wer testen will, ob die untersuchten Nameserver einzelne Sites sperren, muss hier für korrekte Einträge sorgen.

Wer möchte, kann die Ergebnisse mit "Upload and share your anonymized results" Google zur Verfügung stellen. Namebench fügt die Daten dann zur anonymisierten Nutzungsstatistik auf http://namebench.appspot.com hinzu.

Die zu prüfenden Web-Adressen legt schließlich die Liste unter "Query Data Source" fest. Zur Auswahl stehen die History verschiedener installierter Browser sowie eune Liste poplärer Sites von Alexa. Über die Liste "0 Prozent unauflösbare Hostnamen" prüft man, wie schnell die DNS-Server Anfragen aus ihrem Cache beantworten. Die Liste mit 100 Prozent unauflösbaren Domainnamen können die Nameserver dagegen nie aus ihrem Cache beantworten; hier erfährt, wie schnell die DNS-Server sind, wenn sie andere Nameserver befragen müssen.

Report: Die Ergebnisse präsentiert Namebench in einer HTML-Datei mit Statistiken.

Nach dem Check, der bei 250 Anfragen pro Server einige Minuten in Anspruch nimmt, produziert Namebench eine hübsche Statistik in HTML, die im Browser angezeigt wird. Im oberen Teil findet man eine Empfehlung, welcher der getesteten Servern am besten abgeschnitten hat. Das Feld „Notes“ liefert jeweils weitere Hinweise. Am interessantesten ist hier die Angabe, ob sich ein Server die Unsitte des NXDOMAIN-Hijacking zu eigen macht.

Verweise auf Domain-Hijacking und falsche IP-Adressen sind hingegen hinfällig, da Namebench veraltete Adressen bekannter Domains aus seiner Konfigurationsdatei config/hostname_reference.cfg verwendet. Wer sich an den obsoleten Warnhinweisen stört, kann die Einträge in der Datei hostname_reference.cfg im Abschnitt "[sanity]" und "[sanity-secondary]" auskommentieren.

Für Systeme ohne grafische Oberfläche bietet Namebench seine Dienste auch auf der Kommandozeile an. Seine Parameter verrät das Tool mit dem Aufruf

./namebench.py -h

Auf einem Linux-System mit laufendem X-Server muss man den automatischen Start der grafischen Oberfläche mit dem Parameter "-x" unterbinden. Die meisten Optionen der Oberfläche lassen sich auch auf der Kommandozeile nutzen, allerdings steht nicht für jede Option ein eigener Schalter zur Verfügung. Ohne Parameter führt Namebench einen Check mit allen bekannten DNS-Servern aus, jedoch ohne Upload der Ergebnisse. Um stattdessen einige selbst ausgewählte DNS-Server zu testen, muss Namebench mit

./namebench.py -x -O 192.168.1.254 [DNS2] [DNS3] [DNS4]

aufgerufen werden. Die Ergebnisse landen auch hier als HTML-Datei im Verzeichnis /tmp. (lmd)