Raspberry 4 mit Pi-Hole und DOH über FFMuc nutzen

Bild: Freifunk München Logo

In diesem Artikel beschreibt fritz_muc wie man mit einem Raspberry PI 4 mit Pi_Hole und FFMUC nutzen kann.

Im Tutorial benutztes Equipment, Stand Oktober 2019

  • Fritz!Box 7490 mit Fritz!OS 7.12
  • Raspberry 4 mit 4GB RAM und Raspbian Buster

Es wird in den weiteren Schritten davon ausgegangen, dass auf dem Pi bereits ein funktionierendes Betriebssystem installiert ist. Ebenso benötigt der Pi eine feste (statische) IPv4 im Heimnetz. Muss noch ein Betriebssystem installiert werden, so empfiehlt sich diese Seite, da hier gleichzeitig ein SSH Zugang mit aktiviert wird.

https://www.tutonaut.de/anleitung-raspberry-pi-ohne-monitor-und-tastatur-headless-einrichten/

Als erstes loggen wir uns im Pi ein, anschließend vergeben wir mit sudo su - root Rechte, sonst gibt es später Probleme.

Die gesamte Installation muss als root durchgeführt werden.

Danach muss Pi-Hole heruntergeladen werden, dazu gibt es 2 Möglichkeiten:

1. Der automatische Download und die automatische Installation Dazu muss folgender Befehl eingegeben werden:

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

2. Der manuelle Download und die anschließende Installation:

# wget -O basic-install.sh https://install.pi-hole.net
# sudo bash basic-install.sh

Alle weiteren Installationsschritte für Pi-Hole werden hier gut und ausführlich beschrieben, ich wählte „Custom“ bei der DNS Auswahl.

https://www.heise.de/tipps-tricks/Pi-Hole-auf-dem-Raspberry-Pi-einrichten-so-geht-s-4358553.html

Wenn die Installation von Pi-Hole soweit abgeschlossen ist, widmen wir uns der Installation von Cloudflared. Das wird benötigt, um über Pi-Hole per DNS-over-https (DOH) Anfragen abzuwickeln.

Dazu müssen folgende Befehle nacheinander ausgeführt werden:

# wget https://bin.equinox.io/c/VdrWdbjqyF/cloudflared-stable-linux-arm.tgz
# tar -xvzf cloudflared-stable-linux-arm.tgz
# sudo cp ./cloudflared /usr/local/bin
# sudo chmod +x /usr/local/bin/cloudflared
# cloudflared -v

Wenn diese Befehle erledigt sind, muss noch ein Benutzer angelegt werden. Das wird erledigt mit:

# sudo useradd -s /usr/sbin/nologin -r -M cloudflared

Mit

# nano /etc/default/cloudflared

wechseln wir in das entsprechende Verzeichnis, dort müssen wir, abweichend von der ursprünglichen Installation, für FFMuc folgende Zeilen einfügen:

/etc/default/cloudflared
...
 
# Commandline args for cloudflared
CLOUDFLARED_OPTS=--port 5053 --upstream https://doh.ffmuc.net/dns-query
 
...

Wenn das erledigt ist, mit strg+x und anschließend y speichern.

Danach rufen wir mit

# nano /lib/systemd/system/cloudflared.service

ein neues Verzeichnis auf und kopieren folgende Zeilen dort hinein:

/lib/systemd/system/cloudflared.service
[Unit]
Description=cloudflared DNS over HTTPS proxy
After=syslog.target network-online.target
 
[Service]
Type=simple
User=cloudflared
EnvironmentFile=/etc/default/cloudflared
ExecStart=/usr/local/bin/cloudflared proxy-dns $CLOUDFLARED_OPTS
Restart=on-failure
RestartSec=10
KillMode=process
 
[Install]
WantedBy=multi-user.target

Wieder mit strg+x und anschließend y speichern.

Mit folgenden Befehlen starten und aktivieren wir Cloudflared:

# sudo systemctl enable cloudflared
# sudo systemctl start cloudflared
# sudo systemctl status cloudflared

Jetzt kommt für FFMuc eine weitere Besonderheit, denn wir müssen mit

# echo "195.30.94.28 doh.ffmuc.net" >> /etc/hosts
# echo "2001:608:a01::3 doh.ffmuc.net" >> /etc/hosts

Cloudflared noch die IP´s von FFMuc bekanntgeben und anschließend mit

# systemctl restart cloudflared

Cloudflared neustarten.

Mit dem Befehl

# dig @127.0.0.1 -p 5053 heise.de

überprüfen wir ob alles funktioniert. Die Ausgabe sollte dann so aussehen:

Bild: Bildschirmhardcopy Befehl dig

Jetzt können wir uns beim Pi-Hole anmelden und dort die DNS-Server konfigurieren.

Dazu wechseln wir zu „settings“ dort zum Reiter „DNS“ und geben bei „Custom 1“ die IP 127.0.0.1#5053 ein. Damit verweisen wir auf Cloudflared. (Localhost) Wenn man später auf dem Dashboard unter „Queries answered by“ „Localhost“ sieht, weiss man dass die Anfragen über Cloudflared und somit über den DNS von FFMuc gelaufen sind.

Das ganze muss dann so aussehen:

Bild : Bildschirmhardcopy PiHole

Ganz unten auf dieser Seite müssen wir noch die IP und den Namen vom Router eingeben, rechts unten sieht man auch den „Save“ Button, nicht vergessen zu speichern.

Bild : Bildschirmhardcopy PiHole

In unserem Fall bleibt der Router der DHCP-Server, nur die externen DNS-Abfragen laufen über den Pi!!!! Anschließend müssen wir noch unserem Router mitteilen, dass die DNS-Abfragen in Zukunft über den Pi laufen. Dazu loggen wir uns auf unserem Router (hier FB 7490) ein und gehen dort zu „Internet → Zugangsdaten → DNS-Server“.

Dort tragen wir die statische IPv4 Heimnetzadresse (in diesem Fall die 10.99.1.11) sowie die Linklocal IPv6 Adresse des Pi ein. Bei der Fritz!Box muss man jeweils beide Felder benutzen, sonst meckert sie beim abspeichern. Die Linklocal beginnt in der Regel mit fe80, sie findet man unter „Heimnetz → Netzwerk“, wenn man auf den Stift rechts neben dem Netzwerkgerät klickt.

Bild : Bildschirmhardcopy Fritzbox-DNS

Nach der Umstellung sollte alles, einschließlich IPTV (z.B. Entertain) funktionieren.

Auf dem Dashboard vom Pi-Hole http://<IP-des-Pi>/admin/ kann man gut erkennen ob das Pi-Hole funktioniert.

Bild : Bildschirmhardcopy Pi-Hole Dashboard

Bitte auch überprüfen ob sich das Pi-Hole die Updatelisten holt. Dazu nach dem Einloggen auf den Pi-Hole unter „Tools → Update Gravity“ im rechten großen Fenster auf „UPDATE“ klicken und warten. Wenn alles funktioniert sollte es so aussehen:

Bild : Bildschirmhardcopy Pi-Hole Updateliste

Unter folgender Website gibt es noch weitere Ergänzungslisten für das Pi-Hole:

Die Listen kann man unter „Settings → Blocklists“ einfügen und speichern.

Als Quellen wurden verwendet:

  • knb/pihole.txt
  • Zuletzt geändert: 2020/06/09 17:02
  • (Externe Bearbeitung)