1 Punkte von GN⁺ 2024-02-09 | 1 Kommentare | Auf WhatsApp teilen
  • AdGuard Home ist ein kostenloser Open-Source-DNS-Server, der nach der Installation für alle Geräte im Heimnetzwerk gilt und Werbung sowie Tracker ohne clientseitige Software blockiert
  • Es funktioniert, indem Tracking-Domains per DNS sinkholing in ein „black hole“ umgeleitet werden, sodass Geräte keine Verbindung zu diesen Servern herstellen können; es teilt viel Code mit dem öffentlichen AdGuard DNS-Server
  • Beim Betrieb auf dem eigenen Server kann man im Vergleich zu öffentlichem DNS selbst auswählen, was blockiert oder erlaubt wird, die Netzwerkaktivität überwachen und benutzerdefinierte Filterregeln hinzufügen
  • Ähnlich wie Pi-Hole unterstützt es das Blockieren von Werbung und Trackern sowie die Anpassung von Blocklisten, aber AdGuard Home bietet standardmäßig auch verschlüsselte DNS-Upstreams, den Betrieb als DoH-/DoT-Server, das Blockieren von Phishing- und Malware-Domains, Kinderschutz und erzwungenes Safe Search
  • Blockierung auf DNS-Ebene kann keine Werbung blockieren, die dieselbe Domain wie der Inhalt verwendet, etwa YouTube- oder Twitch-Werbung oder gesponserte Beiträge auf Facebook, Twitter und Instagram; auch die geplante Unterstützung eines Content-Blocking-Proxys wird nicht alle Fälle lösen

Rolle und Funktionsweise von AdGuard Home

  • AdGuard Home ist ein DNS-Server zum netzwerkweiten Blockieren von Werbung und Trackern, der sich als Zentrum für den Schutz der Privatsphäre von Nutzern und Geräten versteht
  • Nach der Installation deckt es alle Geräte im Heimnetzwerk ab, ohne dass auf jedem Gerät separate Client-Software installiert werden muss
  • Es arbeitet als DNS-Server und leitet Tracking-Domains in ein „black hole“ um, sodass Geräte keine Verbindung zu diesen Servern herstellen können
  • Es basiert auf der Software des öffentlichen Servers AdGuard DNS, und beide Produkte teilen viel Code

Installation und Integration

  • Unter Linux, Unix, macOS, FreeBSD und OpenBSD kann das automatische Installationsskript mit curl, wget oder fetch ausgeführt werden
    • -c <channel>: angegebenen Kanal verwenden
    • -r: AdGuard Home neu installieren
    • -u: AdGuard Home entfernen
    • -v: ausführliche Ausgabe
    • -r und -u können nicht gleichzeitig verwendet werden
  • Manuelle Installation und Gerätekonfiguration sind in der Dokumentation Getting Started beschrieben
  • Das offizielle Docker-Image wird auf Docker Hub bereitgestellt
  • Linux-Nutzer können es über den Snap Store installieren
  • Für Integrationen kann die REST API genutzt werden; außerdem gibt es einen Python client

Unterschiede zum öffentlichen AdGuard DNS

  • Wer einen eigenen AdGuard Home-Server betreibt, hat mehr Kontrolle als bei der Nutzung öffentlicher DNS-Server
  • Nutzer können selbst festlegen, was der Server blockieren oder erlauben soll
  • Netzwerkaktivitäten können überwacht werden
  • Benutzerdefinierte Filterregeln können hinzugefügt werden
  • Da der Server dem Nutzer selbst gehört, liegt die Kontrolle beim Nutzer

Vergleich mit Pi-Hole und klassischen Werbeblockern

  • Sowohl AdGuard Home als auch Pi-Hole blockieren Werbung und Tracker per DNS sinkholing und erlauben die Anpassung dessen, was blockiert wird
  • AdGuard Home zielt darauf ab, viele Funktionen standardmäßig bereitzustellen, ohne zusätzliche Softwareinstallation oder manuelle Konfiguration
  • Laut Vergleichstabelle in der README bietet AdGuard Home folgende Funktionen
    • Blockieren von Werbung und Trackern
    • Anpassung von Blocklisten
    • integrierter DHCP-Server
    • HTTPS für die Admin-Oberfläche
    • verschlüsselte DNS-Upstreams via DNS-over-HTTPS, DNS-over-TLS und DNSCrypt
    • plattformübergreifender Betrieb
    • Betrieb als DNS-over-HTTPS- oder DNS-over-TLS-Server
    • Blockieren von Phishing- und Malware-Domains
    • Kinderschutz zum Blockieren von Domains für Erwachsene
    • erzwungenes Safe Search für Suchmaschinen
    • gerätespezifische Einstellungen
    • Zugriffssteuerung zur Auswahl von AGH-DNS-Nutzern
    • Betrieb ohne root-Rechte
  • Im Vergleich zu klassischen Werbeblockern kann DNS sinkholing einen großen Teil der Werbung blockieren, erreicht aber nicht deren Flexibilität und Leistungsfähigkeit
  • DNS-basierte Blocker können hilfreich sein, um Werbe-, Tracking- und Analyseanfragen auf Smart-TVs, Smart Speakern und IoT-Geräten zu blockieren, auf denen sich klassische Werbeblocker nicht installieren lassen

