AdGuardHome ist ein DNS-Server der gleichzeitig auch eine Filterung der DNS-Anfragen durchführt, so dass man Werbung, Trackerseiten, Phishingseiten usw, blockieren kann. Dies geschieht über auswählbare Filterlisten, zudem wird auch ein DHCP-Server bereitgestellt.

Download des Installationsarchivs

Auf der Seite https://github.com/AdguardTeam/AdGuardHome/releases stehen vorkompilierte Installationsarchive zum Download zur Verfügung. Es sind hier für eisfair-1 und eisfair-64 unterschiedliche Archive downzuloaden:

  • eisfair-1: AdGuardHome_linux_386.tar.gz
  • eisfair-64: AdGuardHome_linux_amd64.tar.gz

Installation des Archivs

Nun installiert man das Programm in das Verzeichnis /opt/AdGuardHome, ein anderes Installationsverzeichnis ist auch möglich:

# mkdir /opt/AdGuardHome
# chmod 0700 /opt/AdGuardHome

Mit dem mc öffnet man nun das downgeloadete Installationsarchiv und kopiert dann den Inhalt des Unterverzeichnisses AdGuardHome nach /opt/AdGuardHome.

Konfiguration von AdGuardHome

Mit

/opt/AdGuardHome/AdGuardHome -s install

startet man nun AdGuardHome, womit folgende Schritte vorgenommen werden:

  • Es wird ein SystemD-Unitfile /etc/systemd/system/AdGuardHome.service erstellt.
  • Es wird ein daemon-reload von SystemD durchgeführt und derFRITZ.Box_7490_113.07.59_11.11.24_1731 AdGuardHome-Service wird enabled und gestartet.
  • Die Weboberfläche von AdGuardHome wird auf Port 3000 gestartet.

Nun ruft man auf einem Client im Browser der Wahl über die URL <IP des eisfair-Servers:3000> die Weboberfläche von AdGuardHome auf und wird in 5 Schritten durch die Konfiguration geführt. Hier bei sind zu definieren:

  • Port, über den die Weboberfläche erreicht werden kann und nicht schon von einem anderen Dienst belegt ist. Port 80 kann nur verwendet werden, wenn auf dem System kein anderer Webserver läuft.
  • Port, über den der DNS-Server angesprochen werden kann. Üblicherweise nutzt man hier Port 53, da viele DNS-Clients nur diesen nutzen können. Es darf dann natürlich auf diesem Port kein weiterer DNS-Server wie z. B. bind9 laufen.
  • Name und Passwort des AdGuardHome-Administrators.

