From f8c53eae493cbd2909b5552f193f276448a4e28a Mon Sep 17 00:00:00 2001 From: Thomas Dannenberg Date: Thu, 2 Oct 2025 12:10:24 +0000 Subject: [PATCH] Kapitel 2/Free Rohtext.md aktualisiert --- Kapitel 2/Free Rohtext.md | 259 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 259 insertions(+) diff --git a/Kapitel 2/Free Rohtext.md b/Kapitel 2/Free Rohtext.md index 6c64d43..6040678 100644 --- a/Kapitel 2/Free Rohtext.md +++ b/Kapitel 2/Free Rohtext.md @@ -218,3 +218,262 @@ Am Ende zeigt das Skript eine Übersicht und bestätigt die Installation. > Nach Abschluss der Installation erhältst du die **Admin-Weboberfläche** von Pi-hole und ein **Web-Admin-Passwort**. > Dieses Passwort unbedingt notieren – ohne kannst du dich später nicht anmelden. +### Installation Unbound + +#### Was ist Unbound? + +Unbound ist ein sogenannter **rekursiver DNS-Resolver**. +Im Gegensatz zu externen DNS-Anbietern (z. B. Google 8.8.8.8 oder Cloudflare 1.1.1.1) löst Unbound deine DNS-Anfragen **selbstständig** auf. +Das bedeutet: + +1. Unbound fragt direkt bei den **Root-Servern** des Internets nach. +2. Von dort bekommt er die Adresse der zuständigen **Top-Level-Domain-Server** (z. B. `.com`). +3. Dann fragt er bei diesen nach dem **autoritativen Server** für die gesuchte Domain (z. B. `example.com`). +4. Schließlich liefert Unbound die endgültige IP-Adresse zurück. + +Damit fallen externe DNS-Dienste komplett weg. +Alle Auflösungen passieren lokal in deinem Netzwerk. +Das sorgt für **mehr Privatsphäre** und macht dich unabhängiger von Dritten. + +👉 *Screenshot geeignet: Netzwerkaufbau mit und ohne Unbound – links der Weg über externe DNS-Server, rechts der direkte Weg über Unbound mit Root-Servern.* + +> [!NOTE] +> Der **erste Aufruf einer Domain** kann über Unbound etwas länger dauern, da die komplette Kette abgefragt werden muss. +> Danach wird das Ergebnis zwischengespeichert (Caching), sodass weitere Aufrufe sofort beantwortet werden. + +--- + +#### Unbound installieren + +Unbound wird über die Paketverwaltung installiert: + +```bash +apt install unbound -y +``` + +Zusätzlich benötigt Unbound die Root-Hints, also die Adressen der Root-Server des Internets: + +```bash +wget https://www.internic.net/domain/named.cache -O /var/lib/unbound/root.hints +``` + +--- + +#### Unbound konfigurieren + +Jetzt erstellen wir eine Konfigurationsdatei, die speziell auf Pi-hole abgestimmt ist: + +```bash +nano /etc/unbound/unbound.conf.d/pi-hole.conf +``` + +Folgenden Inhalt einfügen: + +```bash +server: + verbosity: 0 + interface: 127.0.0.1 + port: 5335 + do-ip4: yes + do-udp: yes + do-tcp: yes + do-ip6: yes + root-hints: "/var/lib/unbound/root.hints" + harden-glue: yes + harden-dnssec-stripped: yes + use-caps-for-id: no + edns-buffer-size: 1232 + prefetch: yes + num-threads: 2 + so-rcvbuf: 1m +``` + +- **interface 127.0.0.1 & port 5335** → Unbound lauscht nur lokal und nicht im gesamten Netzwerk, was die Sicherheit erhöht. +- **root-hints** → verweist auf die Root-Server-Datei. +- **harden-Optionen** → sorgen für zusätzliche Sicherheit und DNSSEC-Unterstützung. +- **prefetch** → häufig angefragte Domains werden im Cache aktuell gehalten. + +Datei speichern mit **Strg+O**, Enter → Beenden mit **Strg+X**. + +--- + +#### Unbound starten + +Unbound aktivieren und starten: + +```bash +systemctl enable unbound +systemctl restart unbound +systemctl status unbound +``` + +> [!TIP] +> Wenn alles funktioniert, zeigt der Status **active (running)**. +> Falls Fehler auftreten, können sie mit `journalctl -xe` angezeigt werden. + +#### Unbound testen + +Bevor wir Pi-hole mit Unbound verbinden, prüfen wir, ob Unbound korrekt läuft. +Dafür nutzen wir das Tool `dig`, das DNS-Abfragen testet. + +Falls es noch nicht installiert ist: + +```bash +apt install dnsutils -y +``` + +Jetzt eine Testabfrage direkt an Unbound: + +```bash +dig @127.0.0.1 -p 5335 example.com +``` + +Wichtige Punkte in der Ausgabe: +- **Status: NOERROR** → bedeutet, die Domain wurde erfolgreich aufgelöst. +- **SERVER: 127.0.0.1#5335** → zeigt, dass Unbound selbst geantwortet hat. +- **ANSWER SECTION** enthält die IP-Adresse von `example.com`. + +👉 *Screenshot geeignet: Terminalausgabe eines erfolgreichen dig-Befehls.* + +> [!NOTE] +> Beim **ersten Aufruf einer Domain** dauert die Antwort etwas länger, da Unbound den kompletten Weg von den Root-Servern bis zur Ziel-Domain abfragt. +> Jeder weitere Aufruf ist sofort im Cache und dadurch schneller. + +### Erster Login in die Pi-hole Weboberfläche + +Nach der Installation von Pi-hole erreichen wir die Weboberfläche im Browser: + +``` +http://192.168.1.5/admin +``` + +👉 *Screenshot geeignet: Loginseite der Pi-hole Weboberfläche.* + +Das Passwort wurde am Ende der Installation im Terminal angezeigt. +Falls du es nicht notiert hast, kannst du es im Container neu setzen: + +```bash +pihole -a -p +``` + +#### Blocklisten & Whitelist einrichten + +Die meiste Arbeit erledigen wir bequem in der Pi-hole Weboberfläche. + +1. **Blocklisten hinzufügen** + - Menü öffnen: **Group Management → Adlists** + - Jede URL einzeln eintragen und als Gruppe **Default** auswählen. + - Mit **Add** bestätigen. + + Empfehlenswerte Listen: + ``` + https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts + https://raw.githubusercontent.com/hagezi/dns-blocklists/main/adblock/pro.txt + https://raw.githubusercontent.com/hagezi/dns-blocklists/main/adblock/tif.txt + https://big.oisd.nl + https://v.firebog.net/hosts/lists.php?type=tick + https://v.firebog.net/hosts/lists.php?type=malware + https://o0.pages.dev/Pro/adblock.txt + https://raw.githubusercontent.com/hagezi/dns-blocklists/main/adblock/pro.plus.mini.txt + https://raw.githubusercontent.com/hagezi/dns-blocklists/main/adblock/ultimate.mini.txt + https://raw.githubusercontent.com/hagezi/dns-blocklists/main/adblock/ultimate.txt + https://raw.githubusercontent.com/hagezi/dns-blocklists/main/adblock/multi.txt + https://adaway.org/hosts.txt + https://raw.githubusercontent.com/Perflyst/PiHoleBlocklist/master/SmartTV.txt + https://raw.githubusercontent.com/Perflyst/PiHoleBlocklist/master/android-tracking.txt + https://raw.githubusercontent.com/hoshsadiq/adblock-nocoin-list/master/hosts.txt + https://v.firebog.net/hosts/Prigent-Ads.txt + https://raw.githubusercontent.com/anudeepND/blacklist/master/adservers.txt + ``` + 👉 *Screenshot geeignet: Adlists-Seite mit mehreren eingetragenen Listen.* + +2. **Listen aktualisieren (Gravity Update)** + - Menü: **Tools → Update Gravity** + - Button **Update** anklicken. + - Nach kurzer Zeit ist die Datenbank aktualisiert. + 👉 *Screenshot geeignet: Update Gravity mit Fortschrittsanzeige.* + +3. **Wichtige Dienste freigeben (Whitelist)** + - Menü: **Group Management → Domains → Whitelist** + - Beispiele für Regex-Einträge, um WhatsApp oder Facebook zuverlässig freizugeben: + ``` + (^|\.)whatsapp\.com$ + (^|\.)facebook\.com$ + ``` + 👉 *Screenshot geeignet: Domain-Management mit Regex-Whitelist.* + +> [!TIP] +> Fast alles in Pi-hole lässt sich über die Weboberfläche erledigen. +> Das Terminal ist nur Plan B, falls die GUI mal nicht erreichbar ist. +#### Logging +Unter **Settings → Privacy** stellst du ein, wie Pi-hole mit Logs umgeht: + +- **Anonymous mode** (empfohlen): Anfragen werden gezählt, aber ohne Client-IP gespeichert. +- **Show everything**: nur nutzen, wenn du detaillierte Fehleranalysen machen willst. + +👉 *Screenshot geeignet: Auswahlfeld „Privacy mode“.* + + +#### Upstream-DNS auf Unbound setzen +Jetzt verbinden wir Pi-hole mit unserem lokalen Resolver: + +1. Gehe zu **Settings → DNS**. +2. Entferne alle externen Upstream-Server (Cloudflare, Google usw.). +3. Trage stattdessen ein: + ``` + 127.0.0.1#5335 + ``` +4. Speichern. + +👉 *Screenshot geeignet: Pi-hole DNS-Konfiguration mit 127.0.0.1#5335.* + +### Router auf Pi-hole umstellen + +Damit Pi-hole Anfragen bearbeiten kann, müssen wir den DNS-Server im Netzwerk ändern. +Dafür gibt es zwei Möglichkeiten: + +1. **Am Router (empfohlen)** + - Im Router-Interface den Bereich **Netzwerk / DHCP / DNS-Server** öffnen. + - Als primären DNS-Server die feste IP des Containers eintragen (z. B. `192.168.1.5`). + - Speichern und Router kurz neu starten. + 👉 *Screenshot geeignet: Router-Einstellung DNS-Server.* + + > [!TIP] + > So nutzt jedes Gerät im Netzwerk automatisch Pi-hole, ohne dass man sie einzeln konfigurieren muss. + +2. **Am einzelnen Gerät (für Tests)** + - In den Netzwerkeinstellungen des PCs oder Smartphones manuell als DNS-Server `192.168.1.5` eintragen. + - Verbindung trennen und neu verbinden. + +### Funktion prüfen + +- Öffne eine Webseite am PC/Smartphone, das den neuen DNS-Server nutzt. +- Im Pi-hole-Dashboard (**http://192.168.1.5/admin**) sollten jetzt die ersten Anfragen sichtbar sein. +- Dort erkennst du: Blockierte Anfragen, durchgelassene Anfragen und die Gesamtzahl. +👉 *Screenshot geeignet: Pi-hole Dashboard mit ersten Anfragen.* + +## Ergebnis + +Wir haben nun ein funktionierendes System aus **Pi-hole und Unbound** in einem einzigen Container: + +- Pi-hole filtert Werbung und Tracking netzwerkweit. +- Unbound löst alle DNS-Anfragen rekursiv auf – direkt von den Root-Servern bis zur Ziel-Domain. +- Durch die Kombination sind wir unabhängig von externen DNS-Anbietern und behalten die volle Kontrolle über unsere Daten. +- Blocklisten sorgen für eine starke Filterwirkung, Regex-Whitelist-Einträge stellen sicher, dass wichtige Dienste wie WhatsApp oder Facebook weiterhin nutzbar bleiben. +- Über die Weboberfläche können alle Einstellungen komfortabel gepflegt und jederzeit erweitert werden. + +👉 *Screenshot geeignet: Pi-hole Dashboard mit laufenden Statistiken (Anfragen gesamt, blockierte Anfragen, verwendete Listen).* + +> [!NOTE] +> **Nicht alle Werbung kann gefiltert werden.** +> Dienste wie YouTube oder Spotify liefern Werbung über dieselben Server wie die eigentlichen Inhalte. +> Pi-hole kann solche Werbung nicht zuverlässig blockieren, ohne auch die Inhalte selbst zu unterbrechen. + +> [!TIP] +> Ab jetzt läuft die gesamte DNS-Auflösung deines Heimnetzes durch Pi-hole + Unbound. +> Jede Anfrage, die im Dashboard erscheint, bestätigt: dein Netzwerk filtert erfolgreich. + +## Ausblick + +Im nächsten Kapitel kümmern wir uns um den **Nginx Proxy Manager (NPM)**. +Damit stellen wir die Weichen, um alle unsere Dienste sicher und übersichtlich nach außen verfügbar zu machen – mit HTTPS-Zertifikaten und zentralem Zugriffspunkt. \ No newline at end of file