Warden ist der DNS-Resolver von Purge.cc: er holt die Blocklisten nach Hause und hält jedes Gerät verschlüsselt, privat und unter deiner Kontrolle.
Ein DNS-Resolver für Zuhause oder die Firma: er beantwortet jede Anfrage im eigenen Netz und hält Tracker und Bedrohungen auf, bevor sie sich überhaupt auflösen.
Funktionsweise ansehen →Geschrieben in Rust, ohne externe Runtime-Abhängigkeiten — eine statische Binärdatei, abgestimmt auf schnelles Auflösen, selbst auf Hardware so klein wie ein Pi.
Aufbau ansehen →Sicherheit ist die Designvorgabe, keine Funktion: verschlüsselte Upstreams, geprüfte Antworten und ein Resolver, der im Fehlerfall schließt, statt durchzusickern.
Funktionen ansehen →Veröffentlicht unter AGPL-3.0 — frei zum Betreiben, Forken, Prüfen und Ändern, und jede gehostete Ableitung muss ebenfalls offen bleiben.
Code ansehen →Die Listen von Purge.cc kommen mit Warden — zum Einschalten. Nimm die, die du willst, füge jede Blockliste hinzu, der du schon vertraust, oder schreib die Regeln selbst.
Regeln ansehen →Die ganze Konfiguration steckt in einer TOML-Datei. Versioniere sie, vergleiche sie, spiele sie aus — kein versteckter Zustand, nichts, das du per Klick nachbauen müsstest.
Konfiguration ansehen →Ein Resolver, gebaut, um DNS sicher und effizient zu filtern — einfach genug für ein homelab auf einem Pi oder einer VM und bereit, den Verkehr einer Organisation in großem Maßstab zu säubern.
Warden für das Heimnetz. Läuft auf einem Raspberry Pi, einer VM oder einem NAS und schützt jedes Gerät am WLAN — keine Cloud, kein Konto, keine Gebühren.
Derselbe Resolver, in der Größe einer Organisation. Richtlinien pro Abteilung, Filterung ohne aufgezeichnete Nachverfolgung der Nutzer, und Logs für Debug und Kontrolle — auf Hardware, die du selbst betreibst.
Keine Web-App zum Öffnen. Dashboard, Anfragenlog, Netzwerk, Filter — der ganze Resolver in einem Terminal, auch über SSH vom Router.
Das Dashboard am Anfang ist das ganze Netz auf einen Blick: Block-Rate, Anfragenvolumen und der Zustand des Resolvers. Zähler aktualisieren sich, sobald Anfragen eintreffen, damit du den Verkehr live im Blick hast.
Das Live-Log ist jede Anfrage von jedem Gerät, in dem Moment, in dem sie eintrifft. Isoliere einen Host, lies Typ und Ergebnis, und schreib von der Zeile selbst ein Allow oder ein Block — auf eine Liste, die du an ein Profil hängst.
Warden sieht sowieso jeden Client. Ordne einem Host einen Namen zu, damit du ihn erkennst, katalogisiere ihn nach Besitzer, Typ und Abteilung, und sieh, wie viel er spricht und wie viel davon blockiert wird.
Profile wählen die Listen. Hänge ein Profil an eine Gruppe von Geräten — oder an ein ganzes Subnetz — und entscheide dann, pro Profil, ob ein Feed eine Blockliste, eine Allowlist oder stumm ist.
Jede Schicht ist so gebaut, dass das Auflösen sicher bleibt — wie er blockt, wie er verschlüsselt, wie du konfigurierst und wie du die Kontrolle behältst.
Tracker verstecken sich hinter freundlichen Namen. Eine Liste, die du nicht geschrieben hast, kann versuchen, sich selbst freizuschalten. Warden geht die Kette entlang und packt in eine Sandbox, was er nicht selbst geschrieben hat.
CNAME-Kette verfolgen.
Warden geht die CNAME-Kette entlang — bis zu 16 Sprünge — und blockt den Tracker auch dann, wenn er sich hinter einem First-Party-Namen versteckt.
Quellesrc/filter/cname.rs
Sandbox für externe Listen.
Listen, die du abonnierst, können keine allow-, $important- oder regex-Regel einschmuggeln. Diese Rechte haben nur die Regeln, die du selbst schreibst.
Quellesrc/lists/parser.rs
Der Sprung zum Upstream kann verschlüsselt sein. Anfragen, die wie ein Tunnel aussehen, werden abgelehnt.
DNS over HTTPS oder TLS.
Cache-Misses können über DoH oder DoT rausgehen — die Upstreams wählst du. Eine frische Installation nutzt normales DNS.
Quellesrc/upstream/resolver.rs
Erkennung von DNS-Tunneling.
Eine Serie einzigartiger Namen außerhalb des Cache unter einer Domain ist die übliche Form von DNS-Exfiltration. Warden lehnt solche Anfragen ab. Standardmäßig an.
Quellesrc/security/tunneling.rs
Ein Resolver, viele Personen und viele Namen. Alles beugt sich deinen Regeln — ohne die globalen Listen anzufassen.
Richtlinien pro Person.
Jedes Profil wählt seine Listen, Ausnahmen und block-all. Unbekannte Clients nehmen das Standardprofil — oder werden abgelehnt, wenn du keines setzt.
Quellesrc/config/schema/profile.rs
Eigener lokaler DNS.
Lege interne Aliase an — nas.home, printer.home — aufgelöst im LAN. A und AAAA, plus automatisches PTR.
Quellesrc/dns/local.rs
Eine Richtlinie, die der Uhr folgt, und ein Resolver, den Geräte nicht umgehen.
Zeitpläne.
Ein Zeitplan legt ein Gerät oder eine Gruppe für ein Fenster auf ein anderes Profil — Nächte, Schulzeiten, Wochenenden. Übergang über Mitternacht inklusive.
Quellesrc/config/schema/schedule.rs
Anti-bypass.
Nenne die DoH- oder DoT-Resolver, die nicht aufgelöst werden sollen. Anfragen nach diesen Namen werden abgelehnt, und eine Blockliste kann sie nicht überschreiben. Warden bringt keine eigene Liste mit — die Namen fügst du hinzu.
Quellesrc/security/anti_bypass.rs
Ein Befehl. Der Installer erkennt dein System und führt dich durch den Rest. Pakete und ein Build aus dem Quellcode sind hier, wenn du einen bestimmten Weg willst.
$ curl -fsSL https://get.purge.cc | sudo sh
Klone das Repository, führe cargo build aus und starte die Binärdatei selbst.
Build-Anleitung →Installiere das .rpm mit dnf auf Fedora 40 oder neuer, dann starte den Dienst.
Auf Fedora installieren →Installiere das .deb mit apt auf Debian 13+ oder Ubuntu 24.04+, dann starte den Dienst.
Installationsanleitung →