DNS
Multi Command Readline
Das kann nerven: Man will eine Liste mit DNS Einträgen überprüfen. Was aber wenn es gar keinen Eintrag gibt? Meist ist es nicht akzeptabel, wenn die Zeile dann einfach weggelassen wird. Also muss man aus dem üblichen Einzeiler eine ganze Schleife basteln, die auch dann eine Ausgabe liefert, wenn dig keine mehr Produziert.
while read LINE do { echo -n "$LINE " dig SOA $LINE +short } done < $INPUTFILE
Pihole: Interne DNS Zone
Pihole verwendet dnsmasq. Dadurch kann auch ganz einfach eine interne DNS Zone aufgebaut werden.
Dazu sind am Pi diese Schritte notwendig:
/etc/dnsmasq.d/02-mydns.conf
addn-hosts=/etc/hosts.mydomain
/etc/hosts.mydomain
10.0.0.1 router.int.example.com 10.0.0.2 one.int.example.com 10.0.0.3 pi.int.example.com 10.0.0.4 two.int.example.com
# service dnsmasq restart
Update – seit Pihole 4 den restart auslösen mit
# service pihole-FTL restart
Pi-hole
Wie kann man mehr aus einer eher bescheidenen Internetanbindung herausholen? Am schnellsten ist der Traffic, der eingespart werden kann. Auch dann wenn genügend Bandbreite vorhanden wäre.
Was könnte man sparen? Spam- ähm… natürlich Werbenetzwerke und bereits bekannte Maleware bieten sich an. Am einfachsten sind Adblocker als Browser-Erweiterung zu verwenden. Aber die bekommt man so schlecht auf alle Geräte, wie zum Beispiel aufs Smart TV oder den Blueray Player. Auch am Handy schaut es eher düster aus mit Adblocking. Wer mehrere Browser verwendet muss schon auf einem Gerät mehrere Plugins einrichten und aktuell halten!
Warum also nicht Adblocking auf DNS-Ebene im ganzen Netzwerk? Exakt das setzt Pi-hole auf einem Raspberry Pi um.
Pi-hole setzt auf dnsmasq und stellt am Besten auch gleich den DHCP Dienst zur Verfügung. Der lässt sich ganz einfach über das Webinterface konfigurieren. Dieses zeigt auch recht interessante Statistiken an.
Ein zusätzlicher Vorteil ist, dass man seine DNS Anfragen über verschiedene Anbieter verteilen kann, so dass die Wahrscheinlichkeit sinkt, dass jemand alle Daten auf einmal bekommt. Und man ist nicht der verordneten Zensur der lokalen DNS Anbieter unterworfen.
Vordefiniert sind die Nameserver von Google, OpenDNS (gehört zu CISCO), Level3, Norton, Comodo und DNS.WATCH. Es steht aber frei einfach eigene zu definieren.
DNS TTL
Wer hat sich schon Mal gefragt, ob sich die Provider an die DNS TTL halten?
Ich habe dazu schon verschiedene Meinungen gehört – z.B. dass besonders kurze DNS TTLs länger gecached werden, oder aber auch dass besonders lange TTLs abgekürzt werden.
Aber gibts dafür Beweise?
Zum Testen habe ich DNS Einträge mit verschiedenen TTLs von 60 Sekunden bis 345600 Sekunden = 4 Tage erstellt, Das waren die maximalen DNS Werte die mein DNS Anbieter zugelassen hat, und über verschiedene Nameserver wieder abgefragt:
Schön zu sehen – in diesem Bereich halten sich die Nameserver der Telekom Austria und OpenDNS an die vorgegebene TTL. Die Google Nameserver schneiden die TTL bei 22k Sekunden, etwas über 6 Stunden, ab.
Einerseits vernünftig, dass die Google Nameserver Benutzer und Seitenbetreiber vor zu langen DNS TTLs schützen, andererseits lügen die Nameserver halt.
Kennt jemand noch weitere lügende Nameserver?
Weitere Quellen, die sich mit dieser Frage beschäfitgen:
– http://ask.slashdot.org/story/05/04/18/198259/Providers-Ignoring-DNS-TTL
– http://serverfault.com/questions/72363/what-percentage-of-nameservers-honor-ttl-these-days
DNS Cache im Webbrowser
Was passiert wohl, wenn man einen DNS Eintrag ändert, und diesen sofort wieder in seinem Webbrowser aufruft? Grundsätzlich gilt hier ja die TTL. Aber: Einige Browser halten die Einträge nochmal in einem eigenen Cache und wissen nichts mehr von der TTL, weil sie diese vom Betriebssystem gar nicht mehr erhalten.
Details (in Englisch) finden sich unter http://www.tenereillo.com/BrowserDNSCache.htm
Ich frage mich, wie das mit aktuellen Browsern aussieht?
SpeedTouch-Modem DNS Konfiguration
Die Änderung der DNS-Server, die vom ADSL-Anbieter vorgegeben werden erweist sich als etwas schwierig. Die Änderung kann nicht über das Webinterface erfolgen, weil hier keine Eingabefelder vorgesehen sind. Die Änderung ist aber etwa über Telnet möglich:
telnet 10.0.0.138 admin dns server route add dns=8.8.8.8 dns server route add dns=8.8.4.4 saveall
Im Beispiel werden die offenen Google-Nameserver eingetragen.
Der Nachteil ist, dass bei einem Neustart des Modems wieder die Vorgabe-Werte vom Anbieter überschrieben werden.
Um dieses Problem zu lösen, sollte die Konfiguration aus dem Modem exportiert werden. Anschließend wird der Wert "dnsmetric=0" gesucht und mit einer höheren Metrik, etwa "dnsmetric=10" ersetzten. Die Konfiguration kann anschließend wieder eingespielt werden. Vor der Veränderung ein Backup anzulegen sollte natürlich selbstverständlich sein.
[ ppp.ini ] ... retryinterval=2 mru=1500 demanddial=enabled doddelay=1 dnsmetric=10 idletime=900 idletrigger=Tx ...
Im Anschluss kann man mit den Telnet-Befehlen von oben und einer zusätzlichen Angabe einer Metrik geringer als 10 die neuen Nameserver eintragen!
Sollte die Telnet-Software am Rechner nicht vorhanden sein, eignet sich Putty hervorragend als Ersatz.