Bekannte Einschränkungen und zukünftige Richtung

  • Blocker auf DNS-Ebene können die folgenden Beispiele nicht blockieren
    • YouTube- und Twitch-Werbung
    • gesponserte Beiträge auf Facebook, Twitter und Instagram
  • Werbung, die sich dieselbe Domain mit Inhalten teilt, kann auf DNS-Ebene nicht blockiert werden
  • Dieses Problem lässt sich nicht allein mit DNS lösen; dafür wäre ein Content-Blocking-Proxy wie in eigenständigen AdGuard-Anwendungen nötig
  • AdGuard Home soll künftig Unterstützung für Content-Blocking-Proxy-Funktionen erhalten
  • Auch dann kann es Fälle geben, in denen das nicht ausreicht oder eine komplexe Konfiguration erforderlich bleibt

Source-Build und Entwicklung

  • Zur Vorbereitung der Entwicklungsumgebung wird make init ausgeführt
  • Für den Build werden folgende Komponenten benötigt
    • Go v1.25 oder höher
    • Node.js v24.10.0 oder höher
    • npm v10.8 oder höher
  • Für einen Standard-Build wird das Repository geklont und anschließend make ausgeführt
  • Das nicht standardmäßige Flag -j wird derzeit nicht unterstützt; make -j 4 oder eine Konfiguration mit -j 4 in MAKEFLAGS kann den Build beschädigen
    • Falls nötig, kann dies mit make -j 1 überschrieben werden
  • Cross-Builds für von Go unterstützte OS/ARCH-Ziele sind möglich; dazu werden GOOS und GOARCH beim Ausführen von make angegeben
  • Für die Vorbereitung eines Release-Builds wird snapcraft benötigt; verwendet wird make build-release CHANNEL='...' VERSION='...'
  • Ein lokales Docker-Image wird mit make build-docker gebaut, das offizielle Image mit Docker Buildx
  • Beim Frontend-Debugging wird im Verzeichnis client ein Development-Build im Watch-Modus ausgeführt, und der Binary AdGuardHome wird das Flag --local-frontend übergeben, damit statt der eingebetteten Frontend-Dateien die Dateien aus dem Verzeichnis ./build/ verwendet werden
  • Für E2E-Frontend-Tests wird Playwright verwendet; die Tests liegen in tests/e2e
    • npm run test:e2e: alle Tests headless ausführen
    • npm run test:e2e:interactive: interaktive Tests
    • npm run test:e2e:debug: Debug-Modus
    • npm run test:e2e:codegen: neuen Testcode erzeugen
    • Playwright lädt und installiert eigene Browser-Binaries, die sich von den im System installierten Browsern unterscheiden können

Beiträge, instabile Kanäle und externe Projekte

  • Mitwirkende können das Repository forken, Änderungen vornehmen und anschließend einen Pull Request senden; dabei sollen die code guidelines befolgt werden
  • Es ist nicht nötig, gleichzeitig zum UI und zum Backend beizutragen; idealerweise kommt zuerst eine Backend-Implementierung mit Einstellungen, API und Funktionalität, und das UI kann später in einem anderen Pull Request umgesetzt werden
  • Es gibt zwei Kanäle für instabile Versionen
    • beta: relativ stabile Beta-Version, die üblicherweise alle zwei Wochen oder häufiger veröffentlicht wird
    • edge: neueste Version aus dem Entwicklungs-Branch, in den täglich neue Updates gepusht werden
  • Instabile Versionen können über die beta- und edge-Kanäle im Snap Store, über die beta- und edge-Tags auf Docker Hub, über das automatische Installationsskript oder als Standalone-Build aus dem Wiki installiert werden
  • Es gibt verwandte Projekte von Drittentwicklern und Fans, die nicht mit AdGuard verbunden sind