Nach Abschluss dieser Erstkonfiguration startet sich AdGuardHome auf den konfigurierten Ports neu, so dass nun die Weboberfläche mit dem konfigurierten Port z. B. <IP des eisfair-Servers:80> für weitere Konfigurationen aufzurufen ist, insbesondere sind zunächst noch DNS-Forwarder auf der Seite „Einstellungen|DNS-Einstellungen“ festzulegen sind, z. B. (mit # beginnende Zeilen sind Kommentarzeilen):

tls://dns.digitale-gesellschaft.ch
tls://dns3.digitalcourage.de
# https://dns3.digitalcourage.de/dns-query
# QUAD9
# Same as dns9
# https://dns.quad9.net/dns-query
tls://dns.quad9.net
# Secured
# https://dns9.quad9.net/dns-query
tls://dns9.quad9.net
# Unsecured
# https://dns10.quad9.net/dns-query
tls://dns10.quad9.net
# Secured with ECS
# https://dns11.quad9.net/dns-query
tls://dns11.quad9.net

Damit AdGuardHome lokale Adressen auflösen kann, kann man den DNS-Server des Routers zusätzlich als DNS-Forwarder eintragen, hier bei Verwendung einer Fritzbox:

# DNS in local network
[//]192.168.1.1:53
[/fritz.box/]192.168.1.1:53

Hierbei bedeutet, dass nur DNS-Anfragen folgender Domains an den Router weitergereicht werden, die folgenden Regeln genügen:

  • [//] : reine Rechnernamen, also keine FQDN, z. B. meinhandy, aber nicht meinhandy.fritz.box
  • [/fritz.box/] : FQDNs der Gestalt *.fritz.box also z. B. meinhandy.fritz.box

Da AdGuardHome die Hostsdatei /etc/hosts als erste Quelle auswertet, kann man die lokalen Clients auch in dieser definieren. Da die hosts-Datei jedoch vom eisfair-System verwaltet wird, macht eine direkte manuelle Ergänzung in dieser Datei keinen Sinn, hierzu ist das eisfair-Paket addhost zu installieren und konfigurieren.

Auf den Seiten „Einstellungen“ und „Filter“ der Weboberfläche kann man nun den AdGuardHome weiter konfigurieren.

Deinstallation des AdGuardHome-Servers

Zunächst ist der AdGuardHome-Server mit

/opt/AdGuardHome/AdGuardHome -s uninstall

außer Betrieb genommen, womit folgende Schritte vorgenommen werden:

  • Der AdGuardHome-Service wird gestoppt und disabled.
  • Das SystemD-Unitfile /etc/systemd/system/AdGuardHome.service wird gelöscht.
  • Es wird ein daemon-reload von SystemD durchgeführt.

Steuerung des AdGuardHome-Servers

Mit folgenden Befehlen kann der AdGuardHome-Server gesteuert werden:

BefehlBefehlsalternativeBefehlsalternativeBeschreibung
/opt/AdGuardHome/AdGuardHome -s installErzeugt die AdGuardHome-SystemD-Unit, enabled den AdGuardHome-Server,
führt ein daemon-reload von SystemD aus und startet den AdGuardHome-Server
/opt/AdGuardHome/AdGuardHome -s uninstallStoppt AdGuardHome-Server, disabled den AdGuardHome-Server,
löscht die AdGuardHome-SystemD-Unit und führt ein daemon-reload von SystemD aus
/opt/AdGuardHome/AdGuardHome -s startservice start AdGuardHomesystemctl start AdGuardHomeStartet den AdGuardHome-Server
/opt/AdGuardHome/AdGuardHome -s stopservice stop AdGuardHomesystemctl stop AdGuardHomeStoppt den AdGuardHome-Server
/opt/AdGuardHome/AdGuardHome -s restartservice restart AdGuardHomesystemctl restart AdGuardHomeRestartet den AdGuardHome-Server
/opt/AdGuardHome/AdGuardHome -s reloadservice reload AdGuardHomesystemctl reload AdGuardHomeLiest die Konfiguration neu ein (z. B. nach manuellen Änderungen an der Konfigurationsdatei)
/opt/AdGuardHome/AdGuardHome -s statusservice status AdGuardHomesystemctl status AdGuardHomeGibt den Status des AvGuardHome-Servers aus

Update von AdGuardHome

AdGuardHome meldet auf seiner Weboberfläche, wenn ein Update existiert, welches dann auch per Klick durchgeführt werden kann.

Überlegungen zur Einbindung von AdGuardHome in das lokale Netzwerk

Üblicherweise stellt ja ein lokaler Router z. B. eine Fritzbox auch den DNS-Server zur Verfügung. Anfragen die er selbst nicht beantworten kann, z. B. für lokale Rechner und netzwerkfähige Geräte, leitet dieser dann wiederum an einen externen DNS-Forwarder weiter. Lokale Rechner und Geräte, die ihre IP per DHCP vom Router erhalten, teilt der Router dabei auch die Adresse eines DNS-Servers mit, in der Regel dann natürlich seine eigene Adresse.

Trägt man den lokalen AdGuardHome-Server als DNS-Forwarder im Router ein, kann die Konfiguration aller Netzwerk-Clients unangetastet bleiben, diese verwenden auf diesem Weg automatisch dann auch den AdGuardHome-Server. Wichtig hierbei ist, dass in den Upstream-DNS-Servern von AdGuardHome der Router nicht mehr eingetragen werden darf, um eine Abfrageschleife zu verhindern. Bei einer Fritzbox würden in dieser Konfigurationsvariante auch die Clients des Gastnetzes den AdGuardHome-Serber nutzen.

Der Router kann auch so konfiguriert werden, dass dieser die IP des AdGuardHome-Server statt der eigenen als DNS-Server den Clients übermittelt. Bei einer Fritzbox würde das aber nicht für das Gastnetz gelten, dem weiterhin der Router als DNS-Server mitgeteilt wird. Clients mit manueller Netzwerkkonfiguration müssen hierbei umkonfiguriert werden, sollen sie zukünftig AdGuardHome als DNS-Server nutzen. Die Einstellungsdaten für WireGuard-Tunnel einer Firtzbox enthalten ebenso die IP der Fritzbox als DNS-Server, jedoch kann in den WireGuard-Clients dies manuell angepasst werden und die IP-Adresse des AdGuardHome-Servers eingetragen werden, oder sogar beide IPs, um im Falle des Ausfalls des AdGuardHome-Servers ein Fallback zu haben.

Es ist auch möglich, alle Clients manuell den zu nutzenden DNS-Server zuzuweisen, auch dann, wenn sie ihre IP per DHCP vom Router bekommen. Da in der Regel zwei verschiedene DNS-Server in den Netzwerkeinstellungen von Betriebssystemen konfigurierbar sind, könnte man den AdGuardHome-Server als ersten und den Router als zweiten DNS-Server eintragen, womit bei Ausfall des AdGuardHome-Servers ein Fallback zur Verfügung steht.

Die Vorschläge der beiden letzten Absätze erfordern die Eintragung des Routers zur Auflösung lokaler Adressen, wie sie im Abschnitt „Konfiguration von AdGuardHome“ vorgeschlagen ist.

Weitere empfehlenswerte Lektüre: