Benutzer-Werkzeuge

Webseiten-Werkzeuge


projekt-offen:software:pihole
♍️ Sternzeichen des Tages: Jungfrau 08.09.2026 - β–Ό (hier Klicken zum Γ–ffnen) β–Ό
Wir wΓΌnschen allen β€žJungfrau" - Geborenen viel GlΓΌck und Erfolg! πŸ€
β€’ β€’ β€’
πŸ“œ Die Jungfrau wird oft mit Demeter oder ihrer Tochter Persephone in Verbindung gebracht – GΓΆttinnen der Ernte und des Wachstums. Ihr Symbol steht seit jeher fΓΌr Reinheit, Sorgfalt und die enge Verbindung zwischen Mensch und Natur.
Jungfrau
(24. August – 23. September)
πŸ“– Weitere Infos
Element: 🌍 Erde   |   πŸͺ Herrscherplanet: Merkur
πŸ›οΈ Schutzgottheit: Athene (GΓΆttin der Weisheit)
πŸ“ Charakteristik: Die Jungfrau ist analytisch, praktisch und gewissenhaft. Sie denkt logisch und achtet auf Details. Ein realistischer und zuverlΓ€ssiger Mensch, der Ordnung schΓ€tzt.
πŸ’ž Liebe & KompatibilitΓ€t: βœ… Passt gut mit: Stier, Steinbock, Wassermann | ⚠️ Schwierig mit: Widder, SchΓΌtze
πŸ€ GlΓΌckszahl: 5   |   🎨 GlΓΌcksfarbe: Marineblau   |   πŸ“† GlΓΌckstag: Mittwoch
πŸ’Ž GlΓΌcksstein: Saphir   |   🦴 KΓΆrperteil: Verdauungssystem
🌟 Bekannte Persânlichkeiten: Johann Wolfgang von Goethe, Mutter Teresa, Beyoncé
πŸ’‘ 10 Tipps fΓΌr Jungfrau-Geborene:
  1. Fehler zulassen – Perfektion ist kein Muss
  2. Loslassen ΓΌben – nicht alles kontrollieren wollen
  3. Sich selbst loben – nicht nur kritisch sein
  4. Spontan sein – nicht jedes Detail vorausplanen
  5. Vertrauen schenken – Aufgaben auch mal abgeben
  6. Genießen – nicht nur funktionieren
  7. GroßzΓΌgig mit sich sein – Pausen erlauben
  8. Optimismus ΓΌben – nicht immer das Haar in der Suppe suchen
  9. GefΓΌhle zeigen – nicht alles rational abhandeln
  10. Chaos aushalten – nicht alles muss geordnet sein
πŸ’‘ Weisheit des Tages ... vom: 08.09.2026 - β–Ό (hier Klicken zum Γ–ffnen) β–Ό
Heute von: Rabindranath Thakur (1861–1941), bengalischer Philosoph
β€’ β€’ β€’
„Dumme rennen, Kluge warten, Weise gehen in den Garten.“
Rabindranath Tagore
πŸ“œ Kurzbiografie
Rabindranath Tagore bzw. Rabindranath Thakur (bengalisch রবীন্দ্রনাΰ¦₯ ঠাকুর RabΔ«ndranāth αΉ¬hākur, * 7. Mai 1861 in Kalkutta; † 7. August 1941 ebenda) war ein bengalischer Philosoph, Dichter, Maler, Komponist, Musiker und Brahmo-Samaj-AnhΓ€nger in Indien. Tagore erhielt 1913 den Nobelpreis fΓΌr Literatur und war damit der erste asiatische NobelpreistrΓ€ger.

Inhaltsverzeichnis

Projekt: PiHole

Pi-hole (Vorstellung)

(R) Quelle https://de.wikipedia.org/

Pi-hole

Admin-Schnittstelle von Pi-hole
Basisdaten
Erscheinungsjahr 15. Juni 2015
Aktuelle Version 5.18.3[1]
(5. Juli 2024)
ProgrammierΒ­sprache Python
Lizenz European Union Public Licence
pi-hole.net

Pi-hole ist eine freie Software mit der Funktion eines Tracking- und Werbeblockers sowie eines optionalen DHCP-Servers. Pi-hole basiert auf einem Linux-System und ist fΓΌr den Einsatz auf Kleinstcomputern im Sinne eines eingebetteten Systems entwickelt worden. Verbreitet ist der Einsatz auf Computern der Raspberry-Pi-Serie. Die Software wird als DNS-Server in ein bestehendes Netzwerk integriert und steht damit allen GerΓ€ten im Netzwerk zur VerfΓΌgung, deren DNS-Einstellungen sich konfigurieren lassen.

Inhaltsverzeichnis

Funktionsweise

Bearbeiten | Quelltext bearbeiten]

Das System mit der Pi-hole-Software wird als DNS-Server in ein bestehendes, zumeist kleineres, privates Rechnernetz eingebunden. Es übernimmt damit die Aufgabe, Domainanfragen der verbundenen Clients aufzulâsen und in IP-Adressen umzuwandeln. Auf der Basis von Ausschlusslisten von bekannten Werbe- oder Trackingdomains und benutzerdefinierten Ausschlusslisten werden Anfragen entweder an konfigurierbare andere DNS-Server weitergeleitet oder, falls eine angefragte Domain in einer Ausschlussliste existieren sollte, eine technisch unbrauchbare IP-Adresse an den Client ausgeliefert (sog. DNS sinkhole). Durch die Übermittlung einer unbrauchbaren IP-Adresse an den Client kann dieser auf die angefragte Domain nicht zugreifen und folglich Werbung und/oder Tracking-Inhalte nicht abrufen.

Da in einem kleinen Netzwerk die Clients neben ihrer eigenen, lokalen IP-Adresse auch die Adresse des abzufragenden DNS-Servers vom DHCP-Server erhalten, bestehen drei unterschiedliche Wege, auf denen ein Pi-hole in ein bestehendes Netzwerk integriert werden kann:

  1. Umkonfiguration des DHCP-Servers (in kleinen privaten Netzwerken wird diese Aufgabe normalerweise vom Router ΓΌbernommen), so dass alle Clients als Standard-DNS-Server auf das GerΓ€t mit der Pi-hole-Software verwiesen werden,
  2. Abschaltung des bisherigen DHCP-Servers und Aktivierung des in der Pi-hole-Software integrierten DHCP-Servers, der in der Folge als Standard-DNS-Server auf sich selbst verweist oder
  3. die individuelle DNS-Konfiguration einzelner GerΓ€te innerhalb des lokalen Netzwerks.

Durch diese Funktionsweise ist es grundsΓ€tzlich und in der Standardeinstellung mΓΆglich, ΓΌber die BenutzeroberflΓ€che sΓ€mtliche Internetseiten, die von im Netzwerk befindlichen GerΓ€ten aufgerufen werden, nachzuverfolgen.[2]

Hardwareanforderungen

Bearbeiten | Quelltext bearbeiten]

Die Hardwareanforderungen sind gering. Wenn eine reine WLAN-Anbindung ausreichend ist, kann fΓΌr den Betrieb in einem privaten Netzwerk ein Raspberry Pi zero eingesetzt werden.[4]

Technische Grenzen

Bearbeiten | Quelltext bearbeiten]

Eine Filterung erfolgt nur, soweit dies ΓΌber Ausschlusslisten vordefiniert ist. Die Pi-hole-Software enthΓ€lt keine Funktionen, welche angeforderte Inhalte inhaltlich ΓΌberprΓΌft.

Des Weiteren erfolgt eine Filterung nur auf Basis von Domainnamen. Werbung oder Tracking-Code, der clientseitig bereits durch den Zugriff auf konkrete IPs abgerufen wird und daher keine DNS-Anfrage benΓΆtigt, kann von der Pi-hole-Software nicht beeinflusst werden.


Pi-hole: Einrichtung und Konfiguration mit Fritz!Box – AdBlocker Teil1

1. Werbe- und trackerfrei Pi-hole mit Fritz!Box

Mittlerweile dΓΌrfte jeder den Einplatinencomputer Raspberry Pi kennen. Mit dem kleinen Computer im Scheckkartenformat lassen sich verschiedene Projekte realisieren. Eines davon ist der Pi-hole, mit dem sich Werbung und Tracker auf allen GerΓ€ten im (Heim-)Netzwerk ausblenden/blockieren lassen.

Der vorliegende Artikel bildet den Auftakt zu einer Artikelserie, in der verschiedene AdBlocker-LΓΆsungen vorgestellt werden. Wir beginnen mit Pi-hole, der in Kombination mit einer Fritz!Box, einer weit verbreiteten RouterlΓΆsung von AVM, konfiguriert wird. Der Fokus liegt dabei auf einer einfachen Konfiguration, die leicht aktualisiert werden kann und sich an AnfΓ€nger und Fortgeschrittene richtet.

2. Was wir erreichen wollen

Dies ist eine Schritt-fΓΌr-Schritt-Anleitung von der ersten Konfiguration eines Raspberry Pi bis zu dem Punkt, an dem Pi-hole alle DNS-Anfragen aus unserem Netzwerk beantwortet. Ziel ist es, ausgehende DNS-Anfragen an Werbe- und Tracking-Domains zu blockieren.

Wer direkt mit der Installation beginnen mΓΆchte, benΓΆtigt einen Raspberry Pi mit mindestens 512 MB RAM und eine (micro) SD-Karte mit mindestens 4 GB Speicher. Dann kann es direkt mit Punkt 4 weitergehen. Wer sich fΓΌr die technischen HintergrΓΌnde und den geplanten Aufbau interessiert, sollte zuerst weiterlesen.