Privatsphäre und verwendete Technologien

  • Die zentrale Idee von AdGuard Home ist, dass Nutzer die Kontrolle über ihre eigenen Daten haben sollten
  • AdGuard Home sammelt keine Nutzungsstatistiken und verwendet keine Webdienste, sofern der Nutzer dies nicht konfiguriert
  • Die vollständige privacy policy enthält theoretisch alle Punkte, die AdGuard Home senden könnte
  • Die wichtigsten technischen Grundlagen sind das Go- und Node.js-Ökosystem
    • Als Go-Bibliotheken werden gcache, miekg's dns, go-yaml, service, dnsproxy und urlfilter verwendet
    • Auf der Node.js-Seite werden React.js, Tabler und verschiedene Node.js-Pakete verwendet
    • Außerdem werden Daten von whotracks.me genutzt
  • AdGuard Home verwendet das zuvor erwähnte CoreDNS nicht mehr

1 Kommentare

 
GN⁺ 2024-02-09
Hacker-News-Kommentare
  • Ich habe einige Jahre lang im Heimnetzwerk das Konkurrenzprojekt Pi-hole[0] betrieben und bin dann auf NextDNS[1] gestoßen.
    In puncto Performance habe ich zwar den Vorteil verloren, dass Anfragen das Haus nicht verlassen, aber die Portabilität, dass alle Geräte sowohl zu Hause als auch unterwegs nutzbar sind, und die gesparte Zeit wogen schwerer.
    Pi-hole funktionierte zu 90 % gut, aber wenn es ausfiel, kostete die Reparatur Zeit; für 20 $ pro Jahr war es schwer, mit NextDNS per Eigenbetrieb zu konkurrieren.
    Das soll keine Werbung für NextDNS sein, und ich finde, solche Projekte müssen unbedingt existieren, aber NextDNS ist ein wirklich einfaches SaaS-Tool mit sehr gutem Preis-Leistungs-Verhältnis.
    0 - https://pi-hole.net/
    1 - https://nextdns.io

    • Ich weiß nicht, welche Probleme du hattest, dass Pi-hole ganze 10 % der Zeit ausfiel, aber so eine Übertreibung klingt wie Werbung.
      99,9 % der SD-Karten-Korruptionen werden durch zu schwache Netzteile verursacht; wenn du keine Lust hast, ein passendes 2,5–3-A-USB-Netzteil zu suchen, kauf einfach das offizielle Raspberry-Pi-Netzteil.
      Für 20 $ im Jahr kannst du dir jedes Jahr einen RPi Zero 2W und eine SD-Karte als Reserve kaufen und hast noch Geld für ein Sheetz-Sandwich zum Feiern übrig.
      Die Kombination aus Pi-hole + WireGuard + einmaligem Kauf eines 15-Dollar-RPi-Zero ist meiner Meinung nach schwer zu schlagen.
    • Ich bin neugierig, welche Probleme du mit Pi-hole hattest.
      Meine Instanz lief jahrelang ohne ein einziges Problem, und vor etwa einem Jahr bin ich auf AdGuard Home umgestiegen, weil ich es auf einer OPNSense-Box betreiben wollte.
      Auf den Geräten habe ich ein automatisches WireGuard-VPN eingerichtet, sodass sie sich per VPN mit meinem Heimnetz verbinden, wenn sie nicht mit meiner SSID verbunden sind; dadurch funktioniert lokales DNS auch remote.
    • Ich mag NextDNS, aber es hat ein ziemlich großes Problem: Wenn es auf dem iPhone aktiviert ist, kommt es mit Captive Portals nicht zurecht.
      Man muss daran denken, es auszuschalten, wenn man sich etwa mit Flugzeug-WLAN verbindet; deshalb würde ich es nichttechnischen Freunden nur schwer empfehlen.
    • In meinem Fall lief Pi-hole so lange so gut, dass ich sogar das Login vergessen habe; wenn ich mein Heimnetz demnächst neu aufsetze, werde ich die Optionen aber erneut bewerten.
      Inzwischen scheint es etwa drei Kandidaten zu geben.
    • NextDNS habe ich nicht ausprobiert, Pi-hole schon, und derzeit betreibe ich AdGuard Home.
      Wenn man 20 $ pro Jahr nur für DNS-Verschlüsselung und Blocking zahlt, lohnt es sich vielleicht, auch ein Upgrade auf Mullvad zu erwägen, das nicht nur DNS-Adblocking, sondern auch IP-Anonymität und Tunneling bietet.
  • Ich habe mir kürzlich Pi-hole angesehen und mich dann für AdGuard Home entschieden.
    Auf den ersten Blick war die UI besser und es wirkte insgesamt runder; für ein so geschliffenes Tool bietet es überraschend viel Customizing, etwa das Weiterleiten lokaler privater Domain-Abfragen an internes DNS.
    Ich bin mir nicht sicher, warum AdGuard das kostenlos anbietet, und sollte dem vielleicht nachgehen, aber aktuell erschien es mir als vergleichsweise risikoarme Wahl.
    Man kann gar nicht genug betonen, wie viel angenehmer die Nutzung von Dingen wie der NYTimes-App wird, wenn die nervigen Anzeigen verschwinden.

    • Es ist wirklich großartig.
      Die Funktion für Split-DNS enthält alle Optionen, die man sich vorstellen kann.
      Ich dachte, ich bräuchte dahinter einen zweiten DNS-Server, konnte aber alle benötigten Regeln direkt in AdGuard Home hinterlegen.
      DoT- und DoH-Upstreams werden ebenfalls unterstützt, was bei vielen Heimroutern immer noch nicht üblich ist.
      Doku: https://github.com/AdguardTeam/AdGuardHome/wiki/Configuratio...
    • Über den kostenlosen Teil habe ich mich auch gewundert.
      Vielleicht setzen sie ihren eigenen DNS-Server als Standard-Upstream und hoffen, dass viele Leute bei den Defaults bleiben.
      DNS ist eine der besten Technologien für Data Mining und den Verkauf von Daten; meiner Meinung nach ist das auch der Grund, warum es leicht zu merkende DNS-Server wie 8.8.8.8 oder 1.1.1.1 gibt.
      Google und Cloudflare machen das sicher nicht nur aus reiner Wohltätigkeit.
      Allerdings behauptet AdGuard, keine Kundendaten zu verkaufen.
    • Sie könnten zunächst die Nutzerbasis ausbauen und, sobald sie genügend Nutzer haben, auf ein Lizenzmodell umstellen.
    • Für mich sieht der Ablauf so aus:
      Man liest die Doku, installiert es, bringt es gut zum Laufen und prahlt dann bei Freunden damit, dass es im Heimnetz keine nervigen Anzeigen gibt.
      Dann sagen die Freunde: „Installierst du mir das auch?“
      Installieren kann man es ihnen, aber die Wartung kann man nicht auch noch übernehmen; also sagt man: „Statt dieser Komplexität gibt es für 29 $ pro Jahr für die ganze Familie eine einfache App-basierte Einrichtung, die sofort funktioniert.“
      An diesem Abend laden fünf Freunde den Dienst herunter und bezahlen dafür.
      Ich denke, die Philosophie heutiger Tech-Startups ist ähnlich: ein Open-Source-Produkt haben und darauf ein kommerzielles Geschäft aufbauen.
    • Pi-hole unterstützt ebenfalls Conditional Forwarding.
  • AdGuard ist ein russisches Unternehmen mit russischen Engineers; viele Entwickler und Mitarbeiter arbeiten in Moskau, registriert ist es auf Zypern.
    Keine gute Kombination, aus Sicherheitsgründen würde ich es meiden.

    • Das ist Open-Source-Software.
      MacPaw stuft in Russland entwickelte Software deshalb als Risiko ein, weil die Regierung jederzeit auf Daten zugreifen kann; hier handelt es sich aber um selbst gehostete Open Source.
      Der FSB kann nicht einfach per beliebigem Gerichtsbeschluss auf deinen lokalen Server zugreifen.
      Deshalb wirkt das für mich eher wie Russophobie als wie eine berechtigte Sorge, und ich finde es umso unangebrachter, weil ich aus erster Hand weiß, wie sehr russische Entwickler unter der Dummheit ihrer Regierung leiden.
    • Da es Open Source ist, kann man es selbst prüfen.
    • MacBooks werden auch in China hergestellt.
  • py-hole könnte ebenfalls interessant sein.
    Es besteht nur aus einem Python-Skript und dnsmasq-Konfiguration, läuft auf OpenWrt, ist kostenlos und die CPU-Auslastung liegt praktisch bei 0.
    https://github.com/time4tea-net/py-hole

  • Ein weiterer guter Punkt an AdGuard ist, dass es als Home-Assistant-Add-on verfügbar ist.
    Weil es in den Rest von HA integriert ist, kann man zum Beispiel im Dashboard einen Schalter platzieren, um das Blocking ein- und auszuschalten.

    • Mit NextDNS geht das auch; ich habe es gerade eingerichtet.
  • AdGuard Home ist großartig
    Ich habe eine Zeit lang Pi-hole genutzt, hatte aber ziemlich häufig kleinere Probleme
    Nichts Ernstes, aber solche Tools sind erst dann wirklich nützlich, wenn sie einfach funktionieren
    In meinem Pi-Setup läuft es problemlos mit docker-compose[1], und mit einem schönen Container namens adguardhome-sync[2] betreibe ich einen zweiten Pi als Backup und synchronisiere die Konfiguration
    Jetzt sehe ich im Netzwerk keine Werbung mehr, und es ist auch ziemlich interessant zu sehen, welche Geräte wie viele Tracking-/Werbeanfragen senden
    1 - https://thesmarthomejourney.com/2021/05/24/adguard-pihole-dn...
    2 - https://thesmarthomejourney.com/2023/02/12/adguardhome-sync-...

    • Der echte Aha-Moment kommt, wenn man anfängt, DNS-53-Anfragen auf den eigenen DNS-Server umzuleiten und DoT/DoQ/DoH zu blockieren
      Unzählige Geräte und Apps versuchen, für Tracking und Werbe-Targeting direkt zu fest einprogrammierten DNS-Servern hinauszugehen
  • Ich weiß nicht, ob hier jemand Technitium DNS nutzt
    Es ist Open Source, kostenlos und läuft auch auf minimaler Hardware
    Ich betreibe es auf einem Orange Pi 3 LTS
    https://technitium.com/dns/

    • Sieht gut aus
      Dort steht: „Technitium DNS Server is an open source authoritative as well as recursive DNS server“; ich frage mich, ob Pi-hole oder AdGuard ebenfalls rekursive DNS-Server sind oder nur einfache Blocker
      Ich nutze Pi-hole schon lange und versuche gerade zu verstehen, welchen Vorteil das hier hat
    • Man kann Werbeblocklisten einbinden, bekommt also robustes DNS plus Werbeblockierung, und YouTube hängt sich nicht mehr wegen irgendwelcher zufälliger DNS-Probleme auf
      Mit ein wenig Konfiguration ist das kostenlos möglich
    • Ich lasse es auf einem Pi 4 laufen und bin zufrieden, weil Einrichtung und Nutzung einfach sind
      AdGuard kannte ich nicht; es sieht zwar gut aus, aber ich habe keinen besonderen Drang, es auszuprobieren
    • Ich nutze es seit Jahren und mag es
      Da es .NET-basiert ist, ist es auch plattformübergreifend
      Wenn man diesen Weg bevorzugt, gibt es auch ein Docker-Image
    • Ich habe mich dagegen entschieden, weil es in C#/.NET geschrieben und relativ neu ist, und bin zu Unbound gegangen
  • Es gibt ein paar eher positive Kommentare zu NextDNS, aber ich hinterlasse das separat, weil ich darüber nachdenke, von NextDNS wegzuwechseln
    Der Grund ist, dass ich derzeit Mac/Safari nutze und die Funktion „IP-Adresse vor Trackern verbergen“ aktivieren möchte; wenn ich das tue, werden jedoch Website-Anzeigen sichtbar, die NextDNS sonst blockiert hat
    Deshalb muss ich diese Option deaktivieren und kann die Apple-Funktion nicht nutzen
    Insgesamt scheinen die beiden nicht zusammen nutzbar zu sein, und auf der NextDNS-Hilfeseite gibt es dazu ebenfalls ein entsprechendes Issue
    https://help.nextdns.io/t/q6yq4xy/nextdns-stops-working-prop...
    Ich frage mich, ob jemand weiß, ob das auch bei AdGuard oder Pi-hole ein bekanntes Problem ist

    • Falls du iCloud Private Relay meinst: Bei DNS-basierten Werbeblockern ist das erwartetes Verhalten
      Wenn das Relay aktiviert ist, wird die Verbindung geproxyt und nutzt nicht den DNS-Server des lokalen Netzwerks
      Das gilt gleichermaßen für Pi-hole, NextDNS und AdGuard
    • Man verwendet ein Produkt, das Werbung und Tracker blockiert, und umgeht das dann mit einem anderen Produkt, um auf Werbung und Tracker zuzugreifen, nur eben über einen Dritten
      Mir ist nicht klar, was der Zweck von Letzterem sein soll
  • Es scheint eine feste Zeitspanne zu geben, die HN durchhält, ohne dass ein Artikel über Pi-hole oder AdGuard Home auftaucht

    • Ich habe mir alle sechs Monate einen wiederkehrenden Kalendereintrag gesetzt: HN: Pi-hole / AdGuard? ;-)
  • Gut
    Ähnlich dazu: Wenn man im Netzwerk pfSense betreibt, lohnt sich auch ein Blick auf pfBlockerNG. Ich persönlich mag es ziemlich: https://docs.netgate.com/pfsense/en/latest/packages/pfblocke...