Dieses Dokument zählt die Unterschiede zwischen Pi-hole und AdGuardHome auf und beschreibt die Installation und Konfiguration von AdGuardHome auf einem OPNsense-Router.
AdGuardHome ist ein Netzwerkschutz-Tool, das auf der DNS-Technologie basiert. Es bietet eine Möglichkeit, unerwünschte Inhalte zu blockieren, zu filtern und zu verhindern, dass Ihre Geräte auf schädliche Websites zugreifen. AdGuardHome ist eine Alternative zu Pi-hole, das auf einem OPNsense-Router installiert werden kann. AdGuardHome ist in Go geschrieben und ist plattformübergreifend verfügbar. Zusätzlich zu dem Blockieren bietet AdGuardHome weitere sinnvolle Funktionen:
| Feature | AdGuard Home | Pi-Hole |
|---|---|---|
| Blocking ads and trackers | ✅ | ✅ |
| Customizing blocklists | ✅ | ✅ |
| Built-in DHCP server | ✅ | ✅ |
| HTTPS for the Admin interface | ✅ | Kind of, but you'll need to manually configure lighttpd |
| Encrypted DNS upstream servers (DNS-over-HTTPS, DNS-over-TLS, DNSCrypt) | ✅ | ❌ (requires additional software) |
| Cross-platform | ✅ | ❌ (not natively, only via Docker) |
| Running as a DNS-over-HTTPS or DNS-over-TLS server | ✅ | ❌ (requires additional software) |
| Blocking phishing and malware domains | ✅ | ❌ (requires non-default blocklists) |
| Parental control (blocking adult domains) | ✅ | ❌ (requires non-default blocklists) |
| Force Safe search on search engines | ✅ | ❌ |
| Per-client (device) configuration | ✅ | ✅ |
| Access settings (choose who can use AGH DNS) | ✅ | ❌ |
| Running [without root privileges][wiki-noroot] | ✅ | ❌ |
Zudem weitere Punkte die für AdGuardHome sprechen:
Es gibt ein Plugin für OPNsense, das die Installation und Konfiguration von AdGuardHome vereinfacht. Der Vorteil der Installation auf dem Router ist, dass die Funktion nicht von einem Server abhängig ist und somit auch bei einem Ausfall des Servers weiterhin funktioniert. Zudem ist die Konfiguration von AdGuardHome auf dem Router einfacher, da keine zusätzlichen Konfigurationen für die DNS-Weiterleitung notwendig sind.
AdGuardHome auf OPNsense installieren
Dieser Anleitung fehlen die Schritte der Firewall-Regeln, weswegen diese in der Version bei mir nicht ausgereicht hat.
Um das AdGuardHome-Plugin zu installieren, muss das Repository hinzugefügt werden. Dazu muss in der Konsole des OPNsense-Router folgender Befehl ausgeführt werden:
fetch -o /usr/local/etc/pkg/repos/mimugmail.conf https://www.routerperformance.net/mimugmail.conf
Nachdem das Repository hinzugefügt wurde, kann das AdGuardHome-Plugin installiert werden. Dazu kann das Plugin über das Webinterface von OPNsense installiert werden. Dazu muss in der Navigation zu System -> Firmware -> Plugins navigiert werden. Dort kann das AdGuardHome-Plugin ausgewählt und installiert werden.
Nach der Installation des Plugins kann AdGuardHome über das Webinterface von OPNsense konfiguriert werden. Dazu muss in der Navigation zu Services -> AdGuardHome navigiert werden. Dort kann die Konfiguration von AdGuardHome vorgenommen werden. Bei mir musste der Punkt Primary DNS abgehakt werden.
Was nirgendwo in allen Aneleitungen beschrieben wird, ist das für AdGuardHome eine Firewall-Regel erstellt werden muss. Diese Regel muss für das Interface erstellt werden, auf dem AdGuardHome läuft. Die Regel muss den Port 3000 freigeben, damit die initiale Konfiguration von AdGuardHome durchgeführt werden kann.

Natürlich den Port auf eigene Bedürfnisse anpassen.
Wenn AdGuardHome als DNS-Server verwendet werden soll, müssen die vorhandenen DNS-Server umgeleitet oder deaktiviert werden.
Dazu muss in der Navigation zu Services -> Unbound DNS -> General navigiert werden. Dort kann die Option Enable deaktiviert werden.
Es ergibt auch Sinn, den internen DNS Server weiterlaufen zu lassen und die Anfragen an AdGuardHome weiterzuleiten. Denn Adguard kennt natürlich die DHCP-Adressen nicht. Dazu muss in der Navigation zu Services -> Unbound DNS -> General navigiert werden. Dort kann die Option Enable aktiviert werden. Dann kann der Listen Port auf 5353 geändert werden.
Nachdem die Konfiguration abgeschlossen ist, kann der AdGuardHome Einrichtungsassistent gestartet werden. Dazu muss lediglich der gerade in der Firewall konfigurierte Port aufgerufen werden.
http://router-ip:3000
Die IP-Adresse des Routers muss durch die IP-Adresse des Routers ersetzt werden.
Bei mir hat die Konfiguration des DNS-Ports auf 53 nicht funktioniert. Ich habe den Port auf einan anderen angepasst und in einer Firewall-Regel freigegeben. Das hat viel Zeit und Nerven gekostet.


Den Rest der Konfiguration kann nach den eigenen Bedürfnissen durchgeführt werden.
Dieser Punkt hat verdammt viele Nerven gekostet, ist aber letztlich total einfach. Damit Lokale Dienste wie testserver.local aufgelöst werden, muss in der AdGuardHome-Konfiguration ein Eintrag gemacht werden.

Dieser Eintrag bewirkt, dass alle Anfragen an *.local angefragt werden über den DNS-Server von Opnsense aufgelöst werden. Dieser kennt die DHCP-Clients (Sogar Reservierungen) und durch das ARP alle Geräte im Netzwerk.
Alternativ kann natürlich der DHCP-Server von AdGuardHome verwendet werden. Dann ist dieser Schritt überflüssig, denn dann kenn AdGuardHome alle Geräte im Netzwerk.