2.1 Konzept | Technischer Hintergrund

Am Beispiel von In-App-Werbung mΓΆchte ich zunΓ€chst erlΓ€utern, wie Pi-hole technisch funktioniert. Nehmen wir an, ein App-Entwickler hat ein Werbemodul in seine App integriert. Bei jedem Start der App oder auch wΓ€hrend der Laufzeit kontaktiert die App bzw. das integrierte Modul die Adresse:

werbung.server1.de

Dieser Domainname muss jedoch zunΓ€chst in eine IP-Adresse ΓΌbersetzt werden, damit die Werbung von dort aus geladen werden kann. Diese Aufgabe ΓΌbernimmt das Domain Name System (DNS) – einer der wichtigsten Dienste im Internet, der fΓΌr genau diese Übersetzung zustΓ€ndig ist. Das Prinzip dahinter kennt jeder: Ihr gebt im Browser eine URI (also den Domainnamen) ein, dieser wird dann von einem DNS-Server in die zugehΓΆrige IP-Adresse ΓΌbersetzt. Namen sind eben leichter zu merken als IP-Adressen. In eurem Router sind daher ΓΌblicherweise DNS-Server von eurem Provider hinterlegt oder ihr habt manuell eigene eingetragen, die dann anschließend die Adresse Β»werbung.server1.deΒ« in eine IP-Adresse ΓΌbersetzen.

Dieses DNS-Prinzip macht sich Pi-hole zunutze. In seinem Speicher verwaltet Pi-hole eine Liste mit Domainnamen, die entweder Werbung ausliefern, den Nutzer tracken/verfolgen oder sich anderweitig negativ auf Sicherheit und PrivatsphΓ€re auswirken kΓΆnnen. Habt ihr Pi-hole installiert, wird die DNS-Abfrage zunΓ€chst mit der intern hinterlegten Liste abgeglichen. Befindet sich die Adresse

werbung.server1.de

in der Liste bzw. bei einem Treffer, wird die IP-Adresse nicht wie ΓΌblich aufgelΓΆst, sondern euer GerΓ€t bzw. die App erhΓ€lt sinngemÀß die Antwort: Β»Nicht erreichbarΒ« – die Übersetzung in die korrekte IP-Adresse wird also von Pi-hole unterdrΓΌckt. Die Folge: Die Werbung kann nicht von der tatsΓ€chlichen Quelle bzw. IP-Adresse nachgeladen werden. Statt der Werbung sieht der User einen Platzhalter oder schlicht nichts. Ein einfaches Prinzip, das die Werbung schon vor der Auslieferung blockiert – sogar noch vor der Übersetzung in die IP-Adresse:

DNS-Ad-Blocking

2.2 Netzwerkaufbau

In der Standardkonfiguration stellt Pi-hole seine DNS-Anfragen via UDP/TCP ΓΌber Port 53 an einen DNS-Server, wie Google, OpenDNS oder Quad9. Die Anfragen erfolgen jedoch unverschlΓΌsselt, also im Klartext. Selbst wenn man einen unzensierten und freien DNS-Server konfiguriert hat, besteht die MΓΆglichkeit, dass jemand die DNS-Anfragen mitliest und auswertet.

Im folgenden Netzwerkaufbau sehen wir, dass der Pi-hole seine DNS-Anfragen nicht direkt an einen DNS-Server eines Anbieters sendet, sondern an die lokale Fritz!Box. Diese wiederum leitet die Anfrage an einen Upstream-DNS-Server weiter. Im Gegensatz zu einem Standard-Pi-hole ist die Fritz!Box nΓ€mlich in der Lage, die DNS-Anfragen via DNS over TLS (DoT) zu verschlΓΌsseln. Dies erschwert das Mitlesen bzw. Auswerten des Surfverhaltens – bietet aber natΓΌrlich auch keinen hundertprozentigen Schutz (Stichwort: SNI, OCSP). Wer sein Surfverhalten Β»geheimΒ« halten mΓΆchte, muss dann auf den Tor-Browser zurΓΌckgreifen und sich an bestimmte Verhaltensregeln halten.

Nachfolgend mâchte ich kurz erlÀutern, was im Netz passiert, wenn ein Smartphone eine Website (www.kuketz-blog.de) aufrufen mâchte. ZunÀchst gibt der Nutzer die Adresse www.kuketz-blog.de in die Adresszeile des Browsers ein. Damit der Browser die Seite anzeigen kann, muss die Domain zunÀchst in die zugehârige IP-Adresse umgewandelt werden. Dazu stellt das Smartphone zunÀchst eine DNS-Anfrage [1] an den Pi-hole. Der Pi-hole prüft nun lokal in seinen Filterlisten, ob es sich bei der Domain um eine Werbe- oder Tracking-Domain handelt. Ist dies nicht der Fall, wird die DNS-Anfrage [2] an die Fritz!Box im lokalen Netzwerk weitergeleitet. Die Fritz!Box wiederum sendet die DNS-Anfrage [3] nun per DoT verschlüsselt an den hinterlegten (primÀren) DNS-Server. Nach Erhalt der zugehârigen IP-Adresse vom DNS-Server, wird die Fritz!Box diese Information nun an den Pi-hole [4] weiterreichen und dieser wiederum an das Smartphone. Anschließend kennt der Browser die zugehârige IP-Adresse der Domain www.kuketz-blog.de (46.38.242.112) und sendet die HTTP-Anfrage [5] zunÀchst an die lokale Fritz!Box. Diese wiederum leitet die HTTP-Anfrage [6] an den für die IP-Adresse 46.38.242.112 zustÀndigen Webserver weiter. Anschließend kann die Website an das Smartphone ausgeliefert werden.

Netzwerkaufbau

Zusammengefasst nehmen DNS-Anfragen den folgenden Weg:

Clients -> Pi-hole -> Fritz!Box -> Upstream-DNS-Server

Zu beachten gilt, dass sowohl IPv4 als auch IPv6 im Netzwerk benutzt wird. Der Pi-hole bekommt also eine private IPv6-Adresse (Unique Local Address (ULA)) von der Fritz!Box zugewiesen. GerΓ€te im Netzwerk kΓΆnnen dann mittels IPv4 oder IPv6 DNS-Anfragen an den Pi-hole senden.

2.3 Minimale Geschwindigkeitseinbußen

Die Fritz!Box ist im dargestellten Netzwerkaufbau eine weitere Zwischenstation, die DNS-Anfragen auf dem Weg zu ihrem Ziel passieren mΓΌssen. Das bedeutet zwangslΓ€ufig, dass die Pakete etwas lΓ€nger unterwegs sind. Außerdem wird statt ungesichertem UDP mit TLS gesichertes TCP (DoT) verwendet, was zusΓ€tzlichen Overhead bedeutet. Mit dem Benchmark-Tool DNSBench kann man herausfinden, wie groß die zusΓ€tzliche Latenz ist – das variiert natΓΌrlich je nach verwendetem Upstream-DNS-Server in der Fritz!Box.

Mit den ΓΆffentlichen DNS-Servern von AdGuard habe ich Folgendes gemessen:

  • UDP/TCP Port 53 (unverschlΓΌsselt): ca. 50 bis 80 Millisekunden
  • DNS over TLS Port 853 (verschlΓΌsselt): ca. 90 bis 140 Millisekunden

Die Latenz steigt also tatsΓ€chlich – einen spΓΌrbaren Unterschied beim Surfen konnte ich allerdings nicht feststellen. Das liegt vermutlich auch daran, dass Pi-hole viele Anfragen ohnehin aus dem Cache liefert.

2.4 Verwendete Software/Version

Nachfolgend mΓΆchte ich die verwendete Software kurz vorstellen. Insbesondere die Versionsnummern sind von Interesse, da sich die hier beschriebene Installation durch Updates Γ€ndern kann.

  • Basissystem: Raspberry Pi OS Lite (64 Bit) auf Basis von Debian GNU/Linux Bullseye
  • Pi-hole: Pi-hole v5.17.1 | FTL v5.23 | Web Interface v5.20.1
  • Fritz!OS: 7.80
  • Raspberry Pi: Raspberry Pi 3 Mod. B

Bitte beachten

Die Blog-BeitrÀge haben nicht wie EnzyklopÀdie-EintrÀge (bspw. Wikipedia) den Anspruch, dauerhaft aktuell und richtig zu sein, sondern beziehen sich wie Zeitungsartikel auf den Informationsstand zum Redaktionsschluss. Lediglich die Empfehlungsecke wird regelmÀßig aktualisiert.

3. Hardware: Raspberry Pi

Bereits auf einem Raspberry Pi Zero ist Pi-hole lauffΓ€hig. Da der Zero allerdings keinen Ethernet-Port hat, wΓΌrde ich auf ein anderes Modell zurΓΌckgreifen. Die aktuellen Raspberry Pi 4 sind fΓΌr diese Aufgabe fast schon ΓΌberdimensioniert. PersΓΆnlich verwende ich einen Raspberry Pi 3 Mod. B aus dem Jahr 2016. Ihr kΓΆnnt aber auch schon mit einem Raspberry Pi 1 Mod. B aus dem Jahr 2012 einsteigen – die offizielle Empfehlung lautet nur: Mindestens 512MB RAM.

Hinweis

Auf Wikipedia gibt es eine tabellarische Übersicht, die die Eigenschaften aller Raspberry Pi Modelle übersichtlich darstellt.

