Pi-hole mit unbound – Werbeblocker und Kontrolle über die DNS-Anfragen erhalten

Was macht unbound?

unbound holt für euch von einem Root-Nameserver die Informationen welcher Top-Level-Domain-Server (TPL) für eure Anfrage zuständig ist. Anschließend wird der zuständige autoritativen Nameserver nach der IP-Adresse der Domain gefragt, ob die Seite überhaupt aufrufen zu können.

Wo ist aber nun der Unterschied zu dem Pi-hole und zu Pi-hole mit unbound?

Was macht euer Pi-hole ohne unbound?

  1. Ihr gebt in euren Webbrowser die Adresse strobelstefan.org ein.
  2. Pi-hole überprüft, ob er die Anfrage bereits aus seinem Cache auflösen kann, weil ihr bereit vorher die Seite aufgerufen habt.
  3. Pi-hole prüft die eure Blocking-Listen, ob ein Aufruf der Seite erlaubt ist.
  4. Pi-hole verweist eure Anfrage ein einen externen DNS-Server, z.B. eures Internet Service Providers (ISP) oder der eingestellte DNS-Server in der Pi-hole-Konfiguration unter Einstellungen –> DNS.
  5. Die Anfrage kommt vom externen DNS zurück und der Pi-hole gibt die Informationen an euren Webbrowser weiter.
  6. Ihr könnt die Seite aufrufen.
  7. Pi-hole speichert die Anfrage in seinem Cache für später, solltet ihr erneut strobelstefan.org aufrufen wollen.

Was macht euer Pi-hole mit unbound?

Die Anfrage läuft für die Punkte 1 bis 3 gleich ab. Erst ab Punkt 4 gibt es eine Änderung

  1. Ihr gebt in euren Webbrowser die Adresse strobelstefan.org ein.
  2. Pi-hole überprüft, ob er die Anfrage bereits aus seinem Cache auflösen kann, weil ihr bereit vorher die Seite aufgerufen habt.
  3. Pi-hole prüft die eure Blocking-Listen, ob ein Aufruf der Seite erlaubt ist.
  4. Es wird eine Anfrage von Pi-hole an den Root-Nameserver gesendet, ob der sagen kann, welcher Top-Level-Domain-Server für .org zuständig ist.
  5. Pi-hole sendet dann eine Anfrage an den TPL-Server wo er strobelstefan.org findet.
  6. Der TPL sendet die Informationen über den zuständigen autoritativen Nameserver zurück.
  7. Pi-hole wendet sich an den autoritativen Nameserver und fragt nach strobelstefan.org.
  8. Der autoritativen Nameserver antwortet nun mit der IP-Adresse der Domain strobelstefan.org.
  9. Der Pi-hole gibt die Informationen weiter und die Seite wird im Webbrowser dargestellt.
  10. Pi-hole speichert erneut die Informationen im Cache, für einen erneuten Aufruf ab.

Was ist nun der Unterschied?

Ihr seht einen wesentlichen Unterschied zwischen den beiden Abläufen. Mit unbound frägt der Pi-hole nicht bei irgendeinem externen DNS-Server an, der von eurem ISP betrieben wird.

Die Anfragen werden zielgerichtet an den Root-Nameserver, dann an den TLS und dann an den autoritativen Nameserver versendet.

Es gibt also keine Dritten die euer Surfverhalten auf Grund der abgesendeten DNS-Anfragen nachvollziehen können.

Wenn euer Pi-hole / unbound die Informationen bereits im Cache gespeichert hat, findet er die richtigen Webserver und damit die Adresse strobelstefan.org ohne Umweg über DNS sondern direkt.

Wenn ihr mal euren QUery Log auf dem Pi-hole angeschaut habt, dann wisst ihr was die DNS-Anfragen beinhalten und was für Informationen und Schlüsse man daraus ziehen kann.

Ein installierter unbound in Verbindung mit Pi-hole.

  • hilft bei der digitalen Selbstverteidigung
  • blockt zuverlässig Werbung
  • ermöglicht eine schnelleres Surfen im Internet, wenn die Daten bereits im Cache gespeichert sind.

Hardware für den Pi-hole

unbound-Installation

Die Installation von unbound funktioniert sehr einfach aus den Repositories

sudo apt install unbound

Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  libunbound8 unbound-anchor
Suggested packages:
  apparmor
The following NEW packages will be installed:
  libunbound8 unbound unbound-anchor
