Werbung, Tracker und schädliche Webseiten können über DNS blockiert werden. Dazu braucht man im Prinzip nur eine Liste mit DNS-Namen von unerwünschten Diensten und einen DNS-Server, der Anfragen an die Dienste auf der Liste ins Nichts umleitet. Ein Client, der diesen DNS-Server nutzt, kann, wenn er versucht, ein nerviges Werbebanner zu laden, den DNS-Namen nicht auflösen und somit das nervige Werbebanner nicht laden.
Wenn man einen Home Server hat (ein Raspberry Pi reicht völlig aus), kann man zu Hause einen netzwerkweiten „DNS-Blocker“ betreiben. Es gibt verschiedene Dienste, die man sehr einfach per Docker installieren kann. Ich nutze aktuell AdGuard, weil dieses stabiler läuft als PiHole. PiHole wäre aber eigentlich vorzuziehen, da es freie Software ist.
Das Schöne an diesem Ansatz ist, dass er für alle Geräte und alle darauf laufenden Anwendungen im Heimnetzwerk funktioniert, egal ob Linux-Desktop, Staubsaugerroboter, iPhone, Smart TV etc.
Ein docker-compose.yaml
file sieht etwa so aus. Der Dienst kann per docker-compose up -d
gestartet werden.
version: '3.3'
services:
adguard:
image: adguard/adguardhome
container_name: adguardhome
restart: unless-stopped
volumes:
- './workdir:/opt/adguardhome/work'
- './confdir:/opt/adguardhome/conf'
ports:
- '53:53/tcp'
- '53:53/udp'
- '3001:80/tcp'
- '3000:3000/tcp'
Sollte dabei eine Fehlermeldung angezeigt werden, so ist vermutlich der lokal auf dem Rechner laufende Stub-Resolver daran schuld, der schon den DNS-Port benutzt. Der Stub-Resolver kann wie folgt gestoppt …
#!/bin/bash
systemctl disable systemd-resolved.service
systemctl stop systemd-resolved
… und falls nötig wieder gestartet werden.
#!/bin/bash
systemctl enable systemd-resolved.service
systemctl start systemd-resolved
Man öffnet nun im Browser http://ServerIP:3000 für eine Erstkonfiguration. Witzigerweise wird nach der Erstkonfiguration eine andere UI auf http://ServerIP:3001 aktiv, über die Statistiken (siehe oben) eingesehen und zusätzliche Konfigurationen vorgenommen werden können.
Nun muss im WLAN-Router noch eingestellt werden, dass der WLAN-Router den auf dem Home-Server laufenden DNS-Blocker als DNS-Server verwendet. D.h. die IP des Servers wird im Router als DNS-Server eingetragen. Zusätzlich lasse ich in den DHCP-Einstellungen meines WLAN-Routers die IP des Servers als von den Clients zu verwendenden DNS-Server verteilen. Das ist zwar etwas redundant, war aber zumindest in meinem Heimnetz notwendig, um alle Anfragen aller Geräte zuverlässig an den DNS-Blocker weiterzuleiten.
Der AdGuard funktioniert so gut, dass ich zwischenzeitlich keine anderen AdBlocker in Browsern etc. mehr verwende. Das einzige Problem ist, dass der Schutzschild unterwegs nicht mehr funktioniert, da man sich ja nicht im Heimnetzwerk befindet. Das ist aber kein Problem, denn man kann sich einfach per WireGuard VPN nach Hause tunneln. Eine Konfiguration, bei der ausschließlich der DNS-Traffic ins Heimnetz geleitet wird, sieht folgendermaßen aus:
[Interface]
PrivateKey = xxx
Address = 10.0.0.2/32
DNS = 10.0.0.1
[Peer]
PublicKey = xxx
PresharedKey = xxx
AllowedIPs = 10.0.0.1/32
Endpoint = 111.222.333.444:12345
Das DNS = 10.0.0.1
Statement bewirkt, dass der sich verbindende Client diese IP, also die IP des DNS-Blockers als DNS-Server nutzt. AllowedIPs = 10.0.0.1/32
heißt, dass nur Kommunikation an diesen Adressbereich über den Server fließt. Der Vorteil von diesem Ansatz ist, dass Downloads nicht über das langsame heimische DSL fließen müssen!
Ein besonders nettes Goodie ist, dass der WireGuard Client eine automatische VPN-Aktivierung durchführen kann, wenn er feststellt, dass man nicht. mehr mit dem heimischen WLAN verbunden ist.
Schreibe einen Kommentar