Wer noch keinen Raspberry Pi zu Hause hat, greift am besten zu einem KIT. Die offizielle Pi-hole Dokumentation empfiehlt bspw. das Official Pi-hole Raspberry Pi 4 Kit. Daran kΓΆnnt ihr euch orientieren. Anbei mein Setup:

  • Raspberry Pi 3 Modell B (inkl. WLAN)
  • Offizielles Micro USB Netzteil 2A – 5V fΓΌr Raspberry Pi 3
  • Offizielles GehΓ€use fΓΌr Raspberry Pi 3 (himbeer / weiß)
  • SanDisk Ultra Android microSDHC 16GB bis zu 80 MB/Sek Class 10

Ein Bildschirm oder eine externe Tastatur werden normalerweise nicht benΓΆtigt. Nach dem Aufspielen eines Raspberry Pi Images greifen wir ΓΌber eine Secure Shell (SSH) ΓΌber das Netzwerk auf den Pi zu.

4. Installation Betriebssystem

ZunΓ€chst wird ein Basissystem installiert. Die Raspberry Pi Foundation bietet ein Raspberry Pi OS Lite (64 Bit) auf ihrer Website zum Download an. Bei den Lite-Images handelt es sich um ein minimales System, das aktuell auf Debian Old-Stable (Bullseye) basiert. Der einfachste Weg, das System auf einer SD-Karte zu installieren, ist der Raspberry Pi Imager. Nachfolgend sind die Schritte kurz erklΓ€rt.

4.1 Raspberry Pi Imager

  • Installiert den Raspberry Pi Imager fΓΌr euer System (Windows, macOS oder Ubuntu)
  • Anschließend startet ihr das Programm und klickt auf OS WΓ„HLEN
  • Navigiert zu Β»Raspberry Pi OS (other) β†’ Raspberry Pi OS Lite (64-bit)Β« (0.3 GB)
  • Danach selektiert ihr im HauptmenΓΌ SD-KARTE WΓ„HLEN. WΓ€hlt die korrekte/gewΓΌnschte SD-Karte aus, auf dem das System installiert werden soll.
  • Vor dem Schreiben des Systems klickt ihr unten rechts auf das Zahnrad und wΓ€hlt dort Folgendes:
    • SSH aktivieren: Check
    • Benutzername und Passwort setzen:
      • Benutzername: pi
      • Passwort: raspberry
    • Telemetry aktvieren: Uncheck
  • Klickt auf SPEICHERN und anschließend im HauptmenΓΌ auf SCHREIBEN. Nachdem der Vorgang abgeschlossen ist, legt ihr die SD-Karte in den Raspberry Pi ein, verbindet das Ethernetkabel mit der Fritz!Box und schließt das Netzteil an.

Hinweis

Es gibt auch ein Video, das die Schritte nochmal visuell darstellt.

4.2 Alternativ: Manuelle Installation des Images

Ihr kΓΆnnt die Schritte natΓΌrlich auch manuell ausfΓΌhren. Das sieht dann wie folgt aus:

sudo dd bs=4M if=/Pfad/zum/Image/2023-05-03-raspios-bullseye-arm64-lite.img of=/dev/sdX conv=fsync

Stellt unbedingt sicher, dass ihr bei /dev/sdX das korrekte Device/GerΓ€t angeben habt (also die SD-Karte).

  • Nachdem das Image auf die SD-Karte geschrieben wurde, kΓΆnnt ihr auf das Dateisystem zugreifen. Navigiert auf die Partition /boot[fs] und legt dort folgende Dateien an:
    • ssh: Legt eine Datei mit der Bezeichnung ssh an. Dies ist erforderlich, um anschließend mittels Secure Shell (SSH) auf den Raspberry Pi zugreifen zu kΓΆnnen. Unter Windows gibt es diesen Ordner nicht, hier legt ihr die Datei direkt im Hauptverzeichnis der SD-Karte an.
    • userconf.txt: Anschließend wird eine Datei mit der Bezeichnung userconf.txt angelegt. Dort tragt ihr Folgendes ein:
pi:$6$T6s1r19kJcX4WPpC$W5K/SPq6HE84yK.GwLuS2tqQhV6W4g6vHe/bIsBeE2rHJpbRXeQIEAjP0KnlCU5ifFfq.t96.KWX81iGO3kQV/

Der Nutzername ist dann pi und das initiale Passwort raspberry.

  • Nachdem die Dateien angelegt sind, legt ihr die SD-Karte in den Raspberry Pi ein, verbindet das Ethernetkabel mit der Fritz!Box und schließt das Netzteil an.

4.3 Netzwerkverbindung Raspberry Pi

Ihr kânnt den Raspberry Pi nun zum ersten Mal starten. Im Normalfall sollte eure Fritz!Box einen bestimmten IP-Adressbereich reserviert haben, um mittels DHCP eine IP-Adresse an den Pi zu vergeben. Über das Webinterface der Fritz!Box vergeben wir nachfolgend eine feste IP-Adresse an den Pi:

  • Meldet euch am Webinterface der Fritz!Box an und navigiert zu Heimnetz β†’ Netzwerk. Dort sollte der Pi in der Liste der aktiven Verbindungen erscheinen. Über das Bleistiftsymbol am Ende der Zeile gelangt man zu den Details des GerΓ€tes. Legt dort folgende Optionen/Einstellungen fest:
    • Setzt ein HΓ€kchen bei Internetnutzung priorisiert
    • VerΓ€ndert unter IPv4-Adresse die letzte Zahl – nach dem dritten Punkt – und stellt damit eine feste IP-Adresse ein
    • Klickt anschließend auf Übernehmen

Das sieht dann unter FRITZ!OS 7.57 wie folgt aus:

Raspberry Pi: Feste IP-Adresse

Hinweis

Die hier verwendete IP-Adresse (192.168.50.5) mΓΌsst ihr in der Folge dann immer entsprechend durch eure selbst vergebene ersetzen.

Damit die Fritz!Box dem Raspberry Pi die eingestellte IP-Adresse zuweist, mΓΌsst ihr das Netzwerkkabel ziehen oder den Pi kurz vom Strom trennen bzw. neu starten. Danach ist euer Raspberry Pi unter der vergebenen IP-Adresse per SSH erreichbar.

4.4 Einrichtung Raspberry Pi

Unter macOS oder Linux starten wir eine SSH-Sitzung ΓΌber das Terminal – fΓΌr Windows kann PuTTY verwendet werden. Die Zugangsdaten lauten: Benutzername (pi) / Passwort (raspberry)

ssh pi@192.168.50.5

ZunΓ€chst Γ€ndern wir das initial vergebene Passwort:

passwd

Die Zeitzone (Europe/Berlin) passen wir mit raspi-config an:

sudo raspi-config
Localisation Options -> Timezone -> Europe -> Berlin
Finish

Anschließend aktualisieren wir die Paketdatenbank und bringen die vorinstallierte Software auf den neuesten Stand:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo apt-get autoremove

Das dauert fΓΌr gewΓΆhnlich etwas. Nach Abschluss des Vorgangs wird ein Neustart eingeleitet:

sudo reboot

5. Pi-hole

Vor der Installation von Pi-hole konfigurieren wir die Fritz!Box so, dass der Raspberry Pi bereits eine private IPv6-Adresse (ULA) zugewiesen bekommt. Über diese IPv6-Adresse ist der Pi-hole anschließend via IPv6 für die Clients im Netzwerk erreichbar.

5.1 Vor-Einstellungen Fritz!Box

Navigiert zu Heimnetz β†’ Netzwerk β†’ Netzwerkeinstellungen β†’ IPv6-Einstellungen (fast ganz unten). Passt die Einstellungen dort nun wie folgt an:

  • Router Advertisement im LAN aktiv: Check
    • Unique Local Addresses (ULA) immer zuweisen: Check
    • ULA-PrΓ€fix manuell festlegen
      • fd 00 : [leer] : [leer] : [leer] /64

Das sieht dann wie folgt aus:

Fritz!Box ULA

5.2 Installation

Wir melden uns erneut ΓΌber SSH am Pi-hole an und starten die Installation mit folgendem Befehl:

sudo curl -sSL https://install.pi-hole.net | bash

Der Installationsassistent bietet Optionen zur Konfiguration an. Diese werden wie folgt vorgenommen:

Static IP Address**
   Yes**: Set static IP using current values
Upstream DNS Provider
   **OpenDNS (ECS, DNSSEC)