0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
Need to get 1219 kB of archives.
After this operation, 4787 kB of additional disk space will be used.
Do you want to continue? [Y/n] y

Nach der erfolgreichen Installation ist eine neue Datei im entsprechenden Verzeichnis anzulegen.

sudo nano /etc/unbound/unbound.conf.d/pi-hole.conf

Der Inhalt der Datei sieht wie folgt aus. Bevor ihr das kopiert, schaut bitte in der offiziellen Dokumentation nach, ob sich etwas geändert hat.

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!
    # If you use the default dns-root-data package, unbound will find it automatically
    #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

Nun noch unbound neu starten.

 sudo service unbound restart

Und schon kann der erste Test gestartet werden.

 dig strobelstefan.org @127.0.0.1 -p 5335

Testlauf 1 – dauert ein wenig länger, da alle Schritte durchlaufen werden müssen.

 dig sigfail.verteiltesysteme.net @127.0.0.1 -p 5335

Testlauf 2 – Ist sehr schnell, da die Informationen bereits im Cache vorhanden sind.

 dig sigok.verteiltesysteme.net @127.0.0.1 -p 5335

Pi-hole DNS-Server einstellen

Zum Abschluss müssen wir noch in Pi-hole den DNS-Server auf den unbound “umleiten.” Damit geht jede DNS-Anfrage vom Pi-hole über unseren gerade installierten unbound.

Pi-hole - DNS-Einstellung für unbound
Pi-hole – DNS-Einstellung für unbound
Tragt in Custom 1 (IPv4) ein:
127.0.0.1#5335

Root Nameserver

In der offiziellen Dokumentation wird auch beschrieben, wie die Adressen der Root Nameserver in regelmäßigen Abständen aktualisiert werden können, wenn unbound nicht aus den Paketquellen installiert wurde. Da wir unbound aus eben diesen installiert haben, ist der Schritt für uns nicht wirklich relevant. Aber ihr könnt über den Link die Informationen zu den weltweit 13 Root Nameserver einsehen.
–> https://www.internic.net/domain/named.root

Fehlersuche

Taucht bei euch ein Fehler auf, dann könnt ihr mal folgendes versuchen. Lässt euch mal den Status von unbound ausgeben. Der Dienst sollte ohne Fehler laufen.
systemctl status unbound.service
Gibt es einen Fehler, könnt ihr die unbound-Konfiguration auf Fehler überprüfen lassen.
unbound-checkconf

Hilft das alles nichts, dann setzt ihr das Verbosity-Level kurzfristig für die Fehleranalyse hoch und ihr müsst wohl oder übel die Logs durchsuchen.

Es gibt 5 Log Level:

  1. Level 0 = bedeutet nicht ausführlich, nur Fehler
  2. Level 1 = gibt Informationen über den Betrieb aus
  3. Level 2 = gibt detaillierte Betriebsinformationen aus
  4. Level 3 = gibt Informationen auf Abfrageebene aus
  5. Level 4 = gibt Informationen auf Algorithmus-Ebene aus
  6. Level 5 = protokolliert die Client-Identifikation für Cache-Misses
    1. Weiterführende Links

      Anzeige/Werbung

      (**) Produktpreise und -verfügbarkeit sind zum angegebenen Datum / Uhrzeit korrekt und können sich ändern. Alle Preis- und Verfügbarkeitsinformationen auf https://www.amazon.de/ zum Zeitpunkt des Kaufs gelten für den Kauf dieses Produkts.

6 Antworten auf „Pi-hole mit unbound – Werbeblocker und Kontrolle über die DNS-Anfragen erhalten“

  1. Hi Stefan,

    wie immer ein super Artikel mit vielen Hintergrundinformationen. Das kommt auf die ToDo Liste für mich. Mit dieser Anleitung sollte es schnell eingerichtet sein.

    Viele Grüße

    Matthias

  2. Hi Stefan, super gut erklärt, danke! Schon gemacht.

    Ein kleiner “Tippfehler” doch: bei
    sudo /etc/unbound/unbound.conf.d/pi-hole.conf
    fehlt der nano:
    sudo nano /etc/unbound/unbound.conf.d/pi-hole.conf

    Nochmal Danke und Grüße
    Ionut

  3. Was richtig fies ist: Ein paar Erklärungen zu unbound beinhalten port 5335 wie bei dir, viele andere Erklärungen beinhalten port 5353.

    Ich habe mir einen Wolf gesucht bei der Fehleranalyse!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.