Werbe und Tracking frei surfen im eigenen Netzwerk

Werbefreies surfen im eigenen Netzwerk ohne Addblocker? Lernen Sie wie Sie schnell und einfach die Open Source Software Pi-Hole auf einem Raspi installieren

Heute mal ein Blog Post für die eher Technikinteressierten. Wer allerdings eine fertige Lösung vorzieht, kann sich gern mit mir in verbindung setzen.

Den meisten Internetbenutzern geht es wahrscheinlich wie mir selbst. Die meiste Werbung und das getracked werden durch große Internetkonzerne wie Soziale Netzwerke oder Suchmaschinen macht einfach keinen Spaß. Naheliegend, ist die Installation eines Adblockers für den Browser eine gute Möglichkeit dieses Problem zu lösen. Nachteilig ist, dass das entsprechende Plugin in jedem verwendeten Browser installiert werden muss. Eine andere Lösung ist das zentrale Blocken solches unerwünschten Content direkt auf der Ebene des Netzwerkes. Hierfür gibt es das coole Open-Source Projekt Pi-hole. Kurz gesagt es basiert darauf, dass bevor etwas im Internet heruntergeladen werden kann die Adresse (Hostname) eines Servers in eine IP-Adresse aufgelöst werden muss (DNS-Namesauflösung). Pi-hole ist ein kleiner DNS-Server welche basierend auf bekannten Listen die Namensauflösung von Werbe und Tracking Server mit einer sinnlosen IP-Adressen (0.0.0.0) beantwortet. Der Browser oder auch App auf dem Smartphone kann somit diese Server nicht kontaktieren und der entsprechenden Content wird nicht heruntergeladen. Alle anderen DNS-Anfragen leitet Pi-Hole wie sonst alle lokalen DNS-Server (meist der Router) an einen DNS-Server im Internet oder den lokalen Router weiter.

Die Ressourcen-Anforderungen von Pi-hole sind nicht besonders hoch. Da der Pi-hole Dienst rund um die Uhr und das 7 Tage die Woche arbeiten muss ist vor allem der Energieverbrauch eines solchen „Servers“ von Relevanz. Für kleinere bis mittlere Netzwerke eignet sich daher ein Raspberry Pi 3B.

Installation Raspbian

Im ersten Schritt, muss Raspbian auf dem mini-PC installiert werden. Das geht heutzutage sehr komfortable, dank des Raspberry Pi Imager. Diesen kann unter https://www.raspberrypi.com/software/ herunterladen. Danach einfach den Screenshots folgen. In diesem Post gehe ich davon aus, dass bereits ein SSH Public/Private Key vorhanden ist. Falls nicht, einfach [hier] nachschauen wie man sich ein solches Key-Paar erzeugen kann.

Nach der Installation von Raspbian auf die micro SD-Karte verbindet man den Raspberry Pi mit dem Netzwerk und kann mittels SSH darauf zugreifen.

Installation Docker

Da ich in Zukunft noch weitere kleinere Dienste auf dem Raspberry PI betreiben möchte bietet sich eine docker basierte Installation an. Ein weitere Vorteil dieses Ansatzes ist, das alle Konfiguration standardisiert abgelegt und verwaltet werden kann und spätere Updates einfach durchzuführen sind. 

Als erstes aktualisieren wir alle System-Pakete. 
sudo apt-get update && sudo apt-get upgrade

Für die Installation von Docker sind einige Kommandos erforderlich. Aus Bequemlichkeit nutze ich dieses Skript: 
curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh

Für die tägliche Arbeit mit Docker ist es hilfreich, wenn der eigenen Benutzer in der docker Benutzergruppe ist. Ansonsten benötigen werden immer root-Rechte zur Ausführung von docker Befehlen benötigt.

sudo usermod -aG docker [Benutzername]

Die Änderung wird erst nach erneuter Anmeldung aktiv.

Noch abschließend ein kurzer Test mittels hello-world container ob alles funktioniert wie es soll.
docker run hello-world

Installation docker-compose

Docker compose ist ein hilfreiches Tool mit dem man die Konfiguration von docker container standardisiert Beschreiben und Verwalten kann. Auf dem Raspberry PI kann es folgendermaßen installiert werden:

sudo apt-get install libffi-dev libssl-dev python3-dev python3 python3-pip
sudo pip3 install docker-compose

Mit docker-compose –version kann getestet werden ob es funktioniert.

Pi-hole installieren

Da auf dem Raspberry Pi jetzt ein funktionierender docker installiert ist, wird Pi-hole als docker container ausgeführt. Dazu muss folgende docker-compose Datei angelegt werden.

nano pihole.yaml

version: "2.2"

volumes:
  pihole-etc:
  dnsmasq-etc:

services:
  service:
    image: pihole/pihole:2022.01.1
    cpu_count: 2
    mem_limit: 64M
    memswap_limit: 128M
    mem_swappiness: 0
    hostname: docker-0
    dns:
      - 127.0.0.1
      - 1.1.1.1
    ports:
      - "53:53/tcp"
      - "53:53/udp"
      - "80:80/tcp"
    environment:
      TZ: 'Europe/Berlin'
      WEBPASSWORD: '#### Ihr sicheres passwort ###'
      FTLCONF_REPLY_ADDR4: '#### LAN IP-Adresse ###'
      VIRTUAL_HOST: 'docker-0'
      DNSMASQ_LISTENING: 'all'
    volumes:
      - 'pihole-etc:/etc/pihole'
      - 'dnsmasq-etc:/etc/dnsmasq.d'
    restart: unless-stopped

Pi-hole wird jetzt mit folgenden Befehl heruntergeladen und dann ausgeführt.

docker-compose -f pihole.yaml --project-name pihole up -d

Die Einstellung “DNSMASQ_LISTENING” muss auf “all” gestellt sein, da es ansonsten mit dem docker bridge netzwerk nicht funktioniert. Wird der Pi-hole Dienst hinter einer Firewall sicher im privaten Netzwerk (LAN) betrieben ist die Einstellung auch kein Problem. Auf öffentlichen Servern ist jedoch Vorsicht angezeigt.

Damit Pi-hole auch seinen Dienst verrichten kann, müssen alle Computer im Netzwerk den Pi-hole Dienst als primären DNS Server nutzen. Am besten geht das über eine Anpassung im DHCP.

Ich hoffe einen kleinen Einblick/Überblick gegeben zu haben wie eine cooles Open-Source Tool unseren IT-Alltag ein wenig besser machen kann.

Die Verantwortung für die Installation liegt selbstverständlich bei jedem einzelnen, eine Haftung kann hierfür nicht übernommen werden.