Zum Inhalt springen

AdGuard Home

Der DNS-Filter selbst: ob der Schutz an ist, ob sein DNS-Server läuft, was er beantwortet und blockiert hat, ob seine Filterlisten noch aktualisieren, ob seine Upstream-Server antworten, und ob eine neuere Version verfügbar ist.

Ein defekter DNS-Filter sieht nicht defekt aus. Seiten öffnen sich weiterhin, mit ihrer Werbung. Die üblichen Ausfälle sind leise: ein “für eine Stunde” aus der Telefon-App pausierter Schutz, der nie wieder eingeschaltet wurde, Filterlisten, die seit Wochen nicht mehr herunterladen, ein DNS-over-HTTPS-Upstream-Server, der nicht mehr antwortet, sodass jede Abfrage auf den nächsten wartet.

DumbMonit liest AdGuard Homes REST-API (/control) mit HTTP-Basic- Authentifizierung. Getestet gegen AdGuard Home v0.107.79 (und den Versionscheck von v0.107.78).

Alle Metriken haben das Präfix dumbmonit_adguard_. Abfrage- und Blockierzahlen sind Summen über AdGuard Homes Statistikfenster (24 Stunden, sofern nicht in Settings → General settings geändert), keine Zähler: Sie steigen und fallen, während das Fenster weiterrutscht, und werden so gespeichert, wie sie sind.

