Internet-Werbung blockieren im ganzen Netzwerk - Pi-hole/Docker

 

Durch die Verwendung eines Adblockers ist es möglich einen Großteil der angezeigten Werbung im Internet auszublenden. Wer für sein Heimnetzwerk einen zentralen Adblocker sucht, sollte sich den Werbeblocker Pi-hole ansehen. Pi-hole ist ein Open-Source DNS-Server mit integriertem Tracking- und Werbeblocker. Pi-hole läuft auf den gängigen Linux-Systemen und kann somit unter anderem auf einem Raspberry-Pi oder in einem Docker-Container betrieben werden.

Docker Basics

Docker ermöglicht es, Services oder Applikationen per Befehl in einem sogenannten Container zu starten.
Ein Container ist eine vom Betriebssystem (OS) unabhängige isolierte Umgebung:
Beim ersten Start eines Containers, lädt Docker selbstständig alle notwendigen Quellen
aus dem Internet.
Docker kann unter Windows, macOS oder einer Linux-Distribution installiert werden,
siehe auch: Docker

Damit die DNS-Anfragen aller Geräte im Netzwerk von Pi-hole beantwortet werden, kann die IP-Adresse von Pi-hole als DNS-Server zentral am Router hinterlegt werden. Geräte mit automatischer Adressvergabe: DHCP, verwenden dadurch Pi-hole als DNS und somit dessen Werbefilter. Als Beispiel kann in der freien Router-Firmware OpenWRT der DNS wie folgt angepasst werden: /openwrt-mein-setup#dns. Ich verwende Pi-hole als Docker-Container auf meiner NAS, siehe auch:  NAS selber bauen: flexibel, stromsparend und billig [HowTo].

docker-compose.yml

Nachdem der Port 80 auf meiner NAS bereits anderweitig besetzt ist, verwende ich eine leicht angepasste Version der docker-compose.yml des Herstellers: 

version: "3"

# More info at https://github.com/pi-hole/docker-pi-hole/ and https://docs.pi-hole.net/
services:
  pihole:
    container_name: pihole
    image: pihole/pihole:latest
    ports:
      - "53:53/tcp"
      - "53:53/udp"
      - "67:67/udp"
      - "84:80/tcp"
    environment:
      TZ: 'Europe/Amsterdam'
      WEBPASSWORD: 'password'
    # Volumes store your data between container upgrades
    volumes:
      - './etc-pihole/:/etc/pihole/'
      - './etc-dnsmasq.d/:/etc/dnsmasq.d/'
    # Recommended but not required (DHCP needs NET_ADMIN)
    #   https://github.com/pi-hole/docker-pi-hole#note-on-capabilities
    cap_add:
      - NET_ADMIN
    restart: always

In der Datei wird der Port 84 auf 80 gemappt. Entsprechend ist die Admin-Oberfläche später unter der IP-Adresse der NAS mit Port 84 erreichbar. Zudem habe ich die Variable "WEBPASSWORD" mit einem sicheren Kennwort befüllt. Das Beispiel verwendet Bind-Mounts und keine Docker Volumes für das permanente Speichern der Daten. Siehe: Docker Daten speichern: Docker Volumes vs. Host-Ordner

Der Start des Containers im Terminal erfolgt mit folgendem Befehl: 

docker-compose up -d

Beim ersten Start hatte ich dann noch ein Problem mit dem Port 53, dieser war auf meiner NAS bereits belegt:

Ubuntu/Debian Port 53 besetzt

Da meine NAS Debian verwendet, blockiert der Dienst systemd-resolv den DNS-Port 53. Damit sich für den Pi-hole-Docker-Container der Port 53 nutzen lässt, habe ich den systemd-resolved-Service deaktiviert.

user@rechner:/docker/pi-hole$ sudo netstat -tulpn | grep LISTEN
...
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      1279/systemd-resolv
...
user@rechner:/docker/pi-hole$ sudo systemctl disable systemd-resolved.service
Removed /etc/systemd/system/dbus-org.freedesktop.resolve1.service.
Removed /etc/systemd/system/multi-user.target.wants/systemd-resolved.service.
user@rechner:/docker/pi-hole$  sudo systemctl stop systemd-resolved

Admin-Oberfläche

Der Aufruf der Admin-Oberfläche erfolgt im Browser mit der IP-Adresse der NAS und den zuvor verwendeten Port 84:

http://x.x.x.x:84/admin

Pi-hole verwendet eine vordefinierte Blacklist und zeigt bereits auf der Startseite Statistiken zu den Clients und den erlaubten, sowie blockierten Domains:

Zusätzlich zu Pi-hole verwende ich aktuell noch die DNS-Server von OpenDNS als Upstream DNS-Servers um nicht jugendfreie Inhalte aus dem Heimnetzwerk möglichst zu verbannen, siehe auch:  kindersicheres Internet über das Heimnetzwerk - DNS am Router.

In Pi-hole befindet sich die Einstellung für den Upstream DNS Server unter Settings/DNS:

 

 

positive Bewertung({{pro_count}})
Beitrag bewerten:
{{percentage}} % positiv
negative Bewertung({{con_count}})

DANKE für deine Bewertung!

Fragen / Kommentare


Durch die weitere Nutzung der Seite stimmst du der Verwendung von Cookies zu Mehr Details