Pi-hole: Werbeblocker für das eigene Netzwerk einrichten

Pi-hole: Werbeblocker für das eigene Netzwerk einrichten

letzte Aktualisierung: 23. September 2022
#
Ungefähre Lesezeit: 2 min

Der Pi-hole ist ein Filter, der Werbung oder Tracker direkt im lokalen Netzwerk blockt. Dabei fungiert Pihole als DNS-Server. Hinter jeder Domain-Adresse verbirgt sich ja eine IP-Adresse und im Domain Name System (DNS) sind diese Verknüpfungen hinterlegt. Beim Aufruf einer Website fragt der Router also zunächst diese Informationen bei einem öffentlichen DNS-Server ab und gibt diese an den Browser zurück, damit dieser dann den Webserver kontaktieren kann. Meist ist das der DNS-Server des Zugangsproviders, sehr gerne wird aber auch der Google-DNS 8.8.8.8 verwendet. Hierbei muss man sich natürlich aus Datenschutzgründen selbst fragen, ob Google jede abgefragte Adresse zu wissen bekommen soll… ;-) Genauso funktioniert die DNS-Auflösung natürlich bei allen anderen Domain-/IP basierten Internet-Anwendungen.

Der Pi-hole übernimmt nun die Aufgabe der DNS-Auflösung und gleicht vor der Weitergabe an die öffentlichen DNS-Server die anforderte Domain-Adresse mit den internen Filterlisten ab. Aktuell sind in den Filterlisten mehr als 130.000 Domainnamen eingetragen, die Werbung ausliefern oder den User/das Gerät tracken. Steht eine Domain auf einer der Filterlisten, dann gibt der Pi-hole einfach seine eigene lokale IP-Adresse zurück. Pi-hole liefert dann auf Anfrage eine leere Antwort. Anstelle eines Werbebanners erscheint somit auf der Website einfach gar nichts.

Der Pi-hole ist somit ein kleiner DNS-Server, der einfach auf einem Raspberry Pi installiert wird und mittels Filterlisten Werbung und Tracker blockiert. Im Router muss man dazu einfach nur die lokalen IP-Adresse vom Pi-hole als DNS-Server eintragen.

Voraussetzungen

  • Raspian OS Bullseye
  • eingerichteter Apache2 Webserver (2.4.18 oder höher)

Konsolenbefehle

  • curl -sSL https://install.pi-hole.net | bash – Pi-hole installieen
  • pihole uninstall – deinstallieren
  • pihole -up – updaten
  • pihole version – Version anzeigen

Pi-hole installieren

  • curl -sSL https://install.pi-hole.net | bash
  • der Raspberry benötigt eine feste IP-Adresse, je nach eigenem Setting ist dies während der Installation auszuwählen / zu ändern
  • als Upstream-DNS kann die IP-Adresse des eigenen Router eingeben werden (Custom)
  • Admin Web interface installieren, um Pihole später über den Browser verwalten zu können
  • falls kein Apache in Betrieb ist, lighttpd als Webserver installieren, ansonsten nicht auswählen
  • query logging nicht aktivieren (kann später nachgeholt werden)
  • privacy mode for FTL – gibt an welche Angaben der Verbindungen später im Logfile zu sehen sind – je nach Bedürfnis, bei mir Show everything
  • während der Installation wird das Passwort angezeigt, mit dem man sich bei Pi-hole einloggen kann, verpasst man diese Angabe oder wird sie nicht eingeblendet, kann das Passwort nach der Installation über sudo pihole -a -p neu vergeben werden

Apache2 einrichten

  • den Pihole Benutzer der Webservergruppe hinzufügen (für Apache2)
    • sudo usermod -a -G pihole www-data
  • config-File anlegen
    • sudo nano /etc/apache2/sites-available/pihole.conf
  • für netzwerkbeschränkten Zugriff folgende Zeilen einfügen (eigene Netzadresse anpassen)
<IfModule alias_module>
    Alias /admin /var/www/html/admin
    <Directory "/var/www/html/admin">
        AllowOverride None
        Options None
        Order deny,allow
        Allow from 192.168.1.0/24 localhost 127.0.0.1
        #Allow from all
        Deny from all
    </Directory>
</IfModule>
  • config aktivieren
    • sudo a2ensite pihole.conf
  • config testen und Apache2 neu laden
    • sudo apachectl configtest && sudo service apache2 reload

Pihole aufrufen

  • http(s)://IP-Adresse_RPi4/admin

Probleme

  • falls bei der Speicherung der Konfiguration in Pihole eine Fehlermeldung auftaucht, kann es hilfreich sein den Apache Benutzer (www-data), der Pihole Gruppe hinzuzufügen.
    • sudo usermod -a -G pihole www-data
  • Fehlermeldung:
    • pihole-FTL[549]: dnsmasq: failed to create listening socket for port 53: Address already in use
    • pihole FATAL ERROR in dnsmasq core: failed to create listening socket for port 53: Die Adresse wird bereits verwendet
    • PHP error (2): fsockopen(): unable to connect to 127.0.0.1:4711 (Connection refused) in /var/www/html/admin/scripts/pi-hole/php/FTL.php:47
  • Fehler: DNS Proxy von ConnMan belegt den Port 53 und muss ausgeschaltet
  • Fehlerbehebung: Ordner inkl. Datei anlegen
    • sudo mkdir /etc/systemd/system/connman.service.d/
    • sudo nano /etc/systemd/system/connman.service.d/disable_dns_proxy.conf
    • u.a. Zeilen einfügen und rebooten (sudo reboot -n – Raspberry rebooten)
[Service]
ExecStart=
ExecStart=/usr/bin/connmand -n --nodnsproxy

Quellen

  • gist.github.com – GAS85/apache2_pihole.md
  • mielke.de – Mit dem Pi-hole einen Werbeblocker für das gesamte lokale Netz einrichten
  • hyperblog.de – Pihole-FTL und das DNS Problem
Tags:
Artikelaufrufe: 24
Nach oben