Werbung im Internet nervt und wird zunehmend nicht nur anstrengend sondern auch gefährlich.
Adblocker gibt es zuhauf und man kann damit auch überaus befriedigende Lösungen an einzelnen Geräten schaffen. Aber was ist mit weniger bedachten Usern? Und setzen die Adblocker nicht eigentlich an der falschen Stelle an? Wie sieht es mit Smart TVs oder Smartphones und deren APPs aus?
Ich hole einmal kurz aus:
Üblicherweise wird die Internetseite, die wir in unserem Browser eingeben an einen DNS (Domain Name Server) Server gesendet, der das dann anschließend (entweder selbst oder durch Rückfrage bei einem Übergeordneten DNS Server) anschließend auf eine IP Adresse übersetzt. Diese IP Adresse liefert dann den gewünschten Content.
Oft ist der lokale DNS die Fritzbox, die dann entweder beim DNS Server des Providers oder GOOGLE nachfragt (8.8.8.8). Entsprechende Werbung ist dann auf zb auf der Website unter Umständen vom Adblocker unterdrückt.
Setzt man nun als DNS Server beispielsweise ein Pihole ein, übernimmt das Pihole die Aufgabe der DNS Auflösung und gleicht vor der Weitergabe an die öffentlichen DNS Server die angeforderte Domain mit den internen Filterlisten ab. Die Größe der intern verwendeten Listen und deren Anzahl lässt sich beliebig erweitern. Ich habe zwischendurch über eine Million Domains durch einfaches hinzufügen fertiger Listen geblockt.
Jetzt kursieren viele Anleitungen wie man auf einem dedizierten Pi ein Pihole aufsetzen kann. Oder auf einem Eigenbau NAS usw.
Für mich war lange Zeit auf meinem NAS ein Docker Container auf dem NAS mein DNS-Maskenfilter. Pi Spielerein habe ich genügend hier, wollte aber keine wirklich wichtige Funktion einem dieser wirklich netten Spielzeuge laufen lassen. Also musste mein NAS herhalten. Wirklich zufrieden war ich mit dieser Lösung aber ehrlich gesagt nicht. Ein NAS gehört für mich nicht wirklich zum Inventar des Hauses und soll im Falle eines Auszugs evtl mit.
Besser sollte das auf Hardware laufen, diedefinitiv zu dem Haus gehört. Warum also nicht auf dem Wolf?
- Konfiguration der Ethernet Schnittstelle als Macvlan
- Ich habe die Umsetzung über MacVLAN realisiert. Wenn ihr meiner Anleitung folgen wollt, bitte konfiguriert ein MacVLAN Netzwerk gemäß dieser Anleitung:
Klick
Hierbei bitte darauf achten, dass für das PiHole eine Kommunkation zwischen Host (Timberwolf) und Container zwingend erforderlich ist, da ihr euren Timberwolf sonst aus dem Internet quasi aussperrt.
- Ich habe die Umsetzung über MacVLAN realisiert. Wenn ihr meiner Anleitung folgen wollt, bitte konfiguriert ein MacVLAN Netzwerk gemäß dieser Anleitung:
- Anlegen der Volumes in Portainer
Als nächstes legen wir im Portainer unter Volumes Volumes an:
Beispielsweise:- Pihole_dnsmasq.d
- Pihole_pi-hole
Jeweils über Create the volume bestätigen.
- Pihole_dnsmasq.d
- Herunterladen des Pihole Containers
Nun da dies erledigt ist, ziehen wir uns das PiHole Image. Getestet wurde pihole/pihole:latest.
Mit Pull the Image wird das Image geladen. - Konfiguration des Containers
Als erstes vergeben wir unter Name einen Namen für den Container. Bei mir Pihole_pihole.
Unter Image Configuration wählen wir das eben gewählte Image pihole/pihole:latest aus.
- Nun können wir uns entscheiden, ob wir alle verwendeten Ports nach außen führen wollen oder nicht
- Da wir dem Container mittels MACVLAN eine eigene IP zugewiesen haben können wir einfach alle verwendeten Ports freigenen
- Alternativ können wir uns die Ports auch einzeln definieren:
Achtet hierbei bitte auch auf TCP und UDP.
Empfehlenswert sind:
- 443:443 TCP
- 53:53 UDP
- 53:53 TCP
- 67:67 UPD
- 80:80:TCP
Der Port 67 ist nur notwendig, falls ihr das Pihole nicht nur als DNS Server, sondern auch als DHCP Server nutzen wollt und ist nur der Vollständigkeit halber mit aufgeführt.
- Da wir dem Container mittels MACVLAN eine eigene IP zugewiesen haben können wir einfach alle verwendeten Ports freigenen
- Zuweisen der Volumes
Nun fügen wir, damit die Listen und Logs beim Update erhalten bleiben unter Volumes die vorher angelegten Volumes wie folgt hinzu, also- /etc/pihole auf Pihole_pi-hole und
- /etc/dnsmasq.d auf Pihole_dnsmasq.d
- Setzen der Environment Variablen
Unter ENV müssen wir noch einige environment Variablen setzen.- ServerIP muss man die IP des Docker Containers angeben, hier 192.168.178.245
- TZ legt die Zeitzone fest, bei mir Europe/Berlin
- WEBPASSWORD definiert das Passwort für die Administrationsoberfläche, im Beispiel supersecure
- DNS1 habe ich 1.1.1.1 gewählt, weil ich kein besonders großer Fan von Google bin. 8.8.8.8 oder der DNS vom Chaos Computer Club oder ähnliches würde aber auch problemlos funktionieren. Gängige Suchmaschinen liefern DNS Server zu hauf.
- mit DNS2 könnt ihr einen weiteren DNS eintragen. Ich habe mich für quad 9, also 9.9.9.9 entschieden
- Konfiguration Network:
Unter Network
müssen wir das Pihole nun bei dem Unterpunkt Network unserem MacVLAN zuweisen, bier mir "Dahoam".- Hostname habe ich PiHole gewählt
- IPv4 Adress muss die selbe IP vergeben werden die bei ENV unter ServerIP vergeben wurde
- Setzen der restart Policy
- unter restart Policy bitte always oder unless stopped eintragen. Habe das beim testen mal vergessen und mich gewundert warum nichts mehr ging nachdem ich meinen Server mal neu gesartet habe (da waren ein paar Tage dazwischen und ich hatte das in dem Moment nicht auf dem Schirm. War wirklich lästig).
- Dann noch auf Deploy the Container klicken
- Auf die Oberfläche kommt man über die IP des Docker Containers /admin, also im Beispiel: 192.168.178.245/admin
- Setzen des DNS in eurem Modem/DHCP Server
Um das Pihole auf dem Timberwolf nun als DNS-Server auf all euren Endgeräten (die auf DHCP eingestellt sind) zu nutzen muss nun noch der DNS Server in eurem DHCP Server auf die IP des PiHoles gesetzt werden, also im Beispiel: 192.168.178.245.
- In einer Fritzbox 7560 geht das beispielsweise indem ihr euch einloggt, auf
Heimnetz -> Netzwerk -> Netzwerkeinstellungen -> IPv4-Adressen klickt
Hier kann man nun den Lokalen DNS Server eintragen. im Beispiel 192.168.178.245.
- In einer Fritzbox 7560 geht das beispielsweise indem ihr euch einloggt, auf
- Lokale Gerätenamen auflösen
Um im Internen Netzwerk Gerätenamen auflösen zu können muss nun noch im Pihole die bedingte Weiterleitung aktiviert werden, sofern das Pihole nicht ebenfalls euren DHCP Server stellt (in dieser Anleitung der Fall).- klickt hierfür im PiHole auf Settings
- dann auf DNS
- setzt unten ein Häcken bei "use Conditional Fowarding"
- tragt die IP eures Routers ein bei mir 192.168.178.1
- tragt euren domain Namen ein. Bei mir Dahoam, in den meisten Fällen dürfte dies fritz.box sein
- Container Updaten
Da das Pihole den DNS Server im internen Netzwerk darstellt, muss vor dem neu Erstellen des Images erst das Image gezogen werden.
Hierfür bitte zunächst in Portainer unter Images bei Pull image einfach das entprechende Image eingeben, hier pihole/pihole:latest, auf Pull the image klicken.
Alles weitere verläuft analog zum Unifi Controller oder einem anderen.
Dann auf Containers klicken auf den Namen des Pihole Containers, hier Pihole_Pihole
Dann auf Duplicate/Edit
Und dann auf Deploy the container.
Zu den Filterlisten wollte noch erwähnen, dass nicht zwangsläufig die Blocklisten interessant sind, sondern auch die Whitelists. Hier etwas allgemeingültiges zu formulieren halte ich für äußerst schwierig. Ich verlinke mal Seiten an denen ich mich orientiert habe.
Whitelistvorschläge aufgeschlüsselt
Vorschläge Block und Whitelist
Das war auch schon alles. Viel Erfolg wünscht euer ElabNET Team