Wer seine DNS-Abfragen noch etwas beschleunigen möchte, kann sich Unbound als DNS-Resolver installieren.
Was gibt es für Vorteile?
– Wir befragen die Root-Name-Server des Internets (Was das ist, steht hier: https://en.wikipedia.org/wiki/Root_name_server)
– Wir können mehr Cachen und Abfragen dann direkt beantworten
– Unser Internetanbieter, Google, CloudFlare & Co. kann unser Surfverhalten nicht mehr (so einfach) mitschreiben
Was gibt‘s für Nachteile?
– Die erste Anfrage könnte etwas länger dauern als über den DNS des Internetanbieters
– Es wird weiterhin unverschlüsselt die Anfrage ins Internet gelassen
Wie bekommst du das ganze hin?
Das zeige ich dir hier im Video!
Alle notwendigen Befehle findest du hier:
Wir installieren uns Unbound:
apt install unbound
Wir besorgen uns die Root-Name-Liste und schieben diese in den korrekten Ordner:
wget -O root.hints https://www.internic.net/domain/named.root mv root.hints /var/lib/unbound/
Unbound braucht noch folgende Konfiguration:
server: # If no logfile is specified, syslog is used # logfile: "/var/log/unbound/unbound.log" verbosity: 0 interface: 127.0.0.1 port: 5335 do-ip4: yes do-udp: yes do-tcp: yes # May be set to yes if you have IPv6 connectivity do-ip6: no # You want to leave this to no unless you have *native* IPv6. With 6to4 and # Terredo tunnels your web browser should favor IPv4 for the same reasons prefer-ip6: no # Use this only when you downloaded the list of primary root servers! root-hints: "/var/lib/unbound/root.hints" # Trust glue only if it is within the server's authority harden-glue: yes # Require DNSSEC data for trust-anchored zones, if such data is absent, the zone becomes BOGUS harden-dnssec-stripped: yes # Don't use Capitalization randomization as it known to cause DNSSEC issues sometimes # see https://discourse.pi-hole.net/t/unbound-stubby-or-dnscrypt-proxy/9378 for further details use-caps-for-id: no # Reduce EDNS reassembly buffer size. # Suggested by the unbound man page to reduce fragmentation reassembly problems edns-buffer-size: 1472 # Perform prefetching of close to expired message cache entries # This only applies to domains that have been frequently queried prefetch: yes # One thread should be sufficient, can be increased on beefy machines. In reality for most users running on small networks or on a single machine, it should be unnecessary to seek performance enhancement by increasing num-threads above 1. num-threads: 1 # Ensure kernel buffer is large enough to not lose messages in traffic spikes so-rcvbuf: 1m # Ensure privacy of local IP ranges private-address: 192.168.0.0/16 private-address: 169.254.0.0/16 private-address: 172.16.0.0/12 private-address: 10.0.0.0/8 private-address: fd00::/8 private-address: fe80::/10
Falls du IPv6 nutzen möchtest, aktiviere dies in Zeile 13.
Ebenfalls kann gerne die Anzahl der zur Verfügung stehenden CPU-Threads in Zeile 41 noch angepasst werden.
Wir starten Unbound neu:
service unbound restart
Nun kann getestet werden, ob eine Abfrage funktioniert:
dig hoerli.net @127.0.0.1 -p 5335
Zum guten Schluss tragen wir noch den Unbound-Server als DNS-Upstream im Pi-Hole ein.
Nun stellst du deine ganzen Anfragen von deinem Pi-Hole an deinen Unbound-Server!
DNSSEC ist auch nun aktiv und kann mit folgendem Befehl getestet werden:
dig sigfail.verteiltesysteme.net @127.0.0.1 -p 5335 dig sigok.verteiltesysteme.net @127.0.0.1 -p 5335
Automatisches Update der Listen:
Erstelle dir ein kleines Script und speicher es irgendwo ab.
nano root-dns-update.sh
Trage dort folgenden Inhalt ein:
#!/bin/bash wget -O root.hints https://www.internic.net/domain/named.root && ( mv -fv root.hints /var/lib/unbound/ service unbound restart )
Dann das ganze noch ausführbar machen:
chmod +x root-dns-update.sh
Das ganze noch per CronJob anlegen:
nano /etc/crontab
Ein Beispiel für ein Update alle 4 Monate.
* * * */4 * root /root/root-dns-update.sh >/dev/null 2>&1
Die ganze Anleitung inkl. weiterer interesannten Befehle findest du auf der Pi-Hole-Webseite direkt!
https://docs.pi-hole.net/guides/unbound/
Du hast Dich verschrieben !!! 😀 In Zeile 3 bei domain/named.root du hast da einen Punkt
#!/bin/bash
rm /var/lib/unbound/root.hints
wget -O root.hints https://www.internic.net/domain/named.root
mv root.hints /var/lib/unbound/
service unbound restart
Da hat jemand ein scharfes Auge!
Danke! Fehler behoben 🙂
… wenn das „wget“ fehlschlägt, hat man keine „root.hints“ mehr!
Ich schlage folgendes Skript vor:
#!/bin/bash
wget -O root.hints https://www.internic.net/domain/named.root &&
(
mv -fv root.hints /var/lib/unbound/
service unbound restart
)
Danke für dein Feedback!
Ich werde das Script gegen deins austauschen.
Hi Hoerli. Kleine Frage. Ist im Beispiel für den Cronjob nicht ein Schreibfehler (Name der sh-Datei)? Sollte die Zeile nicht so lauten:
* * * */4 * root /root/root-dns-update.sh >/dev/null 2>&1
Jap! Da war ein Fehler drin.
Hab es gerade behoben.
Ich habe mal eine kleine Frage, warum betreibt man ein PiHole hinter einen Unbound DNS. Unbound kann doch auch Werbung ähnlich PiHole Filtern.
Weil Pi-Hole deutlich bequemer zu bedienen ist und ein paar Funktionen zusätzlich hat.
Hallo
Ich habe versucht deinem youtube video zu forlen , welches anscheiden etwas ktueller ist als deine beschreibung auf dieser seite.
Aktuell habe ich das Problem das piholt -t mit 127.0.0.1#5335 inf ::1#5335 ein
validation XXXX is BOGUS
reply error is SERVFAIL
Ausgibt.
Nur wenn ich die 127.0.0.1 in die IP vom SBC ändere geht diese…
Wo könnte der Fehler liegen?
BOGUS-Fehler passieren in der Regel, wenn die Uhrzeit des Systems auf dem der DNS-Server läuft nicht korrekt ist.
Gleiche mal die Zeit ab, damit sie zur Weltzeit synchron läuft.
Ansonsten kann ich mir nicht erklären, wie es zu dem Fehler kommt.
Hatte ich schon gemacht…
Ist wie gesagt eine frische ubuntu Focal server installation mit pihole 5 + unbound 1.9.7 + openhabian 1.6 mit nginx 1.9.6. auf einem vim3
Hatte diesen etwas neuere Anweisungen gefunden…
https://www.privacy-handbuch.de/handbuch_93c.htm
Wo man diese Service deaktivieren sollte…
sudo systemctl disable systemd-resolved
Jedoch funktioniert sudo aa-status bei mir nicht