Wen überbordende Werbung auf Webseiten auf den Senkel geht, der greift in der Regel zu einem browserbasiertem Werbefilter, der als Plugin integriert wird. Dies funktioniert rechnerlokal ziemlich gut, mein Favorit ist hierbei uBlock Origin. Leider gibt es diesen nicht (mehr) für Safari unter MacOS, Alternativen sind nur bedingt brauchbar, 1Blocker etc. können mit uBlock Origin nicht mithalten. Ebenso sind brauchbare AdBlocker auf Smartphone und Smart-TV (FireTV) Mangelware.

DNS-Filter als zentrale Alternative

Betreibt man also viele verschiedene Geräte im Heimnetzwerk, ist eine zentrale Werbefilterung durchaus ein Gedanke wert. Man sollte sich nur bewusst sein, dass ein Werbefilter über DNS nicht das gleiche ist, wie ein Werbeblocker, der als Plugin im Browser läuft: Letzterer ist nicht nur in der Lage Server zu blockieren, die Werbung ausliefern, sondern kann das Layout der Webseite um die Werbebereiche bereinigen und sie so anzeigen, als wäre nie Werbung integriert worden. uBlock Origin ist darin wirklich sehr gut.

Dies kann ein DNS-Filter natürlich nicht leisten, dafür benötigt man auf den einzelnen Clients keinerlei Plugins und kann somit auch Geräte vor Werbeflut und überbordenden “Heimfunken” schützen, für die man nicht so leicht Werbeblocker installieren kann. FireTV sei hier mal genannt, der meinen DNS-Filter ordentlich beschäftigt, sobald er aktiviert wird.

Kurz erklärt: Surft man im Internet, müssen für den Menschen lesbare Webadressen zu einer IP-Adresse aufgelöst werden. Diese Information, welche Webadresse zu welcher IP-Adresse gehört, halten die DNS-Server vor. Ruft man jetzt eine Seite auf, auf der diverse Werbebanner etc. integriert sind, muss für die Anzeige mit den dazugehörigen Werbeservern kommuniziert werden. Die Anfrage an die Werbeserver beim Aufruf einer Webseite wird dann vom DNS-Filter blockiert. Damit kann die Werbung nicht ausgeliefert und auf der Webseite angezeigt werden. Wie gut dies funktioniert hängt also von der Qualität der Filterlisten ab. Manche Werbung kommt oft immer noch durch oder ist direkt in die Seite integriert und wird damit nicht als DNS-Anfrage geholt. Hier sind lokale Ad-Blocker natürlich besser, da diese auch den Quellcode der Seite lesen und analysieren.

Wichtige Voraussetzung für das ganze: Lokale DNS-Anfragen gehen nicht direkt über den Router ins Internet an die bekannten DNS-Server (z.B. 8.8.8.8), sondern an einen lokalen DNS-Server, der die Anfragen vorfiltert, bevor sie ins Internet gehen.

DNS-Filter Software

Relativ bekannt ist die Software Pi-hole, deren Kernfunktion es ist einen DNS-Server im Netzwerk bereitzustellen, der mit diversen Listen gefüttert wird, die die Hostnamen bzw. IP-Adressen von Servern beinhalten, welche Werbung ausliefern. Pi-Hole basiert auf Linux und ist primär dafür gedacht, dass es auf einem Raspberry Pi läuft. Was einem natürlich nicht daran hindert, es in einer virtuellen Maschine laufen zu lassen. Das hatte ich auch ursprünglich angedacht, bis ich auf AdGuard Home gestoßen bin.

Vorteil von AdGuard Home ist nämlich, dass es auf FreeBSD läuft und damit direkt auf der OPNsense installiert und betrieben werden kann. Damit spart man sich eine VM oder den Raspberry Pi und packt den Filter zusammen mit der Firewall auf die selbe Appliance.

Grundsätzlich unterscheiden sich Pi-hole und AdGuard Home im Funktionsumfang kaum und machen mehr oder weniger das selbe. Beide besitzen eine optisch ansprechende Weboberfläche und lassen sich einfach konfigurieren.

AdGuard Home auf OPNsense installieren

Man könnte AdGuard Home per Download und rein im Terminal auf der OPNsense installieren, einfacher ist es jedoch ein Repository zu nutzen. Besser gesagt, dass mimugmail repository.

  • Mit ssh auf die OPNsense verbinden (Terminal oder Putty):

ssh root@OPNsense-IP-Adresse

  • Auswahl Punkt 8) Shell
  • Das Repository installieren (wie auf GitHub beschrieben):

fetch -o /usr/local/etc/pkg/repos/mimugmail.conf https://www.routerperformance.net/mimugmail.conf

Danach kann man sich mit dem Kommando exit aus der Shell ausloggen und mit 0 von der OPNsense abmelden.

Als nächstes loggen wir uns in die OPNsense Oberfläche ein und gehen zu den Plugins:

System -> Firmware -> Erweiterungen