**Blocklists
   **Yes (include StevenBlack's)**
Admin Web Interface
   **Yes**
Web Server
   **Yes**
Enable Logging
   **Yes**
Privacy mode FTL
   **Show everything (private Installation)**

Nach der Installation werden die IPv4- und die IPv6-Adresse des Pi-Holes angezeigt. Notiert euch beide Adressen oder macht einen Screenshot, da beide Angaben noch benâtigt werden. Ebenso die Adresse, unter der das Webinterface erreichbar ist. Das Passwort für das Webinterface ist standardmÀßig etwas kurz, wir kânnen dies mit folgendem Befehl Àndern und ein sicheres Passwort vergeben:

pihole -a -p

Wer die Informationen mit den IP-Adressen zu schnell wegklickt, sollte nicht verzagen: Die IP4- und IPv6-Adressen des Pi-hole kΓΆnnen ebenfalls ΓΌber das Terminal ermittelt werden.

  • IPv4:
ip address | grep "inet 192"
  • IPv6:
ip address | grep "inet6 fd"

6. Konfiguration

Wir wollen nun erreichen, dass alle DNS-Anfragen von den Clients zunΓ€chst an den Pi-hole gestellt werden. Dieser leitet die Anfrage dann an die Fritz!Box weiter, die gegenΓΌber dem Pi-hole als Upstream-DNS-Server fungiert. In der Fritz!Box wird der Pi-hole per DHCP als lokaler DNS-Server fΓΌr alle Clients bekannt gemacht. Falls kein DHCP verwendet wird, muss der DNS-Server auf den Clients manuell geΓ€ndert werden.

6.1 Fritz!Box: Pi-hole als DNS-Server

Nachfolgend wird Pi-hole als lokaler DNS-Server fΓΌr alle Clients bekannt gemacht.

ZunΓ€chst werden die IPv4-Netzwerkeinstellungen auf der Fritz!Box angepasst. Navigiert dazu zu Heimnetz β†’ Netzwerk β†’ Netzwerkeinstellungen β†’ IPv4-Einstellungen (fast ganz unten):

  • Lokaler DNS-Server: **192.168.50.5 ** [hier die IPv4-Adresse des Pi-hole eintragen]

Anschließend passen wir die IPv6-Netzwerkeinstellungen ΓΌber Heimnetz β†’ Netzwerk β†’ Netzwerkeinstellungen β†’ IPv6-Einstellungen (fast ganz unten) wie folgt an:

  • DNSv6-Server auch ΓΌber Router Advertisement bekanntgeben (RFC 5006): Check
  • Lokaler DNSv6-Server: **fd00 : 0 : 0 : 0 : eae7 : a43a : 2f8c : 9fd6 ** [hier die IPv6-Adresse des Pi-hole eintragen]

6.2 Fritz!Box: DoT-fΓ€hige DNS-Server hinterlegen

DNS-Anfragen aus dem lokalen Netzwerk sollen DoT-verschlΓΌsselt an einen Upstream-DNS-Server gesendet werden. Dies ΓΌbernimmt die Fritz!Box. Dazu ΓΆffnet man die Einstellungen unter Internet β†’ Zugangsart β†’ DNS-Server. Nachfolgend habe ich die DNS-Server von AdGuard (bevorzugt) und dnsforge.de (alternativ) verwendet.

  • DNSv4-Server
    • Andere DNSv4-Server verwenden: Check
      • Bevorzugter DNSv4-Server: 94.140.14.140
      • Alternativer DNSv4-Server: 176.9.93.198
  • DNSv6-Server
    • Andere DNSv6-Server verwenden: Check
      • Bevorzugter DNSv6-Server: 2a10:50c0::1:ff
      • Alternativer DNSv6-Server: 2a01:4f8:151:34aa::198
  • DNS over TLS (DoT)
    • VerschlΓΌsselte NamensauflΓΆsung im Internet (DNS over TLS): Check
      • ZertifikatsprΓΌfung fΓΌr verschlΓΌsselte NamensauflΓΆsung im Internet erzwingen: Check
    • AuflΓΆsungsnamen der DNS-Server
unfiltered.adguard-dns.com
dnsforge.de

6.3 Pi-hole

Abschließend ist noch eine Anpassung über das Webinterface des Pi-hole erforderlich. WÀhrend der Installation wurde als Upstream-DNS-Server OpenDNS (ECS, DNSSEC) gewÀhlt, dies muss angepasst werden. Wir geben folgende Adresse in den Browser ein und melden uns an:

192.168.50.5/admin

Unter Settings β†’ DNS nehmen wir folgende Einstellungen vor:

  • Alle HΓ€kchen bei OpenDNS (ECS, DNSSEC) und auch bei allen weiteren DNS-Servern (falls vorhanden) entfernen
  • Custom 1 (IPv4): 192.168.50.1 (IPv4-Adresse der Fritz!Box)
  • Custom 3 (IPv6): fd00::de15:c8ff:fe13:9af5 (IPv6-Adresse der Fritz!Box)

Hinweis

Die Unique Local Address bzw. die private IPv6-Adresse der Fritz!Box kΓΆnnt ihr wie folgt herausfinden. Meldet euch im Webinterface der Fritz!Box an und ΓΆffnet die Einstellungen unter Netzwerk β†’ Netzwerkeinstellungen β†’ IPv6-Einstellungen. Direkt oben unter Β»Unique Local AddressesΒ« findet ihr hinter der Bezeichnung Unique Local Address Ihrer FRITZ!Box die IPv6-Adresse eurer Fritz!Box.

Pi-hole Upstream-DNS-Server

Anschließend wird ganz unten auf der Seite Use Conditional Forwarding angekreuzt und die folgenden Werte eingetragen:

  • Local network in CIDR notation: 192.168.50.0/24 ** (an euer Netzwerk anpassen) * IP address of your DHCP server (router): **192.168.50.1 (IPv4-Adresse eurer Fritz!Box)
  • Local domain name (optional): fritz.box

Nach einem Klick auf Save ist euer Pi-hole bereits einsatzbereit. Startet eure GerΓ€te im Netzwerk neu, damit ihnen der neue DNS-Server (Pi-hole) per DHCP mitgeteilt wird. Danach werden ausgehende DNS-Anfragen ΓΌber das Pi-hole gefiltert.

7. Anpassungen: Filterlisten, Updates und Co. [optional]

7.1 Filterlisten

Die mitgelieferte Filterliste (StevenBlack) entfernt bereits eine Menge Werbung, Tracker und anderen unnΓΆtigen Netzballast. Im Webinterface von Pi-hole kann man ΓΌber das MenΓΌ Adlists weitere Filterlisten hinzufΓΌgen. PersΓΆnlich verwende diese drei Filterlisten:

NatΓΌrlich kΓΆnnen auch andere/weitere (kombinierte) Filterlisten (bspw. The Firebog, WindowsSpyBlocker (Hosts)) aktiviert bzw. hinzugefΓΌgt werden. Eventuelle Überschneidungen werden von Pi-hole automatisch entfernt – doppelte EintrΓ€ge wΓ€ren fΓΌr die Verarbeitung der Filterlisten zu ineffizient. Nach dem HinzufΓΌgen der Filterlisten kann ein manuelles Update angestoßen werden, damit diese sofort verwendet werden. Γ–ffnet dazu den MenΓΌpunkt Tools β†’ Update Gravity und klickt auf den Update-Button. StandardmÀßig aktualisiert Pi-hole die Filterlisten einmal pro Woche.

Durch die Aktivierung von Filterlisten kann es zum sogenannten Β»OverblockingΒ« kommen. Das bedeutet, dass Domains, die fΓΌr die FunktionalitΓ€t einer App/Website notwendig sind, fΓ€lschlicherweise gefiltert werden. Es muss dann im Einzelfall entschieden werden, welche Domain(s) ΓΌber das Webinterface in Pi-hole freigegeben werden. Meldet euch dazu am Pi-hole-Webinterface an und klickt im MenΓΌ auf Query Log – dort werden alle DNS-Anfragen protokolliert. Am Ende jeder Zeile kann eine Aktion fΓΌr die Domain ausgewΓ€hlt werden:

  • Blacklist: Die Domain wird in Zukunft gefiltert, d.h. blockiert
  • Whitelist: Die Domain wird in Zukunft nicht mehr gefiltert, d.h. nicht mehr blockiert

Action: Whitelist/Blacklist

7.2 Update-Verhalten anpassen [Fortgeschrittene]

Über die Konfigurationsdatei /etc/cron.d/pihole kann das Update-Verhalten von Pi-hole an die eigenen Bedürfnisse angepasst werden. Persânlich habe ich die Aktualisierung von Filterlisten bspw. auf Sonntagabend um 22:30 Uhr gelegt:

sudo nano /etc/cron.d/pihole
# Pi-hole update ad sources
30 22 * * 0   root    PATH="$PATH:/usr/sbin:/usr/local/bin/" pihole updateGravity>/var/log/pihole/pihole_updateGravity.log || cat /var/log/pihole/pihole_updateGravity.log

7.3 Energie/Strom sparen [Fortgeschrittene]

Ein Raspberry Pi verfΓΌgt ΓΌber verschiedene Schnittstellen wie Audio, Bluetooth, WiFi etc. Die meisten Schnittstellen sind fΓΌr den Betrieb des Pi-hole nicht notwendig. Das Deaktivieren dieser Schnittstellen reduziert den Stromverbrauch des kleinen Einplatinencomputers. Nach dem Abschalten von Audio, Bluetooth, WiFi und HDMI habe ich im Betrieb noch einen Verbrauch von ca. 1,2 bis 1,5 Watt gemessen – je nach Auslastung. Das bedeutet, dass der Stromverbrauch eines Raspberry Pi 3 Mod. B von ca. 1,8 Watt um ca. 0,5 bis 0,6 Watt reduziert werden kann. Die notwendigen Anpassungen kΓΆnnen direkt in einer Konfigurationsdatei (config.txt) vorgenommen werden, nachdem man sich per SSH mit dem Pi verbunden hat:

sudo nano /boot/config.txt
# Disable analog audio
dtparam=audio=off
# Disable audio via HDMI
dtoverlay=vc4-kms-v3d,noaudio
# Disable Bluetooth, WiFi and HDMI
dtoverlay=disable-bt
dtoverlay=disable-wifi
hdmi_blanking=1

Die Zeilen mit dtparam=audio und dtoverlay sind bereits vorhanden und mΓΌssen angepasst werden. Die Befehle zum Deaktivieren von Bluetooth, WiFi und HDMI kΓΆnnen einfach am Ende der Konfigurationsdatei hinzugefΓΌgt werden.

7.4 Schreibzugriffe auf SD-Karte minimieren [Fortgeschrittene]

Permanente SchreibvorgΓ€nge kΓΆnnen die Lebensdauer einer SD-Karte verkΓΌrzen. Nachfolgend werden zwei MΓΆglichkeiten vorgestellt, die Lebensdauer der SD-Karte in Kombination mit Pi-hole (mΓΆglicherweise) zu verlΓ€ngern.

StandardmÀßig schreibt Pi-hole jede Minute in eine Log-Datei bzw. eine SQL-Lite-Datenbank (SQLite3). Durch die zeitliche Streckung dieses Schreibvorgangs auf 30 Minuten kann die SD-Karte etwas geschont werden. Außerdem werden wir die Langzeitdaten (Long-term Data), die Pi-hole sammelt, von 365 Tagen auf 30 Tage reduzieren:

sudo nano /etc/pihole/pihole-FTL.conf
#; How often do we store queries in FTL's database [minutes] | Default: 1.0
DBINTERVAL=30
#; IP addresses older than the specified number of days are removed from database | Default: 365
MAXDBDAYS=30

ZusΓ€tzlich besteht die MΓΆglichkeit, bestimmte Ordner, auf die hΓ€ufig Schreibzugriffe erfolgen, in eine RAM-Disk auszulagern. Mit dem Linux-Tool tmpfs ist dies einfach zu bewerkstelligen. Auf Linux-Systemen, die journald fΓΌr die Protokollierung verwenden, hat dieser Schritt jedoch wenig Einfluss auf eine mΓΆgliche VerlΓ€ngerung der Lebensdauer. Die SchreibvorgΓ€nge sind in der Regel gebΓΌndelt und erfolgen ca. alle 5 Minuten. Wer dies dennoch umsetzen mΓΆchte, kann bspw. die Verzeichnisse /tmp und /var/log in eine tmpfs-RAM-Disk mit jeweils 100 MB RAM auslagern:

sudo nano /etc/fstab
tmpfs   /tmp    tmpfs   defaults,noatime,nosuid,size=100m   0   0
tmpfs   /var/log   tmpfs   defaults,noatime,nosuid,mode=0755,size=100m   0   0

Hinweis

Nach einem Absturz oder Neustart des GerÀtes sind Dateien/Informationen in diesen Verzeichnissen verschwunden. Entweder man erstellt sich einen Cronjob, der die Daten regelmÀßig vom RAM auf die SD-Karte schreibt oder man verwendet ein Tool wie Log2Ram.

Alle Lese- und SchreibvorgΓ€nge auf die SD-Karte (bzw. Fesplatte) kΓΆnnen ΓΌbrigens mit dem Tool fatrace dargestellt werden:

sudo apt-get install fatrace

Mit dem folgenden Kommando kann fatrace so eingestellt werden, dass nur Schreiboperationen ausgegeben werden:

sudo fatrace --filter=W --timestamp

Das sieht dann bspw. wie folgt aus:

09:14:49.934532 pihole-FTL(572): CW /etc/pihole/pihole-FTL.db
09:14:50.946265 php-cgi(654): CW /etc/pihole/gravity.db
[…]

7.5 Automatische Updates: System und Pi-hole [Fortgeschrittene]

Beim Thema Updates bzw. Aktualisierungen mΓΌssen wir zunΓ€chst zwischen verschiedenen Komponenten unterscheiden:

  • Updates des Basissystems bzw. der installierten Debian-Pakete
  • Update des Pi-hole bzw. FTL
  • Update der hinterlegten Filterlisten

Die Filterlisten werden von Pi-hole standardmÀßig einmal pro Woche aktualisiert. Diesen Punkt kânnen wir also abhaken. Zur automatischen Aktualisierung von Pi-hole bzw. seiner Komponenten wie FTL sagt das Pi-hole-Projekt:

This is technically possible, but we do not recommend auto-updating Pi-hole. Some updates are breaking, and if you wake up in the morning with an update that doesn’t meet your needs (and no backup) you will have a problem. The dashboard will notify you when an update is available. Read the release notes, then if you want to update do so manually.

Über die WeboberflΓ€che von Pi-hole wird man ΓΌber ein anstehendes Update demnach informiert. Nach Durchsicht der Versionshinweise bzw. der Γ„nderungen sollte das Update dann vom Benutzer manuell angestoßen werden.

Das Basissystem hingegen, das auf Debian basiert, kann nach meiner Erfahrung automatisch (Unattended Upgrades) aktualisiert werden. Dazu sind folgende Schritte notwendig:

ZunΓ€chst werden die Pakete unattended-upgrades und apt-listchanges installiert:

sudo apt-get install unattended-upgrades apt-listchanges

Danach passen wir die Konfigurationsdatei an:

sudo nano /etc/apt/apt.conf.d/50unattended-upgrades

Damit automatisch Pakete vom Raspbian-Projekt eingespielt werden, ist die folgende Anpassung notwendig. Nach

"origin=Debian,codename=${distro_codename}-security,label=Debian-Security";

werden die folgenden zwei Zeilen hinzugefΓΌgt:

"origin=Raspbian,codename=${distro_codename},label=Raspbian";
"origin=Raspberry Pi Foundation,codename=${distro_codename},label=Raspberry Pi Foundation";

Mit dem nachfolgenden Befehl kann eine Paketprüfung manuell angestoßen werden:

sudo unattended-upgrade -d

Hinweis

UnattendedUpgrades aktualisiert nur die Pakete der aktuell installierten Debian/Rasbian-Version. Upgrades auf neue Debian-Versionen (bspw. von Bullseye auf Bookworm) mΓΌssen manuell durchgefΓΌhrt werden.

8. BenΓΆtige ich noch einen weiteren AdBlocker?

Pi-hole blockiert Werbung und Tracker auf DNS-Ebene. Insbesondere GerΓ€te, auf denen sich bspw. kein AdBlocker installieren lΓ€sst, profitieren also vom Pi-hole. Auf Computern oder GerΓ€ten, auf denen AdBlocker wie uBlock Origin im Browser installiert werden kΓΆnnen, sollte dies dennoch weiterhin geschehen. Denn diese verfΓΌgen ΓΌber zusΓ€tzliche Filtermechanismen und Logik. Im Idealfall blockieren die Browser-Add-ons also all jene Gemeinheiten, die der Pi-hole auf DNS-Ebene nicht erkennt. Der Pi-hole ist eure erste Verteidigungslinie – ein Browser-Add-on wie uBlock Origin Β»eliminiertΒ« dann den Rest.

9. Fazit

In diesem Artikel wurde gezeigt, wie man ein Pi-hole in das (Heim-)Netzwerk einer Fritz!Box integriert. Alle DNS-Anfragen werden TLS-verschlΓΌsselt (DoT) an Upstream-DNS-Server gesendet, die in der Fritz!Box hinterlegt sind. Somit agiert Pi-hole nur im lokalen Netzwerk und filtert zuverlΓ€ssig Werbung/Tracker heraus.

Im nΓ€chsten Teil der Artikelserie wird Pi-hole in Kombination mit unbound konfiguriert, um die AbhΓ€ngigkeit zu den DNS-Servern bzw. Providern aufzulΓΆsen. Alle DNS-Anfragen werden dann direkt an die Root-Server des Internets gestellt. Einsteigern empfehle ich jedoch, das vorliegende Setup umzusetzen.


= Pi-hole: Einrichtung und Konfiguration mit unbound – AdBlocker Teil2

1. unbound

Pi-hole mit unbound

Im ersten Teil der Artikelserie Β»AdBlockerΒ« wurde gezeigt, wie man ein Pi-hole in das (Heim-)Netzwerk einer Fritz!Box integriert. Nach der Umsetzung werden Werbung, Tracker, Affiliates, Telemetrie, Malware, Scam etc. zuverlΓ€ssig herausgefiltert – das Internet wird fΓΌr Clients im Netzwerk ein StΓΌck sauberer.

Der vorliegende Artikel beschreibt, wie man den rekursiven DNS-Server unbound auf einem Pi-hole konfiguriert. Dadurch wird nicht nur die AbhΓ€ngigkeit von ΓΆffentlichen DNS-Servern aufgehoben, sondern auch die DNS-Abfragen werden schneller beantwortet. Die Konfiguration richtet sich an fortgeschrittene Benutzer – AnfΓ€ngern empfehle ich, das Setup aus dem ersten Teil zu verwenden.

2. Was wir erreichen wollen

Voraussetzung fΓΌr die Installation bzw. Konfiguration von unbound ist ein bereits funktionierender Pi-hole, wie er im ersten Teil vorgestellt wurde. Habt ihr dieses Setup umgesetzt, kΓΆnnt ihr nahtlos mit den folgenden Schritten fortgefahren. Vor der Umsetzung empfehle ich, den ersten Teil noch einmal in Ruhe zu lesen.

Unbound Γ€ndert nichts am ursprΓΌnglichen Ziel: ausgehende DNS-Anfragen an Werbe- und Tracking-Domains zu blockieren. Wir verzichten jedoch auf den Mittelsmann – den vorgeschalteten DNS-Server – und beseitigen damit die AbhΓ€ngigkeit von einem Anbieter. Durch die Installation von unbound werden wir sozusagen zu unserem eigenen DNS-Server-Anbieter.

2.1 Vor- und Nachteile von unbound

Unbound ist ein validierender (DNSSEC), rekursiver DNS-Server, der Anfragen in einem Cache zwischenspeichert. Entwickelt wird die Software von NLnet Labs – der Quellcode ist vollstΓ€ndig auf GitHub verfΓΌgbar und steht unter der BSD-Lizenz. Unbound lΓ€uft auf allen Linux- und BSD-Distributionen sowie auf macOS. Es ist in allen Standard-Repositories der gΓ€ngigen Linux-Distributionen enthalten.

Was Γ€ndert sich aber durch den Einsatz von unbound auf einem Pi-hole? Diese Frage wird im Folgenden nΓ€her beleuchtet. Starten wir mit einem Zitat aus der Pi-hole Dokumentation:

Pi-hole enthÀlt einen DNS-Server zur Zwischenspeicherung und Weiterleitung, der als FTLDNS bekannt ist. Nach Anwendung der Sperrlisten leitet er die von den Clients gestellten Anfragen an konfigurierte Upstream-DNS-Server weiter. Wie jedoch von mehreren Benutzern in der Vergangenheit erwÀhnt wurde, führt dies zu einigen Bedenken hinsichtlich des Datenschutzes, da sich letztlich die Frage stellt: Wem kann man vertrauen? In letzter Zeit sind immer mehr kleine (und nicht so kleine) DNS-Upstream-Anbieter auf dem Markt aufgetaucht, die mit kostenlosen und privaten DNS-Diensten werben, aber woher weiß man, dass sie ihre Versprechen halten? Richtig, man kann es nicht.

Lasst uns das Problem klar benennen: Es geht um Vertrauen. Wir mΓΌssen darauf vertrauen, dass unser DNS-Server-Anbieter unsere DNS-Anfragen nicht aufzeichnet und/oder analysiert. PersΓΆnlich halte ich die DNS-Server-Anbieter in der Empfehlungsecke fΓΌr vertrauenswΓΌrdig, mΓΆchte aber betonen, dass ich nicht mit absoluter Sicherheit sagen kann, dass keiner dieser Anbieter jemals sein Versprechen bricht und beispielsweise DNS-Anfragen protokolliert.

Mit unbound lΓΆsen wir die AbhΓ€ngigkeit zu einem DNS-Server-Anbieter auf. Daraus ergeben sich folgende Vorteile:

  • PrivatsphΓ€re: Unbound wird die NamensauflΓΆsung ΓΌber einen Root-Nameserver starten und sich bis zum zustΓ€ndigen autoritativen Nameserver Β»durchfragenΒ«, der den Domainnamen in die zugehΓΆrige IP-Adresse ΓΌbersetzen kann. Wir verzichten also auf einen zentralen DNS-Mittelsmann, der unsere DNS-Anfragen aufzeichnen und/oder analysieren kΓΆnnte.
  • Geschwindigkeit: Pi-hole selbst hat bereits einen Cache fΓΌr DNS-Anfragen integriert. Mit unbound und den entsprechenden Konfigurationsparametern (bswp. aggressive-nsec, prefetch, serve-expired etc.) lassen sich die Antwortzeiten abermals minimieren.

Der Verzicht auf einen DNS-Mittelsmann geht allerdings auch mit folgendem Nachteil einher:

  • Keine VerschlΓΌsselung: Anfragen an die Root-Nameserver bzw. autoritativen Nameserver erfolgen unverschlΓΌsselt via UDP/TCP ΓΌber Port 53. Es besteht also die MΓΆglichkeit, dass jemand die DNS-Anfragen mitliest und auswertet. Um dieses Risiko zu verringern, wird im ersten Teil ein Setup beschrieben, bei dem die DNS-Anfragen via DNS over TLS (DoT) verschlΓΌsselt werden. Diese MΓΆglichkeit kΓΆnnen wir im folgenden Setup leider nicht anwenden. Unbound unterstΓΌtzt zwar DNS over TLS (DoT) und auch DNS over HTTPS (DoH), aber die Root-Nameserver unterstΓΌtzen diese Protokolle (noch) nicht. Wenn wir also auf einen DNS-Mittelsmann verzichten wollen, mΓΌssen wir auch auf die VerschlΓΌsselung unserer DNS-Anfragen verzichten. Der Einsatz von DNSSEC unter unbound stellt aber zumindest sicher, dass die zurΓΌckgelieferten Daten echt (AuthentizitΓ€t) und unverΓ€ndert (IntegritΓ€t) sind.

Hinweis

In diesem Zusammenhang mΓΆchte ich noch einmal an meinen Hinweis im ersten Teil erinnern. Wer wirklich Gefahr lΓ€uft, dass sein Surfverhalten mitgelesen und ausgewertet wird, sollte auf den Tor-Browser zurΓΌckgreifen und bestimmte Verhaltensregeln beachten.

2.2 Ablauf einer DNS-Abfrage unbound | Pi-hole

Nachfolgend ist der Ablauf einer DNS-Abfrage von unbound in Kombination mit Pi-hole fΓΌr die Domain kuketz-blog.de dargestellt:

unbound DNS-Request

  • [1] Ein Client fragt den Pi-hole nach der Domain kuketz-blog.de
  • [2] Pi-hole ΓΌberprΓΌft seinen Cache und antwortet, wenn die zugehΓΆrige IP-Adresse bereits bekannt ist
  • [3] Pi-hole ΓΌberprΓΌft seine Filterliste und antwortet, wenn die Domain gesperrt ist
  • [4] Da keines der beiden Szenarien zutrifft, sendet Pi-hole die Anfrage an den (lokalen) rekursiven DNS-Server – also an unbound
  • [5] unbound sendet die Anfrage nun an einen Root-Nameserver und fragt, wer fΓΌr die Top-Level-Domain (TLD) .de zustΓ€ndig ist
  • [6] Der Root-Nameserver antwortet mit einem Verweis auf einen TLD-Server fΓΌr .de
  • [7] An den TLD-Server sendet unbound anschließend eine Anfrage, wer die Domain kuketz-blog.de verwaltet
  • [8] Der TLD-Server wiederum antwortet mit einem Verweis auf den autoritativen Nameserver fΓΌr kuketz-blog.de
  • [9] Im letzten Schritt fragt unbound nun den autoritativen Nameserver nach der IP-Adresse fΓΌr kuketz-blog.de
  • [10] Der autoritative Nameserver ΓΌbermittelt die IP-Adresse der Domain kuketz-blog.de an unbound
  • [11] unbound gibt die IP-Adresse an Pi-hole weiter, der wiederum dem Client die Antwort auf seine Anfrage mitteilt
  • [12] Der Client bzw. Browser kann nun ΓΌber die IP-Adresse die Website kuketz-blog.de laden/darstellen

In diesem Ablauf werden drei verschiedene Arten von DNS-Servern benannt: Root-Nameserver, TLD-Nameserver und autoritative Nameserver. Um die Unterschiede zwischen diesen drei Typen besser zu verstehen, lest bitte den Artikel Β»Welche verschiedenen Typen von DNS-Servern gibt es?Β«.

Hinweis

Der Ablauf beinhaltet die QNAME Minimisation.

2.3 Verwendete Software/Version

Nachfolgend mΓΆchte ich die verwendete Software kurz vorstellen. Insbesondere die Versionsnummern sind von Interesse, da sich die hier beschriebene Installation durch Updates Γ€ndern kann.

3. unbound

Wenn die im ersten Teil beschriebene Einrichtung abgeschlossen ist, kann nahtlos mit den folgenden Schritten fortgefahren werden. Die Inbetriebnahme von unbound ist schnell erledigt und besteht aus den folgenden Schritten: Installation, Erstellen einer Konfigurationsdatei, Anpassen der Pi-hole-Konfiguration und Testen des Setups. Die Installationsanleitung fΓΌr unbound in der Pi-hole Dokumentation ist eine gute Vorlage. Ich habe mich im Folgenden daran orientiert und nur kleine Anpassungen vorgenommen.

3.1 Installation

ZunΓ€chst wird unbound mit einem Terminalbefehl installiert:

sudo apt install unbound

Da wir unbound über den Debian-Paketmanager installieren, wird die root.hints automatisch als AbhÀngigkeit des Pakets dns-root-data installiert. Die root.hints wird dann automatisch vom Paketmanager aktualisiert. Die root.hints wird benâtigt, wenn eine Adresse/Domain nicht im Cache gespeichert ist. In diesem Fall muss unbound »ganz oben« am Ursprung beginnen und die Root-Nameserver befragen, um zu wissen, wo die Top-Level-Domain für die entsprechende Adresse/Domain zu finden ist. Wenn das Paket regelmÀßig aktualisiert wird, ist kein manuelles Eingreifen erforderlich.

3.2 Konfiguration

Als Vorlage fΓΌr die unbound-Konfiguration wird die Konfiguration des Pi-hole-Projekts verwendet. Diese zeichnet sich durch folgende Eigenschaften aus:

  • Es werden nur DNS-Anfragen von der lokalen Pi-Hole-Installation beantwortet (auf Port 5335)
  • Beantwortung von UDP- und TCP-DNS-Anfragen
  • ÜberprΓΌfung der DNSSEC-Signaturen und verwerfen von BOGUS-Domains
  • Sicherheits- und Datenschutzoptimierungen
  • Kompatibel mit IPv4- und IPv6-Netzwerk

Mit folgendem Befehl legen wir eine neue Konfigurationsdatei an:

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

Kopiert den Inhalt und fΓΌgt ihn direkt in die eben angelegte Konfigurationsdatei ein:

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.
    # IP fragmentation is unreliable on the Internet today, and can cause
    # transmission failures when large DNS messages are sent via UDP. Even
    # when fragmentation does work, it may not be secure; it is theoretically
    # possible to spoof parts of a fragmented DNS message, without easy
    # detection at the receiving end. Recently, there was an excellent study
    #>>> Defragmenting DNS - Determining the optimal maximum UDP response size for DNS <<< # by Axel Koolhaas, and Tjeerd Slokker (https://indico.dns-oarc.net/event/36/contributions/776/)
    # in collaboration with NLnet Labs explored DNS using real world data from the
    # the RIPE Atlas probes and the researchers suggested different values for
    # IPv4 and IPv6 and in different scenarios. They advise that servers should
    # be configured to limit DNS messages sent over UDP to a size that will not
    # trigger fragmentation on typical network links. DNS servers can switch
    # from UDP to TCP when a DNS response is too big to fit in this limited
    # buffer size. This value has also been suggested in DNS Flag Day 2020.
    edns-buffer-size: 1232

    # 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


</file>
==== Hinweis ====

Alle unbound-Befehle (mit den Default-Werten) sind beim Debian-Projekt nΓ€her erlΓ€utert. Da auf dem Pi-hole (Version 5.17.1) in Kombination mit dem offiziellen Raspberry Pi OS Lite (64 Bit) immer noch ein Debian Bullseye lΓ€uft, mΓΌssen wir uns an der [[https://manpages.debian.org/bullseye/unbound/unbound.conf.5.en.html|dazugehΓΆrigen unbound.conf]] (unbound Version 1.13.1) fΓΌr Bullseye orientieren.

Damit Pi-hole das Limit (1232) des EDNS Reassembly Buffers berΓΌcksichtigt, wird eine weitere Konfigurationsdatei erstellt:
<code>


sudo nano /etc/dnsmasq.d/99-edns.conf

Der Inhalt ist wie folgt:

edns-packet-max=1232

Danach ist die Konfiguration abgeschlossen und unbound kann gestartet werden. Wir werden dies jedoch auf einen spΓ€teren Zeitpunkt verschieben und noch weitere Konfigurationseinstellungen vornehmen. Ab hier weiche ich von der unbound Installationsanleitung des Pi-hole-Projekts ab.

3.3 IPv6: do-ip6

In der Konfiguration des Pi-hole-Projekts ist IPv6 standardmÀßig deaktiviert. Das bedeutet aber nicht, dass eure IPv6 fÀhigen Clients keine IPv6 Domains mehr auflâsen bzw. aufrufen kânnen. Das funktioniert wunderbar. Der Parameter do-ip6 steuert lediglich das Verhalten von unbound in Bezug auf IPv6:

Enable or disable whether ip6 queries are answered or issued. Default is yes. If disabled, queries are not answered on IPv6, and queries are not sent on IPv6 to the internet nameservers. With this option you can disable the ipv6 transport for sending DNS traffic, it does not impact the contents of the DNS traffic, which may have ip4 and ip6 addresses in it.

Wenn man also mΓΆchte, dass unbound DNS-Anfragen ΓΌber IPv6 an die Nameserver sendet, kann man diese Option aktivieren. Wenn zusΓ€tzlich die Option prefer-ip6 aktiviert ist, wird IPv6 gegenΓΌber IPv4 beim Senden von DNS-Anfragen bevorzugt.

Ich persΓΆnlich habe beide Parameter der Standardkonfiguration unverΓ€ndert gelassen, also IPv6 ausgeschaltet. Da diese beiden Parameter immer wieder fΓΌr Verwirrung sorgen, wollte ich nur kurz darauf eingehen.

3.4 Erweiterung der Konfiguration

Die unbound-Konfiguration des Pi-hole-Projektes fΓΌr den Pi-hole ist eher konservativ ausgelegt. Die PrioritΓ€t liegt auf einer funktionierenden Konfiguration. Dies ist verstΓ€ndlich, da zusΓ€tzliche Befehle oder Γ„nderungen das Verhalten von unbound negativ beeinflussen kΓΆnnen. Die Folge: DNS-AuflΓΆsungen funktionieren womΓΆglich nicht mehr sauber und Clients erhalten keine bzw. veraltete IP-Adressen.

Doch bevor ich meine Anpassungen vorstelle, mΓΆchte ich zunΓ€chst mit einem Irrglauben aufrΓ€umen: Viele glauben, dass die erste DNS-Anfrage an eine aufgerufene Domain etwas lΓ€nger dauern kann, weil unbound die DNS-Anfrage ΓΌber einen Root-Nameserver startet und sich bis zum zustΓ€ndigen autoritativen Nameserver Β»durchfragenΒ« muss, bevor der Domainname in die zugehΓΆrige IP-Adresse ΓΌbersetzt wird. Dies ist zwar grundsΓ€tzlich richtig, aber die Annahme, dass eine Domain nach einmaliger AuflΓΆsung (Caching) zukΓΌnftig immer sofort verfΓΌgbar ist, ist falsch.

Jeder Resource Record (RR) einer Domain enthΓ€lt eine Information, die als Time to live (TTL) bezeichnet wird. FΓΌr eine Domain gibt die TTL jedes Resource Records an, wie lange (in Sekunden) eine soeben erfolgte NamensauflΓΆsung voraussichtlich noch mindestens gΓΌltig bleibt. WΓ€hrend dieses Zeitraums kann das DNS-Caching verwendet werden. Nach Ablauf der TTL sollte der Client die entsprechende NamensauflΓΆsung verwerfen und bei Bedarf wiederholen. Das bedeutet: Sobald der TTL-Wert fΓΌr eine Domain abgelaufen ist, wird unbound sich erneut bis zum autoritativen Nameserver Β»durchfragenΒ«, um einen Domainnamen in die zugehΓΆrige IP-Adresse zu ΓΌbersetzen. Die Annahme, dass also lediglich die Β»ersteΒ« DNS-Anfrage bei Aufruf einer Domain lΓ€nger dauern kann, ist falsch. Nachfolgend ein Beispiel.

Mit dig kΓΆnnen wir uns den TTL-Wert fΓΌr eine Domain ausgeben lassen. Das funktioniert, wenn wir den autoritativen Nameserver einer Domain kennen:

dig +nocmd +noall +answer @root-dns.netcup.net www.kuketz-blog.de

Die Ausgabe ist wie folgt:

www.kuketz-blog.de.   86400   IN    CNAME    kuketz-blog.de.
kuketz-blog.de.   86400   IN    A        46.38.242.112

Der zweite Wert gibt den TTL-Wert der Domain zurΓΌck. Im Beispiel 86400. 86400 Sekunden sind 24 Stunden. Nach 24 Stunden wird unbound also den Cache verwerfen und die Domain erneut in die zugehΓΆrige IP-Adresse auflΓΆsen. Schauen wir uns eine weitere Domain an:

dig +nocmd +noall +answer @pns101.cloudns.net www.spiegel.de

Die Ausgabe ist wie folgt:

www.spiegel.de.   300     IN    CNAME    aacfb9d106f4.link11.de.

Der TTL-Wert der Spiegel-Domain betrΓ€gt 300 Sekunden, also 5 Minunten. Bereits nach 5 Minuten wird unbound erneut die IP-Adresse auflΓΆsen.

Glücklicherweise bietet unbound einige Parameter, um das Caching-Verhalten zu beeinflussen und den TTL-Wert für Domains zu überschreiben. Persânlich habe ich nachfolgende Befehle hinzugefügt, d.h. die Pi-hole-unbound-Konfiguration erweitert. Die Konfiguration lÀuft bei mir seit einigen Monaten reibungslos. Ich kann jedoch nicht vollstÀndig ausschließen, dass die ErgÀnzungen mâglicherweise Probleme verursachen werden. Daher mâchte ich erneut darauf hinweisen, dass dieser Beitrag sich an fortgeschrittene Anwender richtet, die mit mâglichen Problemen umgehen kânnen.

Mit dem folgenden Befehl rufen wir die bereits erstellte Konfigurationsdatei auf:

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

Anschließend werden die folgenden Parameter ergÀnzt:

## Performance
# More cache memory, rrset=msg*2 | Default: 4m, 4m
msg-cache-size: 32m
rrset-cache-size: 64m
# Time  to  live [minimum|maximum] for RRsets and messages in the cache | Default: 0, 86400
cache-min-ttl: 3600
cache-max-ttl: 86400
# Serve old responses from cache with a TTL of 0 in the response without waiting for the actual resolution to finish | Default: no, 0
serve-expired: yes
serve-expired-ttl: 86400
# Fetch DNSKEYs earlier (DNSSEC): More cpu usage, less latency | Default: no
prefetch-key: yes
# Helps to reduce the query rate towards targets that get a very high nonexistent name lookup rate | Default: no
aggressive-nsec: yes

## Privacy | Default: no, no
hide-identity: yes
hide-version: yes

Auf einige Parameter mΓΆchte ich nachfolgend kurz eingehen, damit wir verstehen, was sie bewirken und wie dadurch die DomainauflΓΆsung fΓΌr Clients beschleunigt werden kann:

  • prefetch [yes]: Unbound versucht mit prefetch, einen Eintrag im Cache zu aktualisieren, nachdem die erste Antwort an den Client gesendet wurde. Wenn ein Client kurz vor dem Ende des TTL eine Anfrage fΓΌr eine Domain stellt und ein zwischengespeicherter Eintrag vorhanden ist, wird dieser an den Client zurΓΌckgegeben. Gleichzeitig startet unbound die AuflΓΆsung der Domain und ermittelt die aktuelle IP-Adresse. FΓΌr oft besuchte Websites/Domains versucht unbound sogar, den Cache auf dem neuesten Stand zu halten.
  • serve-expired [yes]: Wenn diese Option aktiviert ist, versucht unbound, (alte) Informationen aus dem Cache auszuliefern, ohne auf den Abschluss der eigentlichen DNS-AuflΓΆsung zu warten. Die eigentliche Antwort landet spΓ€ter im Cache – unbound aktualisiert die Information also im Hintergrund. Wie lange unbound Informationen aus dem Cache ausliefert, wird mit dem Parameter serve-expired-reply-ttl beeinflusst.
  • serve-expired-ttl [86400]: Begrenzt die Zustellung von abgelaufenen Antworten auf die konfigurierten Sekunden. Diese Option gilt nur, wenn serve-expired aktiviert ist. Ein empfohlener Wert gemÀß RFC 8767 liegt zwischen 86400 (1 Tag) und 259200 (3 Tage).

Zusammengefasst kann man sich das wie folgt vorstellen: Unbound wird (abgelaufene) Antworten aus dem Cache priorisieren, den Cache fΓΌr hΓ€ufig besuchte/beliebte Domains auf dem neuesten Stand halten und fΓΌr den Fall, dass ein abgelaufener Datensatz zugestellt werden muss (bspw. seltene Abfrage, Problem mit vorgelagerter AuflΓΆsung), sicherstellen, dass der Datensatz nicht Γ€lter als die angegebene Grenze (86400) ist.

Übrigens verwenden wir den Parameter cache-min-ttl (3600), um sicherzustellen, dass eine Domain einen TTL-Wert von mindestens 3600 Sekunden (60 Minuten) hat. Wenn das Minimum greift, werden die Daten lÀnger als vom Domaininhaber beabsichtigt zwischengespeichert, sodass weniger Abfragen zum Nachschlagen der Daten erfolgen.

4. Anpassung Pi-hole

Nach der unbound-Konfiguration ist eine Anpassung ΓΌber das Webinterface des Pi-hole erforderlich. Wir geben folgende Adresse in den Browser ein und melden uns an:

192.168.50.5/admin

Unter Settings β†’ DNS nehmen wir folgende Einstellungen vor:

  • Alle HΓ€kchen (falls vorhanden) bei den DNS-Servern in der linken Ansicht entfernen
  • Custom 1 (IPv4): 127.0.0.1#5335
  • Custom 3 (IPv6): entfernen

Pi-hole Upstream-DNS-Server: unbound

Anschließend wird unten auf der Seite Use DNSSEC angekreuzt.

Nach einem Klick auf Save ist euer Pi-hole in Kombination mit unbound fast einsatzbereit. Wir mΓΌssen nur noch eine Debian-Bullseye-Eigenheit anpassen.

5. Debian-Fix

Debian Bullseye+ Releases installieren automatisch ein Paket namens openresolv mit einer Konfiguration, die zu unerwartetem Verhalten in Kombination mit dem Pi-hole und unbound fΓΌhrt. Der unbound-resolvconf-Service weist resolvconf an, unbound als Nameserver in die Datei /etc/resolv.conf einzutragen – allerdings nur mit 127.0.0.1 ohne Angabe des benΓΆtigten Ports 5335. Lokale Dienste und Prozesse verwenden die Konfigurationsdatei, um den DNS-Server zu ermitteln. Der fehlende Port fΓΌhrt dazu, dass die DNS-Anfragen unbeantwortet bleiben. Dieser Konfigurationsfehler kann folgendermaßen behoben werden.

Der unbound-resolvconf-Service wird deaktiviert:

sudo systemctl disable --now unbound-resolvconf.service

Verhindert die Erstellung einer resolvconf_resolvers.conf fΓΌr unbound, wenn resolvconf vom System/einem Prozess aufgerufen wird:

sudo sed -Ei 's/^unbound_conf=/#unbound_conf=/' /etc/resolvconf.conf
sudo rm /etc/unbound/unbound.conf.d/resolvconf_resolvers.conf

Danach haben wir es geschafft. Nach einem Neustart von unbound ist Pi-hole mit unbound einsatzbereit:

sudo service unbound restart

6. FunktionsprΓΌfung

Wenn alle Arbeiten abgeschlossen sind, kann die Überprüfung erfolgen, ob die Kombination aus Pi-hole und unbound einwandfrei funktioniert. ZunÀchst wird geprüft, ob die DNSSEC-Valdierung funktioniert:

dig fail01.dnssec.works @127.0.0.1 -p 5335

Ausgabe:

; <<>> DiG 9.16.44-Debian <<>> fail01.dnssec.works @127.0.0.1 -p 5335
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 14820
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;fail01.dnssec.works.   IN    A

;; Query time: 0 msec
;; SERVER: 127.0.0.1#5335(127.0.0.1)
;; WHEN: Tue Oct 10 12:40:46 CEST 2023
;; MSG SIZE  rcvd: 48

Als Status wird ein SERVFAIL zurΓΌckgegeben und die IP-Adresse fehlt ebenfalls. Jetzt nochmal mit einer Domain, bei der DNSSEC korrekt validiert werden kann:

dig dnssec.works @127.0.0.1 -p 5335

Ausgabe:

; <<>> DiG 9.16.44-Debian <<>> dnssec.works @127.0.0.1 -p 5335
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6033
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;dnssec.works.   IN    A

;; ANSWER SECTION:
dnssec.works.        21418    IN    A    5.45.107.88

;; Query time: 0 msec
;; SERVER: 127.0.0.1#5335(127.0.0.1)
;; WHEN: Tue Oct 10 12:43:44 CEST 2023
;; MSG SIZE  rcvd: 57

Als Status wird NOERROR und ebenso eine IP-Adresse (5.45.107.88) zurΓΌckgegeben. Das ad-Flag signalisiert, dass unbound die Antwort fΓΌr authentisch hΓ€lt bzw. die Validierung via DNSSEC funktioniert. Um zu verstehen, wie die DNSSEC-Validierung auf dem Pi-hole funktioniert und wie die Log-EintrΓ€ge zustande kommen, empfiehlt sich ein Blick in den Artikel Β»Understanding DNSSEC validation using Pi-hole’s Query LogΒ«.

Unbound beherrscht ebenfalls QNAME Minimisation (qname-minimisation [yes]) – das kann wie folgt geprΓΌft werden:

dig txt qnamemintest.internet.nl +short @127.0.0.1 -p 5335

Ausgabe:

a.b.qnamemin-test.internet.nl.
"HOORAY - QNAME minimisation is enabled on your resolver :)!"

Von einem Linux-Client aus kΓΆnnt ihr noch folgende Befehle fΓΌr einen Test absetzen. Ihr mΓΌsst die IP-Adresse 192.168.50.5/fd00::a41a:eae7:9fd6:2f8c mit der eures Pi-holes ersetzen:

  • IPv4 + UDP-Request: dig @192.168.50.5 example.com +udp
  • IPv4 + TCP-Request: dig @192.168.50.5 example.com +tcp
  • IPv4 + UDP-Request + IPv6-Domain: dig @192.168.50.5 -t AAAA example.com
  • IPv6 + UDP-Request + IPv6-Domain: dig -6 @fd00::a41a:eae7:9fd6:2f8c -t AAAA example.com

Ausgabe von dig -6 @fd00::a41a:eae7:9fd6:2f8c -t AAAA example.com:

; <<>> DiG 9.18.19-1~deb12u1-Debian <<>> -6 @fd00::a41a:eae7:9fd6:2f8c -t AAAA example.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35276
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;example.com.   IN    AAAA

;; ANSWER SECTION:
example.com.        86400    IN    AAAA    2606:2800:220:1:248:1893:25c8:1946

;; Query time: 232 msec
;; SERVER: fd00::a41a:eae7:9fd6:2f8c#53(fd00::a41a:eae7:9fd6:2f8c) (UDP)
;; WHEN: Tue Oct 10 13:09:44 CEST 2023
;; MSG SIZE  rcvd: 68

7. Logging

StandardmÀßig protokolliert unbound Fehlermeldungen in der Protokolldatei /var/log/syslog. Insgesamt kennt unbound sechs verschiedene Logging-Stufen:

  • Stufe 0 bedeutet keine Details, nur Fehler
  • Stufe 1 liefert Betriebsinformationen
  • Stufe 2 liefert detaillierte Informationen zum laufenden Betrieb
  • Ebene 3 liefert Informationen auf Abfrage-Ebene
  • Ebene 4 liefert Informationen auf Algorithmenebene
  • Ebene 5 protokolliert Clients bei Cache-Fehlern

Sollte es aufgrund von Fehlern oder aus anderen GrΓΌnden notwendig sein, den Logging-Level zu erhΓΆhen, so orientiert euch einfach an der Pi-hole-unbound-Konfiguration, das dort gut beschrieben ist.

8. Fazit

In diesem Artikel wurde gezeigt, wie man ein Pi-hole mit unbound konfiguriert. Damit wird einerseits die AbhΓ€ngigkeit von ΓΆffentlichen DNS-Servern aufgehoben und andererseits werden DNS-Anfragen fΓΌr Clients durch die Anpassung einiger unbound-Parameter (deutlich) schneller beantwortet. Diese UnabhΓ€ngigkeit geht derzeit leider noch mit unverschlΓΌsselten DNS-Anfragen (via UDP/TCP) einher, da die Root-Nameserver selbst Protokolle wie DNS over TLS (DoT) und auch DNS over HTTPS (noch) nicht unterstΓΌtzen.


Diskussion

Gib Deinen Kommentar ein. Wiki-Syntax ist zugelassen:
Bitte gib alle Buchstaben in das Eingabefeld ein um zu zeigen dass du ein Mensch bist. Qβ€€L W Aβ€€W
 
Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki