Pi-hole installieren

Wie man Pi-hole auf einem alten (oder neuen) Raspberry installiert, zeige ich Euch hier Schritt für Schritt.

Was macht Pi-hole?

Pi-hole ersetzt im lokalen Netzwerk die öffentlichen DNS-Server. Ein DNS-Server ist wie ein Telefonbuch, nur dass ich nicht die Telefonnummer von Chantalle Meyer wissen will, sondern die einer Website.

Wenn man diese Website aufruft, so kommen nicht nur die Inhalte nicht allesamt von dem Server der Website. Gerade Werbeanzeigen werden zwar optisch in der Website angezeigt, aber sie stammen meistens von anderen Servern, meist aus einem Werbenetzwerk.
Gleiches gilt für fremde Bilder, Videos oder Inhalte aus sozialen Medien. Selbst die Buttons zum Teilen enthalten Code, der den Fingerprint des Broswers zum Betreiber sendet und ihn dort speichert.

So kann der Betreiber den Benutzer auf allen Webseiten wiedererkennen, die ebenfalls diese Buttons verwenden. So kann ein umfangreiches Bewegungsprofil erstellt werden. Meldet sich der Nutzer dann noch beim sozialen Netzwerk an, hat er zu dem Profil auch noch einen Namen. Wer würde in seinem Social-Media-Profil freiwillig angeben, dass er ab und zu mal auf XXX-Seiten vorbeischaut? Zuckerberg weiß es aber! Und auch wie oft man diese Seiten besucht. Und welche Videos man sich dort ansieht.

Es gibt Browsererweiterungen die das alles unterbinden sollen. Aber die müsste man auf jedem Gerät im Netzwerk installieren. Schwierig und umständlich. Mit dem Pi-hole ist das einfacher.

Der funktioniert grob gesagt wie folgt:

Benötigte Software

Raspberry OS lite
Etcher
Angry IP Scanner
Namebench

Benötigte Hardware

Die Hardwarevoraussetzungen sind marginal, denn ein DNS-Server muss im Heimnetzwerk nicht viel arbeiten.

Update

Ich habe die Empfehlung für die mSD-Karten aktualisiert, weil der Pi-hole offenbar extrem viel auf die SD-Karte schreibt.

29 Euro-Set

40 Euro-Set

Eine TV-Box mit internen eMMC-Speicher, Netzteil, Gehäuse und allem drumherum.

45 Euro-Set

120 Euro-Set

Nicht vergessen!

Vorbereitungen

Wichtig: Ihr müsst in Eurem Netzwerk einen freien Bereich haben, den der DHCP-Server Eures Routers nicht bespielt. Meine Empfehlung ist, den Bereich zwischen xxx.xxx.xxx.2 und xxx.xxx.xxx.20 freizulassen. Der Router selbst hat meistens die xxx.xxx.xxx.1 als vorgegebene IP-Adresse.

Der Pi-hole muss auf jeden Fall eine feste IP-Adresse zugewiesen bekommen! Die kann auch im Router geschehen, indem er immer dieselbe Adresse zugewiesen bekommt, aber ich empfehle dieses Vorgehen bei der Verwendung von mehreren Geräten mit fester IP nicht! Wird der Router ausgetauscht, fängt der Spaß an, herauszufinden, welche IP welches Gerät hatte.

Beachtet auch meine folgenden Artikel zum Thema:

WLAN Reichweite erhöhen
Smarthome-WLAN einrichten
Gedanken zum Netzwerk
Gedanken zum Smart-WLAN

DNS-Server (optional)

Auch wenn wir nachher aus Sicherheitsgründen Unbound, einen lokalen, rekursiven DNS-Server konfigurieren, so sind einige Grundüberlegungen zum Thema sicher nützlich. Nicht zuletzt beim Ausfall des Pi-hole wünscht man sich doch, man hätte sich näher damit befasst.

Welches ist der beste DNS-Server? Der, der schnell ist, oder der, der nicht zensiert? Zensur findet aus zwei Hauptgründen statt: Copyrightverletzung und Jugendschutz. Wir machen einfach einen Bogen um die DNS-Server unseres deutschen Providers und suchen uns andere DNS-Server.

Für uns sind folgende Merkmale wichtig:

  1. Sicher
  2. Schnell
  3. Unzensiert

1. Die Sicherheit gewährleistet DNS-over-HTTPS. So verhindert man Tracking und vor allem Man-in-the-Middle-Angriffe. DNS-over-HTTPS ist absolutes Pflichtprogramm.

2. Die Geschwindigkeit ist von vielen (lokalen) Faktoren abhängig. Man kann nicht einfach nach „dem schnellsten DNS-Server“ im Internet suchen, denn was zwischen Dir und dem Server steht, bestimmt dessen Geschwindigkeit maßgeblich. Den für uns schnellsten DNS-Server finden wir durch das Programm Namebench. Unter Ubuntu installieren wir es mit dem Befehl

sudo snap install namebench-snap

Downloads für andere Betriebssysteme sind oben aufgeführt.

Die Empfehlungen sind diesmal (ja, die schwanken heftig!) nicht meine erste Wahl. Ja, natürlich sind die DNS-Server von Google hervorragend.

3. Vertrauenswürdige DNS-Server? Darüber handelt dieser lesenswerte Artikel: DNS & DNSSEC (deutsch).

Jeder, der Kinder hat, spielte sicherlich mit dem Gedanken daran, Inhalte für Erwachsene *hust* zentral filtern zu können. Ein Anbieter, CleanBrowsing, hat verschiedene Filterstufen und bietet auch Verschlüsselung an.

Witzig an der ganzen Sache ist, dass auch Ihr gerade versucht das Internet zu zensieren. Mit dem Pi-hole, der für Euch unerwünschte Inhalte zensieren soll.
Denkt mal darüber nach.

Beachtet auch meine Artikel zu den Themen Überwachung und Datenschutz:

Spaziergänger
Was ist eigentlich Datenschutz?
Allgegenwärtige Überwachung
Dein Internet wird gerade zensiert
Datenschutz durch eine anonyme SIM-Karte?
Digitales Vermummungsverbot?

Haftungsausschluss

ACHTUNG! NICHT NACHMACHEN!

  1. Dies ist keine Anleitung!
  2. Der Artikel dient der persönlichen Dokumentation!
  3. Dieser Artikel soll nicht die beiliegenden Anleitungen, Einbauhinweise oder Installationsanleitungen ersetzen!
  4. Dieser Artikel soll einen groben Überblick über die anfallenden Arbeiten ermöglichen.
  5. Der Artikel erhebt keinen Anspruch auf Vollständigkeit oder gar Korrektheit.
  6. Hier beschreibe ich, wie ich diese Arbeiten als Laie erledigt habe – nicht, wie man sie korrekt oder nach handwerklichen Standards, Vorschriften oder Gesetzen erledigt.
  7. Ich lehne jede Verantwortung, Haftung und Gewährleistung ab. Jeder muss selbst wissen, was er macht.
  8. Einige Arbeiten sind durch Fachfremde nicht zulässig, respektive gesetzwidrig und bedürfen teilweise mindestens der Abnahme durch einen ausgebildeten Berechtigten.
  9. Einige Handlungen und Arbeiten sind im öffentlichen Bereich (Straßenverkehr, Stromnetz, Luftraum, Internet, etc.) verboten oder verstoßen gegen Lizenzvereinbarungen, was straf- oder zivilrechtliche Konsequenzen nach sich ziehen kann.
  10. 230 Volt sind tödlich!
  11. Kein Backup? Kein Mitleid!
  12. Meine 3D-Modelle sind nur Machbarkeitsstudien, keine geprüften, funktionsfähigen Bauteile.
  13. Die beschriebenen Tätigkeiten sind in der Folge rein akademischer Natur.
  14. Bedenke, dass durch Deine Arbeiten Dritte an Leib und Leben gefährdet werden können und Du persönlich dafür haftest.

Mit dem Weiterlesen stimmst Du diesem Haftungsausschluss zu.

Image schreiben

Ihr müsst Euch die neueste Version von Raspberry OS lite herunterladen. Die kleinste Version ohne Desktop oder sonstige Software. Das Zeug benötigen wir alles nicht.

Das Image spielt Ihr nun mit Etcher auf die Micro-SD-Karte.

Alternative Raspberry Pi Imager

Man kann auch den Raspberry Pi Imager benutzen, der ist noch etwas einfacher in der Handhabung, aber auch nur für die Installation von Raspi OS zu gebrauchen. Ich muss öfter andere Betriebssysteme auf Datenträger kopieren, daher ist Etcher unter jedem OS meine erste Wahl.

Mit Monitor und Tastatur

Haben wir den Raspberry Pi an einen Monitor und eine Tastatur angeschlossen, die SD-Karte in den Slot des Raspis geschoben und das Netzteil eingesteckt, so können wir gleich weiter zur festen Einstellung der IP-Adresse springen.

Kein Monitor?

Kein Problem!

SSH aktivieren

Die SD-Karte ist immer noch im Kartenleser des Rechners. Im Terminal geben wir folgenden Befehl ein:

sudo touch /media/DEIN-BENUTZERNAME/boot/ssh

Dadurch wird eine leere Datei in der Boot-Partition der SD-Karte erzeugt. Raspberry OS bemerkt diese beim Start, aktiviert SSH und löscht die Datei wieder.
Hierdurch bekommen wir indessen Zugriff auf den Raspberry Pi und können ihn via SSH konfigurieren.

Jetzt müssen wir nur noch klären, ob wir Zugriff über LAN oder WLAN haben.

LAN oder WLAN?

Der Raspberry kommt bei mir nicht in das WLAN, sondern, wie alle wichtigen Geräte der Netzwerkinfrastruktur, in das LAN.

Ihr wollt oder müsst WLAN benutzen? Ihr habt einen Raspberry Pi Zero, der keinen Netzwerkanschluss hat? Klickt hier:

WLAN-Konfiguration

Den Raspberry Pi verbindet Ihr mit einem Netzteil, einer Tastatur und einem Monitor.

Nach der Anmeldung ruft Ihr die Raspi-Config auf, in der Ihr alle Grundeinstellungen vornehmen und das WLAN konfigurieren könnt.

raspi-config

Ihr habt keine Lust, oder keine Möglichkeit Tastatur und Monitor an den Raspi anzuschließen? Auch kein Problem! Lasst die SD-Karte im Rechner und öffnet das Terminal:

cd '/media/DEIN-USERNAME/rootfs

Dann:

sudo -i
wpa_passphrase "DEINE-WLAN-SSID" "DEIN-WLAN-PASSWORT" >> /media/DEIN-BENUTZERNAME/rootfs/etc/wpa_supplicant/wpa_supplicant.conf
exit

Kurze Kontrolle:

sudo cat media/DEIN-BENUTZERNAME/rootfs/etc/wpa_supplicant/wpa_supplicant.conf

Sieht alles gut aus? Prima!
Das Passwort wurde zwecks schnellerer Verbindung automatisch in einen Hash gewandelt. Wollt Ihr das auskommentierte Klartext-Passwort löschen?

sudo nano /media/DEIN-BENUTZERNAME/rootfs/etc/wpa_supplicant/wpa_supplicant.conf

Windows-Gläubige haben es wie immer bei Geschichten rund um Sicherheit, Internet, Netzwerk, Android und SmartHome viel, viel schwerer.
Ich will Euren Irrglauben nicht fördern, benutzt halt raspi-config direkt auf dem Raspberry.

Meine Empfehlung: Mit Eurem unsicheren Point & Click-Adventure kommt Ihr eh nicht weiter. Installiert Euch auf einem alten Rechner oder einem alten Notebook Ubuntu, das vereinfacht Euch das Leben abseits von Microsoft Office.

Zugriff über SSH

Die SD-Karte steckt im Raspi und er ist entweder über LAN oder WLAN mit dem Netzwerk verbunden? Gut.
Wie kommen wir aber an die aktuelle IP-Adresse?
Entweder über die Anzeige des Heimnetzwerkes des Routers oder mit dem Programm Angry IP Scanner.
Letzteres ist schneller und übersichtlicher.
Hier ein Screenshot meines Netzwerkes:

Warum einige Geräte einen mehr als unterirdischen Ping haben, habe ich hier erklärt. Bei Gelegenheit muss ich meine eigenen Empfehlungen auch mal umsetzen. 🙂

Hier erscheint also der Raspberry und seine IP-Adresse in der Übersicht aller Geräte im Netzwerk.

Wir verbinden uns mit dem Gerät indem wir unser Terminal öffnen und folgenden Befehl eingeben:

ssh pi@IP-ADRESSE-DEINES-RASPIS

Passwort ist raspberry

Aktualisieren

Wir sollten nun dringend das System auf den neuesten Stand bringen, sonst mahnt das PiHole bei der Installation an:

sudo apt update && sudo apt upgrade && sudo apt autoremove && sudo apt autoclean -y

Feste IP-Adresse einstellen

Dein Raspberry hängt nun an einem Monitor oder ist via SSH erreichbar.
Das habt Ihr gut gemacht!

Ohne SSH-Zugang müssen wir uns ebenfalls als pi mit dem Passwort raspberry anmelden.

IPv6 ist in Raspberry Pi OS automatisch eingeschaltet. Wir müssen hier aber nicht mit einem Adressenkonflikt wie bei IPv4 rechnen.

IPv4

Wir könnten dem Pi theoretisch im Router immer die gleiche IPv4-Adresse zuweisen. Würde der Router aber irgendwann ersetzt werden, wäre das Chaos im Netzwerk perfekt.
Geschickter ist es also, wenn wir diese dem Gerät selbst zuweisen. Aber das habe ich ja bereits ganz oben erwähnt.

IPv6

Wir nehmen einfach die gerade zugewiesene IPv6-Adresse:

ifconfig

Direkt unter der IPv4-Adresse (inet) steht die IPv6-Adresse (inet6)
Wir kopieren, bzw. notieren diese.

Anmerkung zu IPv6-Adressen

fe80::a000:a000:a000:a000

hat augenscheinlich nur fünf Blöcke, ist abgekürzt und würde ausgeschrieben wie folgt aussehen:

fe80:0000:0000:0000:a000:a000:a000:a000

Adressen ändern

sudo nano /etc/dhcpcd.conf

Wir scrollen ganz nach unten und sehen auskommentierte Einträge unter „Example static IP configuration“
Wir kommentieren diese wieder ein, indem wir das #-Zeichen löschen.

Zuerst wird

interface eth0

wieder einkommentiert.

Bei einem WLAN steht hier in der Regel

interface wlan0

In meinem Falle passte ich

static ip_address
static IP6_address
und
static routers

passend zu meiner Konfiguration an.

Das Endergebnis sollte so aussehen. Editor verlassen und den Rechner neu starten:

sudo reboot

Der Raspberry ist jetzt unter seiner neuen, festen Adresse erreichbar. Eine Grundvoraussetzung für den Betrieb von Pi-hole.

Grundkonfiguration

Wenn Ihr den Raspi an eine Tastatur und einen Monitor angeschlossen habt, steckt die SD-Karte in das Gerät und versorgt ihn mit Strom.

Der Befehl

sudo raspi-config

startet das Konfigurationsprogramm.

WLAN

1. System Options —> S1 Wireless LAN

Hier geben wir die Zugangsdaten unseres WLANs ein. Entfällt, wenn wir das bereits manuell erledigt hatten.

Password ändern

Wichtig!
1. System Options —> S3 Password

Hier legen wir ein neues, sicheres Passwort für den root-Zugriff fest!

SSH

2 Interface Options —> SSH

Hier aktivieren wir den Fernzugriff via SSH

Deutsches Tastaturlayout

Das müssen wir nur ändern, wenn wir den Raspi mit einer echten Tastatur verwenden wollen. Über SSH spielt das Tastaturlayout keine Rolle.

5 Localisation Options –> L3 Keyboard

WLAN-Frequenzen (optional)

5 Localisation Options –> L4 WLAN Country

Damit senden wir nicht außerhalb der erlaubten Frequenzen.

Neustart

sudo reboot

Pi-hole installieren

Wir verbinden uns ggf. mit dem Raspi, aber eben unter seiner neuen Adresse.

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

Dieser Befehl installiert Pi Hole und öffnet einen Konfigurationsdialog

Die ersten beiden Blah-Blah-Willkommensnachrichten abnicken.

Die Warnung mit der festen IP können wir mit „Yes“ beantworten.

Das haben wir bereits erledigt, aber komm, soll er es doch noch einmal zuweisen, dann sind wir auf der sicheren Seite.
„Yes  Set static IP using current values“
So habe ich es sicherheitshalber gemacht, schadet nichts. Die Einstellungen weiter oben waren aber trotzdem nicht umsonst, sonst hätten wir hier eine IPv4-Adresse, die mitten aus der DHCP-Range stammen würde.

In meinem Fall ist der DNS von Google die beste Wahl.

Die Auswahl von Blacklists ist ja überschaubar. Ich wähle die einzige Option.

Es gibt keine blöde Fragen? Doch! Natürlich müssen wir das Admin Interface installieren!

Ja, auch den Webserver und alles drumherum benötigen wir natürlich, denn wir haben nur Raspberry OS lite installiert (was auch gut so ist!).

Ja, wir wollen die Anfragen loggen. Das alles können wir auch später noch im Admin-Panel ändern, macht Euch jetzt nicht so viele Gedanken.

Ja, wir loggen erst mal alles – allein schon für die Funktionsüberprüfung.

Make it so – wir notieren uns hier noch die IPv6-Adresse. Die ist für normale Menschen schlecht zu merken. Wir benötigen diese noch für die Einträge in den Router!
Das Passwort müssen wir uns nicht merken, das ändern wir gleich.

Passwort ändern

Fast fertig! Das Passwort ändern wir aber auf der Stelle mit dem Befehl:

sudo pihole -a -p

Pi-hole Updatelists

Da wir die Blacklist-Updates automatisieren wollen, benötigen wir noch PiHole-Updatelists.
Dieses setzt php-cli voraus, was wir installieren, oder auf den neuesten Stand bringen müssen.
Dazu geben wir den folgenden Befehl ein:

sudo apt-get install php-cli php-sqlite3 php-intl php-curl

Die Erweiterung installieren wir nun mit

wget -O - https://raw.githubusercontent.com/jacklul/pihole-updatelists/master/install.sh | sudo bash

Wir konfigurieren die Erweiterung wie folgt:

sudo nano /etc/pihole-updatelists.conf

Hier tragen wir unter ADLISTS_URL folgende URL ein:

ADLISTS_URL="https://v.firebog.net/hosts/lists.php?type=tick"

Speicher und mit folgendem Befehl ein Update anstoßen:

pihole-updatelists

Das dauert nun eine Weile. Im Fenster laufen die ganzen Listen ab, die Firebog.net freundlicherweise gesammelt hat.

Mit Sicherheit!

Für den oben erwähnten rekursiven DNS-Server, der sich von den TLD-DNS-Stammservern bis runter zu den DNS-Servern der Webhoster die Informationen zusammensucht, müssen wir Unbound installiern:

sudo apt install unbound

Wir müssen noch die pi-hole.conf anpassen:

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

Hier kopieren wir folgenden Inhalt hinein:

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

Abspeichern und Unbound neu starten:

sudo service unbound restart

Wir testen die Abfrage und die Geschwindigkeit:

dig hessburg.de @127.0.0.1 -p 5335

Das Ergebnis ist bei mir: 79 msec beim ersten Aufruf. Nun kennt Unbound aber aus jeweils erster Hand die IP-Adresse dieser Website, sodass beim zweiten Aufruf der IP die ganze Sache nur noch 0 msec dauerte.

Wir halten fest: Zwar dauert der erste Aufruf jeder Website etwas länger, dafür kann man sicher sein, dass man auch dort gelandet ist, wo man hinwollte, was beim Online-Banking wirklich beruhigt.

Jeder weitere Aufruf ist ab jetzt aber Pfeilschnell, weil sich Unbound alle Adressen merkt, die es einmal abgefragt hat.

Im Webend anmelden

Nun wollten wir von den Textwüsten weg und Klicki-Bunti sehen! Wir geben im Browser folgendes ein: IP-DES-RASPIS/admin

Auf der linken Seite klicken wir auf „Login“ und geben unser Passwort ein.

Die mitgelieferte Blacklist beinhaltet gerade mal 100.000 Einträge an. Klingt viel, ist es aber nicht und bietet nicht viel Schutz.
Bei uns müssten indessen an die 300.000 Einträge in der Adliste stehen, richtig?
Super!

Unbound verwenden

Wir müssen jedoch unseren rekursiven, lokalen Unbound-Server im Pi-hole eintragen und die öffentlichen Server entfernen.

Settings —> DNS —>

Upstream DNS Servers
Custom 1 (IPv4)

Hier tragen wir Folgendes ein:
„127.0.0.1#5335“

Bei
Upstream DNS Servers
Custom 3 (IPv6)

Müssen wir die lokale IPv6-Adresse eintragen:
„::1#5335“

Jetzt läuft zwar der PI-hole, nur leider benutzt ihn noch niemand, denn niemand kennt ihn!
Das ändern wir nun!

Pi-hole im Router eintragen

Damit der Pi-hole auch den Rechnern und Geräten im Internet als DNS-Server bekannt gemacht wird, müssen wir ihn als lokalen DNS im Heimnetzwerk im Router eintragen.
Am Beispiel der beleibten Fritz!Box habe ich da mal was vorbereitet. Aber das ist bei allen Routern ähnlich.

Heimnetz —> Netzwerk —> Netzwerkeinstellungen

—–> „Weitere Einstellungen“, unten rechts versteckt!

—> IPv4-Einstellungen:

Richtig, die Buttons sind ganz unten rechts.

„Lokaler DNS-Server“ – hier tragen wir die IPv4 des Pi-hole ein.

„DNSv6-Server im Heimnetz“ – hier kommt die IPv6-Adresse des Raspi rein.

Router schützen

Die Fritz!Box zieht sich Updates, kommuniziert mit VoIP- und Mail-Servern. Man könnte das auch alles über den Pi-hole laufen lassen, aber wir müssen es auch nicht übertreiben. Wenn der Raspi ausfallen sollte, muss man gleich zweimal Änderungen an den DNS-Servern vornehmen:
Einmal für das Internet und einmal für das Heimnetz.
Tragen wir in die Fritz!Box doch noch bessere DNS-Server ein und stellen sie auf eine verschlüsselte Verbindung mit DoT um. Ich entschied mich für die Server von Google und Cloudflare.

8.8.8.8.
2001:4860:4860::8888
dns.google.com

sowie

1.1.1.1.
2606:4700:4700::1111
1dot1dot1dot1.cloudflare-dns.com

Ihr könnt aber auch beliebige andere DNS-Server verwenden, wie den von Freifunk zum Beispiel.

Die o.a. Auflösungsnamen der verwendeten DNS-Server will die Fritte auch noch wissen:

Unter dem Menüpunkt DNS oder TLS (DoT) sehtzen wir Haken für die Aktivierung, die Erzwingung der verschlüsselten Namensauflösung, erlauben aber auch den Fallback, falls kein verschlüsselter DNS verfügbar ist.

Test

Nun öffnen wir eine Werbeseite mit einem kleinen Anteil redaktioneller Beiträge. Die des Spiegels zum Beispiel. Nichts für ungut, aber die übertrieben es bereits vor zwanzig Jahren so massiv (zappelnde Werbung mit Geräuschen), dass ich mich allein aus Selbstschutz früh mit Werbeblockern befassen musste.

Die heutige Pest sind die grenzdebilen Werbespots auf YoutTube. Die bekommen wir so leider nicht ganz weg, da sie von den YouTube-Servern selbst stammen. Wollt Ihr im Webbrowser keine gehirnerweichenden Werbungen vor, in und nach den Videos sehen, kann ich Euch nur wärmstens UBlock Origin empfehlen.

Einarbeitung in PiHole

Wozu? Das Ding rennt doch nun. Man kann nach einigen Tagen das Protokollieren der Anfragen (Querys) abstellen, dann lebt die SD-Karte im Pi deutlich länger. Aber ansonsten arbeitet das Ding doch so wie es soll. Feintuning mit manuell geblockten Websites ist noch möglich. Ebenso kann man weitere Listen, etwa mit Jugendschutzfiltern, hinzufügen. Die Weboberfläche ist recht übersichtlich und simpel. Eine Neuinstalltion des gesamten PiHoles dauert nur wenige Minuten mit dieser Anleitung, falls Ihr was verbockt.

Automatische Systemupdates?

Ja, nee, lass mal besser. Der PiHole steht nicht im Internet und auf dem surft man auch nicht. Besser sind manuelle Updates. Melde Dich über SSH an und tippte

pihole -up

ein. Falls was beim Update schief geht, siehst Du es gleich und kannst handeln. Ist der Raspi aber durch ein automatisches Update gecrasht, sind ggf. alle Geräte im Netz vom Internet abgeschnitten und der Raspi selbst eventuell auch nicht mehr erreichbar.

Kurzanleitung

Das Ganze drumherum interessiert Dich nicht? Du hast schon mit dem Pi und Ubuntu gearbeitet? Füllworte nerven Dich? Kein Problem, hier kommt die Kurzanleitung:

  1. Raspberry OS lite auf eine SD-Karte kopieren
  2. sudo apt update && sudo apt upgrade && sudo apt autoremove && sudo apt autoclean -y
  3. ifconfig –> IPs notieren
  4. sudo nano /etc/dhcpcd.conf —> Feste IPs vergeben
  5. passwd
  6. sudo reboot
  7. curl -sSL https://install.pi-hole.net | bash
  8. sudo pihole -a -p
  9. sudo apt-get install php-cli php-sqlite3 php-intl php-curl
  10. wget -O – https://raw.githubusercontent.com/jacklul/pihole-updatelists/master/install.sh | sudo bash
  11. sudo nano /etc/pihole-updatelists.conf —> ADLISTS_URL=“https://v.firebog.net/hosts/lists.php?type=tick“
  12. pihole-updatelists
  13. sudo apt install unbound
  14. sudo nano /etc/unbound/unbound.conf.d/pi-hole.conf —>
    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

    <—

  15. sudo service unbound restart
  16. Im Webend anmelden
  17. Settings –> DNS –> „127.0.0.1#5335“ und „::1#5335“
  18. IP Pi-hole im Router als DNS-Server eintragen
  19. awin1 als Wildcard in die Whitelist eintragen

Kritik

Jetzt habe ich Euch verraten, wie Ihr Anzeigen umgeht. Auch viele Textlinks. Meine Affiliate-Links! Damit sind einige meiner Anleitungen nicht mehr nachvollziehbar, weil Ihr mit dem Pi-hole die Links zu Artikel bei Pollin & Co einfach nicht mehr aufrufen könnt. Einzig Ebay- und Amazon-Links funktionieren noch. Euch kostet der Link kein Geld, für mich finanziert er aber den Webserver, die Geräte, die ich teste und erkläre (wie in diesem Artikel) und ist eben auch eine kleine Entschädigung für die verblasene Zeit.

Es wäre also ganz freundlich, und für Euch selbst auch zielführend, wenn Ihr in die Whitelist des PiHoles folgendes eingebt:

awin1

und folgendes anhakt:

Ihr könnt mich gerne unterstützen, indem Ihr mir über PayPal einen Kaffee bezahlt oder eine der anderen Möglichkeiten nutzt, um mich ein wenig bei Laune zu halten und zu motivieren, weitere Artikel zu schreiben. Danke!

Spotify Password zurücksetzen?

Weiß der Geier, was sich die Ersteller der Listen dabei gedacht haben, aber wenn Ihr Eurer Spotify-Passwort nicht zurücksetzt könnt, weil wl.spotify.com nicht geöffnet werden kann, dann muss auch noch

wl.spotify.com

in die Whitelist eingetragen werden, aber nicht als Wildcard!

8 Gedanken zu „Pi-hole installieren“

  1. Sehr schöne Installationsbeschreibung, genau so rennt das bei mir auch, nur sollte man lieber einen USB-Stick benutzen, die SD-Karten sind nicht dauerhaft dafür geeignet wie ich immer wieder gemerkt habe. Durch Zufall bin ich auf Deine Seite gestolpert, glaube das war wegen IPFire und lese mit wachsender Begeisterung über die Projekte von Dir welche nach meinem Gusto sind^^
    Das Einzige was ich anders machen würde beim PI-Hole sind eben nicht die DNS-Server von Google zu nehmen, dass ist wie Kacke am Schuh. Weder 8.8.8.8 oder 8.8.4.4 oder 1.1.1.1. Ist zwar schön und easy aber ich halte mich da fern und IP6 benutze ich auch nicht….

    Grüße
    Gamma

    Antworten
    • Hallo Gamma, danke für das Feeedback und ich stimme Dir 100% zu. Augenscheinlich schreibt PiHole wesentlich öfter auf die SD-Karte, als andere Anwendungen. Bei einer TV-Box sollte man das System am besten auf den internen eMMC-Speicher kopieren. Unser PiHole ist auch ausgefallen. Zwar ist die SD-Karte noch physikalisch in Ordnung, aber ich musste es neu installieren.
      Persönlich würde ich aber mittlerweile auf eine SSD oder NVMe in einem externen Gehäuse setzten. Das ist zwar teurer, aber auch viel zuverlässiger. Alternativ wäre auch eine alte USB-HDD eine Option. Günstige USB-Sticks halten auch nicht ewig und sind gerade bei der Schreibrate unglaublich langsam. Müsste man ausprobieren, ob das auf die Leistung von Pi-hole Auswirkungen hätte.
      Mittlerweile habe ich meine Meinung zu dedizierten Systemen etwas überdacht und überlege, ob ich nicht einen HP 400 G2 mit i3 6100T als Docker-Server einsetzen sollte. Meiner hat 16 GB RAM und eine WD Blue NVMe mit 500 GB Speicher. Das System rennt selbst mit meinem testweise geclonten und vollgemüllten Arbeitssystem (Ubuntu 22.04) unglaublich geschmeidig und leise.
      Dazu muss ich mich aber erst wieder in Docker einarbeiten, was mir nicht gerade trivial erscheint. Wenn ich dazu komme, gibt es eine Anleitung.
      Gruß
      Michael

      Edit: Die GoogleDNS-Server sind bei mir die mit Abstand schnellsten Server, deshalb habe ich diese gewählt. Der Unterschied ist nicht nur messbar, sondern auch deutlich spürbar.

    • Ich habe nun die Empfehlungen für die SD-Karten angepasst. Es gibt mittlerweile 3D-NAND-microSD-Karten, die preislich wirklich interessant sind. Mit 32 GB liegen wir immer noch unter 9 EUR. Samsung verspricht sogar eine Haltbarkeit im Dauerbetrieb von 16 Jahren. Nice!
      USB-Sticks mit 3D-NAND kosten ca. 32 EUR, haben dann aber 128 GB Kapazität, was für unsere Zwecke aber vollkommen überdimensioniert ist.
      Zudem habe ich nun einen Artikel in der Queue, der sich mit den verschiedenen Alternativen zu mSD und USB-Sticks befasse, die vor allem für Leute interessant sind, die noch alte HDDs oder SSDs rumfliegen haben. Beispiel: eine m.2-SSD mit Gehäuse ist billiger als der Stick und benötigt keine 2 Watt Leistung! 380 mA habe ich unter Vollast gemessen.
      Der Artikel ist für morgen (11.03.2023) geplant.

  2. Hallo Michael,
    ich habe mir einen gebrauchten Intel NUC mit Intel I5 Prozzi besorgt, 16GB Ram und eine 256GB EVO M.2 war an Board für 120 Tacken, nicht billig aber in Anbetracht der allgemeinen Preise gehts noch. Ich bin erstaunt wie Geräuschlos und fix das Teil rennt. Darauf habe ich Proxmox als Image installiert, ich bin begeistert!
    Stromverbrauch etwas über 8-10Watt, die CPU dümpelt da nur herum. Darauf läuft nun Home Assistant in einer VM. Das ersetzt mein altes Homematic da Zigbee und Mesh um einiges besser zu handeln ist und alles viel Komfortabler ist. Außerdem sollen die ganzen Raspis weg. Einer mit Rasberrymatic (1er Raspi), einer mit Kodi (3er), einer mit PI-Hole (2er). Einen 4er mit 4GB habe ich aber der führt auch nicht zum Gewünschten alles darauf zu packen, ist einfach eine „Bastellösung“. Deswegen einen NUC. Auf dem NUC werde ich wohl noch PI-Hole und Kodi packen, das schöne an Proxmox ist das man das starten und beenden kann wenn man es braucht. Kodi brauche ich nicht mehr so oft, deswegen nur nach Bedarf starten.
    Ich habe mir noch einen Fujitsu Futro S720 ThinClient AMD GX-217GA 1.65GHz CPU 2GB RAM 8GB SSD besorgt als Firewall, die Dinger bekommt man für unter 25-30€ nachgeworfen und verbrauchen auch total wenig Strom und haben schon eine gute Ausstattung. Eine zusätzliche M.2 Netzwerkkarte von Digitus mit zwei Ports ist schon nachinstalliert und wird erkannt, somit 3 Ports für’s Lan, das reicht bei mir. Ich muss nur noch überlegen ob ich Opensense oder IP-Fire nehme…

    Warum ich vorher oben im ersten Beitrag mit den DNS-Server geschrieben habe „ist wie Kacke am Schuh“ ist das ich nicht direkt auf dem schnellsten DNS (Google) stehe, sondern auf einen sicheren. Mir geht das Tracking und Advertising auf den Sack. Da Google sowieso von fast jedem Menschen auf der Welt benutzt wird, kennt Google wahrscheinlich vieles von mir, deswegen suche ich meist über DuckDuck, Amazon kennt meine Suchvorgänge und will auch alles über mich wissen usw.
    Wenn ich den Google-DNS benutze weiß auch Google über meine feste IP wonach ich gesucht habe, die Verknüpfen halt alles und generieren da Geld draus aber ich bekomme da nichts von, ungefragt, zwar Anononym (hoffentlich) aber dennoch sind das meine Daten und die versuche ich so gut es geht zu schützen. Endlosthema 🙂

    Dein Nachtrag mit den NAND-microSD-Karten ist auch interessant, die kleinen M.2 Karten 16-64GB sofern man einen Slot hat sind auch günstig.

    Liebe Grüße
    Gamma

    Antworten
  3. Noch einen Nachtrag: Man muss ja keine Paranoia entwickeln nur halt seine Daten schützen zu wissen. Vermutlich werden bald hartkodierte Geräte kommen wo man ziemlich Machtlos sein wird da die DNS-Server schon fest verankert sein werden, siehe Android….
    Und noch ein Wort zur Kontrolle, ich habe einen Samsung Q70 TV 2020 neu erstanden für richtig viel Schotter, nach dem dritten ungefragten auferzwungenem Update wurde der mit immer mehr Werbung und Apps zugemüllt das ich Netflix nicht mehr installieren konnte und USB nicht mehr ging weil kein Speicher mehr übrig war. Der Onlinesupport hat ihn dann resettet wegen Speichermangel, dann ging es wieder für kurze Zeit, dann war plötzlich das Panel im Eimer nach 2 Jahren und 3 Monaten. Soviel zu Updates die ich in Zukunft sperren werde per Pi-Hole und DNS. Never touch a running System, ein Spruch den ich seit mehr als 30 Jahren auf der Arbeit in der IT beherzige 🙂

    Antworten
  4. Hallo Michael,
    Proxmox ist wirklich eine feine Sache, gut zu konfigurieren und die GUI ist einfach und Übersichtlich und es gibt viele vorgefertigte Images dafür z.b. HA und andere VM’s kann man auch integrieren. Ich hatte auch erst an Dockers gedacht aber mich dann Umentschieden^^
    Ein Forum wäre nicht schlecht für Beiträge die man evtl noch ändern kann und ist sicherlich auch Übersichtlicher, irgendwo hatte ich mal eins gesehen für WordPress aber ich habe keine Ahnung ob das was taugt und für Forensoftware wollen die auch richtig Geld sehen, Woltlab oder so was in der Art…

    Grüße

    Antworten

Schreibe einen Kommentar

Ich bin mit der Datenschutzerklärung und der Speicherung meiner eingegebenen Daten einverstanden.