Kapitel 2/Free Rohtext.md aktualisiert
This commit is contained in:
@@ -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.
|
||||
Reference in New Issue
Block a user