Letztens war es wieder so weit: Bei meinem Internetanbieter war Rush-hour und trotz dicker Leitung kommt man sich vor wie Mitte der Neunziger. Antwortzeiten von mehreren Sekunden verderben einem gründlich den Spass am surfen.
Ein paar Tests später kam ich dahinter, dass die DNS-Server des Anbieters unglaublich träge antworteten. War der Host erst einmal aufgelöst oder vom Browser gecached ging es recht fix weiter. Also was machen wenn so etwas wieder passiert?
Hier kommt ein einem dnsmasq gerade recht. Es handelt sich um einen ultraschlanken DNS- und/oder DHCP-Server, der, einmal eingerichtet, mein gesamtes kleines Heimnetzwerk mit DNS-Auflösung versorgen kann.
Wie unter Archlinux üblich ist so etwas auch schnell eingerichtet. Mit pacman -Sy dnsmasq installiert man sich das Paket (gerade einmal 110 K schwer) und kann sich an's Einrichten in /etc/dnsmasq.conf machen:
# Or which to listen on by address (remember to include 127.0.0.1 if
# you use this.)
listen-address=127.0.0.1
listen-address=192.168.178.2
Das war's eigentlich auch schon: Wer will kann die Anfragen noch mitloggen oder den eingebauten DHCP-Server nutzen. Mir hat die DNS-Cache-Funktionalität genügt und so habe ich einfach die listen-address-Direktiven an mein Netzwerk angepasst: 127.0.0.1 damit der Server (mein NAS übernimmt das) bei sich selbst nachfragen kann und 192.168.178.2 (Die IP auf die eth0 hört) damit auch der Rest davon was hat.
Die upstream-Server bezieht dnsmasq standardmässig aus der vorhandenen /etc/resolv.conf, so dass es Sinn macht diese anzupassen:
# /etc/resolv.conf.head can replace this line
search haggy.org
# Route DNS requests through dnsmasq first
nameserver 127.0.0.1
# Fritzbox
nameserver 192.168.178.1
# First OpenDNS server
nameserver 208.67.222.222
# Second OpenDNS server
nameserver 208.67.220.220
# /etc/resolv.conf.tail can replace this line
Drei Fallbacks sollten genügen. Abschliessend den daemon mit /etc/rc.d/dnsmasq start starten und nicht vergessen diesen auch in das DAEMONS=() -Array in /etc/rc.conf aufnehmen, um ihn beim nächsten Reboot gleich mitzustarten.
Das Ergebnis kann sich sehen lassen - von rund 300 msec und mehr bei langsamen DNS-Anfragen auf ca. 1 msec bei jedem weiteren Aufruf. Das fühlt sich doch sofort auch schneller an.