Hier sucht man nach der Erweiterung os-adguardhome-maxit und installiert diese mit dem +-Zeichen auf der rechten Seite.

OPNsense – Installation os-adguardhome-maxit

Als nächstes muss man den DNS-Server auf der OPNsense deaktivieren bzw. dessen Port ändern. Ich selbst habe Unbound laufen und habe den hörenden Port auf 5353 gestellt. Dies ist nötig, damit sich AdGuardHome und Unbound hinsichtlich Namenauflösung nicht in die Quere kommen.

Unbound findet man unter:

Dienste -> Unbound DNS --> Allgemein --> Hörender Port

OPNsense - Unbound DNS hörender Port anpassen
OPNsense – Unbound DNS hörender Port anpassen

Als nächstes aktivieren wir AdGuardHome. Dazu muss lediglich ein Haken gesetzt werden unter:

Dienste -> Adguardhome -> Allgemein

Im nächsten Schritt verlassen wir die OPNsense und loggen uns direkt in die Weboberfläche von AdGuardHome ein, um die weitere Installation abzuschließen. Die Weboberfläche ruft man mit http://opnsense-ip-adresse:3000 auf.

Bei der Einrichtung gibt es eigentlich nicht viel zu beachten. Bei der Admin Weboberfläche wählt man die Netzwerkschnittstelle auf der man INTERN die Oberfläche erreicht. Auf keinen Fall die WAN Schnittstelle auswählen, sonst ist die Oberfläche von außen erreichbar 😉 Als Port kann man 8080 belassen.

Der DNS-Server muss ebenfalls auf die interne Schnittstelle eingestellt werden, mit Port 53. Die Warnung bzgl. feste IP kann ignoriert werden. Wieso diese angezeigt wird, weiß ich nicht. Immerhin hat die OPNsense ja eine feste IP.

Die Installation wird abgeschlossen, in dem man einen Admin-Account anlegt. Hier seid ihr bei Benutzernamen und Passwort natürlich völlig frei.

AdGuardHome nutzen

Damit AdGuardHome seinen Nutzen erfüllen kann, müssen die Clients im Netzwerk auch beim richtigen DNS-Server ihre Anfragen auflösen. Bei mir ist vieles über DHCP konfiguriert, hier wird dem Client nicht nur eine IP mitgeteilt, sondern auch die IP-Adresse des DNS-Servers. Bei mir ist es Klassischerweise die OPNsense-IP. Dies ist mit der Verwendung von AdGuardHome immer noch richtig, da wir weiter oben den DNS-Server auf der selben IP konfiguriert haben. Ist ja auch logisch, da AdGuardHome auf dem selben Gerät läuft wie die OPNsense an sich. Also bitte prüfen, ob auf irgendwelchen Clients mit festen IP-Adressen der lokale DNS eingestellt wird.

Loggt man sich in die Oberfläche von AdGuardHome ein, sieht man auf dem Dashboard u.a. die DNS-Anfragen und auch die Block-Raten. Hier sieht man somit am Anfang recht schnell, ob DNS-Anfragen an AdGuardHome gehen, also die Clients richtig konfiguriert wurden.

AdGuardHome Dashboard
AdGuardHome Dashboard

Am Ende liegt es an den Filter-Listen, wie gut oder schlecht der Werbeblocker arbeitet. Aus meiner Sicht machen die beiden mitgelieferten Listen einen guten Job. Erwischen manchmal nicht alles, aber blockieren auch nicht zu viel. Ich hatte kurz weitere Listen aktiviert, allerdings schnell festgestellt, dass komplette Seiten auf einmal blockiert wurden und nicht mehr nutzbar waren.

AdGuardHome - Filterlisten
AdGuardHome – Filterlisten

Zum Testen, wie gut der Blocker arbeitet, kann man folgende Seite nutzen und dort auf AdBlock Test klicken: https://d3ward.github.io/toolz/

Auszug aus einem AdBlock Test
Auszug aus einem AdBlock Test

Fazit

Wer bereits eine OPNsense Firewall betreibt, kann recht einfach einen zusätzlichen Werbefilter bzw. AdBlocker laufen lassen. Die Installation/Konfiguration ist einfach, das Resultat ist in den meisten Fällen sehr gut. AdGuardHome kommt zwar nicht an einen lokalen Filter wie uBlock Origin heran, hilft aber ungemein Werbung auf Clients wie Smartphones und anderen Geräten zu blockieren. Eine wahre Blockier-Orgie kann man übrigens beobachten, sobald der FireTV-Stick gestartet wird. Ich habe gelesen, dass hier alles mögliche zu Amazon übermittelt werden soll, das den User analysiert: z.B. Was hat er wann wie lange geschaut?

Bock auf eine eigene OPNsense Appliance? Ich habe im Artikel Selfmade OPNsense Appliance genau erklärt, wie ich vorgegangen bin und bin auch nach mehreren Jahren sehr zufrieden mit der Konfiguration.