MetrikWasLabels
running1, wenn der DNS-Server läuft
protection_enabled1, wenn der Schutz an ist
protection_paused_secondsverbleibende Zeit, bis ein pausierter Schutz wieder an ist, 0 ohne Pause
version_infoWert 1version
dns_queriesAbfragen im Statistikfenster
blocked_filteringvon Filterlisten und benutzerdefinierten Regeln blockierte Abfragen
replaced_safebrowsing, replaced_parental, replaced_safesearchdurch Browsing-Sicherheit, Kindersicherung, Safe-Search ersetzte Antworten
blocked_percentAnteil blockierter Abfragen (Filter, Browsing-Sicherheit, Kindersicherung); fehlt ohne jede Abfrage
avg_processing_secondsdurchschnittliche Antwortzeit
stats_window_seconds, stats_enableddas Statistikfenster und ob Statistiken geführt werden (0.107.30 und später)
upstream_responses, upstream_avg_secondsAntworten und durchschnittliche Antwortzeit pro Upstream im Fenster, wie das Dashboard sie unter “Top upstreams” zeigt (höchstens 8)upstream
upstream_up1, wenn AdGuard Homes eigener Test dieses Upstreams gelingt; 0, wenn er fehlschlägt oder innerhalb von 4 Sekunden keine Antwort gibt (höchstens 8). Das Label ist der Upstream, wie AdGuard Home ihn in seinen Statistiken schreibt (https://dns10.quad9.net:443/dns-query, 192.0.2.1:53); für einen stillen Upstream die konfigurierte Zeile.upstream
filtering_enabled1, wenn Filterung in Settings → General settings an ist
filters, filters_enabledkonfigurierte Blocklisten, und aktivierte
filter_rulesaus den aktivierten Listen geladene Regeln
filter_rules_count, filter_update_age_secondspro aktivierter Liste (höchstens 32)filter
filter_oldest_update_age_secondsAlter des ältesten Updates unter den aktivierten Listen
filters_never_updatedaktivierte Listen, die nie herunterladen wurden
filter_update_interval_hourswie oft Listen aktualisiert werden; 0 schaltet Updates aus
update_check_enabled0, wenn AdGuard Home mit ausgeschaltetem Versionscheck läuft
update_available1, wenn der letzte Versionscheck eine neuere Version meldete; fehlt, wenn der Check aus istlatest
scrape_errorsfehlgeschlagene sekundäre Aufrufe bei der letzten Prüfung

Der Versionscheck ist im offiziellen Docker-Image und in den meisten Distributionspaketen aus, die AdGuard Home selbst aktualisieren: Dort wird update_available nie geschrieben, und seine Regel bleibt still.

Upstream-Statistiken zählen nur Antworten: Ein Upstream, der aufhört zu antworten, hinterlässt dort keine Spur. Deshalb lässt DumbMonit AdGuard Home bei jeder Prüfung jeden Upstream testen, derselbe Test wie die Schaltfläche “Test upstreams” in Settings → DNS settings: eine DNS-Abfrage von AdGuard Home an diesen Upstream. Ein toter Upstream würde AdGuard Home doppelt so lange wie das Upstream-Timeout (standardmäßig 20 Sekunden) warten lassen; DumbMonit hört nach 4 Sekunden auf zu warten und meldet ihn als down. Entfernen Sie das Häkchen bei “Test upstream servers”, um dies auszuschalten.

Die geltenden eingebauten Regeln: AdGuard Home protection off, AdGuard Home DNS not running, AdGuard Home upstream failing, AdGuard Home filter lists stale, AdGuard Home update available, plus Monitor unreachable.

Das Panel über den Diagrammen liest, was die Abfrage gespeichert hat; das Öffnen der Seite verbindet sich nie mit AdGuard Home. Es sagt, ob Schutz und DNS-Server an sind (und wann eine Pause endet), dann die Abfragen, Blockierungen und Antwortzeit über das Statistikfenster, die Upstream-Server mit ihrem Testergebnis und ihrer Antwortzeit, und die Filterlisten mit ihren Regeln und dem letzten Update.

Einen Benutzer für DumbMonit zu AdGuard Home hinzufügen

Abschnitt betitelt „Einen Benutzer für DumbMonit zu AdGuard Home hinzufügen“
  1. AdGuard Home hat kein nur-lesendes Konto: Jeder in AdGuardHome.yaml aufgeführte Benutzer kann jede Einstellung ändern. Geben Sie DumbMonit einen eigenen Benutzer, damit er entfernt werden kann, ohne Ihren anzutasten. Erzeugen Sie zuerst einen bcrypt-Hash eines langen Zufallspassworts (htpasswd kommt mit dem Paket apache2-utils oder httpd-tools):

    htpasswd -B -C 10 -n -b dumbmonit 'LONG-RANDOM-PASSWORD'
  2. Stoppen Sie AdGuard Home, öffnen Sie AdGuardHome.yaml (neben dem AdGuardHome-Binary, oder im conf-Ordner des Docker-Volumes) und fügen Sie diese Zeile unter “users:” hinzu, auf derselben Einrückungsebene wie die bereits vorhandene ”- name:“-Zeile. Ersetzen Sie HASH mit dem, was htpasswd nach “dumbmonit:” ausgegeben hat. Starten Sie AdGuard Home wieder.

    - { name: dumbmonit, password: "HASH" }

    Der Abschnitt liest sich dann:

    users:
    - { name: dumbmonit, password: "$2y$10$…" }
    - name: yourname
    password: $2a$10$…
  3. Prüfen Sie vom DumbMonit-Host aus, dass der Benutzer akzeptiert wird:

    curl -u dumbmonit http://adguard.lan/control/status
  4. Geben Sie in DumbMonit die Adresse der AdGuard-Home-Web-Oberfläche ein, zum Beispiel “adguard.lan” (Port 80) oder “http://adguard.lan:3000”, dann den Benutzer dumbmonit und sein Passwort.

  5. DumbMonit liest nur den Status, die Statistiken, die Filterlisten und den letzten Versionscheck. Es liest nie das Abfrageprotokoll. Bei jeder Prüfung lässt es AdGuard Home jeden Upstream-DNS-Server testen, wie es die Schaltfläche “Test upstreams” tut; entfernen Sie unten das Häkchen bei “Test upstream servers”, um das zu stoppen.

AdGuard Home muss gestoppt sein, während Sie die Datei bearbeiten: Es schreibt AdGuardHome.yaml bei jeder Einstellungsänderung neu und würde eine während des Laufens hinzugefügte Zeile verwerfen.

CredentialFelder
Benutzername / PasswortDer in AdGuardHome.yaml hinzugefügte dedizierte Benutzer, als HTTP-Basic-Authentifizierung gesendet.
Keine AuthentifizierungNur für ein AdGuard Home ganz ohne Benutzer in AdGuardHome.yaml.

Adresse: ein Hostname oder eine IP (adguard.lan), host:port, oder eine vollständige URL mit Pfadpräfix hinter einem Reverse Proxy (https://dns.lan/adguard); ein abschließendes /control wird ignoriert. Optionen: Protokoll (standardmäßig HTTP), Port (80), Zertifikatsprüfung, Anfrage-Timeout (5 s) und der Upstream-Test (ein).

AufrufWarum
GET /control/statusrunning, protection, version: der einzige Aufruf, dessen Fehlschlagen die Prüfung fehlschlagen lässt
GET /control/stats, GET /control/stats/configAbfragen, Blockierungen, Upstream-Antworten, Statistikfenster
GET /control/filtering/statusFilterlisten
POST /control/version.json mit {"recheck_now": false}das Ergebnis des letzten Versionschecks, wie die Web-Oberfläche es bei jedem Seitenaufruf liest; erzwingt nie einen neuen Check
GET /control/dns_info, dann POST /control/test_upstream_dns einmal pro Upstreamdie konfigurierten Upstreams und Bootstrap-Server, dann der Upstream-Test; ändert keine Einstellung