Die Vorteile des Selbsthostens seines DNS-Servers liegen auf der Hand: Man ist sicher vor Zensurbestrebungen durch Staat und Provider und kann direkt auf Domainebene, wie der Artikel zu dnsmasq schon kurz erwähnt, Werbung blockieren. Ein Problem, das dnsmasq mit Pi-Hole, AdGuard Home und den meisten anderen Raspberry-Pi-geeigneten DNS-Diensten verbindet, ist aber, dass sie (ohne weitere Konfiguration) trotzdem auf die Dienste anderer Leute, etwa Quad9 oder Cloudflare, zurückgreifen muss, die vor rechtlichen Übergriffen durch Demokratiekritiker und skrupellose Großkonzerne nicht sicher sind. Es wäre doch praktisch, könnte man sich diesen Umweg sparen, ohne (wie etwa mit Unbound) auf Komfort verzichten zu müssen.
Und das geht zur Überraschung von hoffentlich niemandem tatsächlich - dem Technitium DNS Server sei's gedankt.
Benötigt wird ein netzwerkfähiges Gerät (ein Raspberry Pi, muss nicht das neueste Modell sein, oder ein vergleichbarer Kleinstcomputer genügt völlig), auf dem - das sollte hier keine große Herausforderung sein - Windows, macOS oder zum Beispiel Linux läuft. Der Technitium-DNS-Server ist großteils in C# auf dem .Net-Framework geschrieben und ist damit einigermaßen portabel und performant, wenn auch nicht ganz so CPU- und RAM-schonend wie manche Alternative.
Die Erstinstallation (ich gehe im Folgenden davon aus, dass euer Raspberry Pi schon fertig eingerichtet ist und ihr also auf die Shell kommt) folgt demselben Befehl wie spätere Updates:
curl -sSL https://download.technitium.com/dns/install.sh | sudo bash
Ich empfehle selbstverständlich zunächst ein Durchlesen des Installationsscripts vor dem Ausführen, etwas von curl
in eine Shell, zumal mit erhöhten Rechten, ist blind ja grundsätzlich nie eine besonders empfehlenswerte Idee. Hinweise für die manuelle Installation liefert ansonsten dieser Blogbeitrag bei Technitium selbst.
Ist die Installation abgeschlossen, so könnt ihr die Oberfläche über den Port 5380 (HTTP) oder 53443 (HTTPS) aufrufen. (Eventuell müsst ihr die entsprechenden Ports in eurer Firewall freigeben, die Portliste ist im erwähnten Blogbeitrag zu finden. HTTPS müsst ihr in den Einstellungen unter "Settings → Web Service" eventuell erst konfigurieren.) In den Einstellungen interessant ist wahrscheinlich zweierlei: Unter "Zones" findet ihr die konfigurierten DNS-Zonen. Hier könnt ihr eure eigenen Zonen (Hinweis: wie alle Seiten von Technitium ist auch diese vollkommen auf Englisch gehalten) konfigurieren, um zum Beispiel so etwas wie example.com oder fritz.box entsprechend zu verwalten.
DNS-to-QUIC und ähnliche Protokolle - ebenfalls optional - findet ihr unter "Settings → Optional Protocols" und könnt ihr dort aktivieren, falls ihr eurem LAN nicht so recht traut:
Theoretisch könntet ihr unter "Settings → Proxy & Forwarders" auch Quad9 oder andere DNS-Server einstellen, aber das wollen wir hier ja gerade nicht. Ist keiner konfiguriert, so weist dieselbe Einstellungsseite freundlich darauf hin (von mir übersetzt), dass normalerweise der Betrieb des Technitium DNS Server komplett autark erfolgt:
Wenn keine Forwarder konfiguriert sind, verwendet der DNS-Server vorkonfigurierte Root-Hints (hierzu siehe Wikipedia), um eine rekursive Auflösung zur Auflösung von Domänennamen durchzuführen.
Passt.
Werbeblocker gibt's natürlich auch, diesen könnt ihr unter "Settings → Blocking" einstellen:
Unterstützt werden das HOSTS-, das Wildcard- und das Adblock-Plus-Format sowie einfache textbasierte Blockierlisten, aktuell gehalten werden diese automatisch. Beachtet, dass jede zusätzliche Blockierliste nennenswert mehr Ressourcen beansprucht.
Möge es von Nutzen sein.
Quelle und Titelbild: https://technitium.com/dns
Hm, mich würde interessieren inwieweit sich das zu einem Konstrukt von unbound (mit root zone update)+Adguard(was auf mein unbound zugreift zur Auflösung) unterscheidet.
Also ernst gemeinte Frage, weil vielleicht ist mein Konstrukt ja ineffizienter. :)
Ja, ist es. AdGuard bräuchtest du mit unbound ja eigentlich gar nicht, du hast also zwei Dienste statt einem. Technitium umfasst GUI und Filter gleichzeitig.
Hm, ich verstehe. Aber die Begründung reicht mir nicht.
Von dem was ich so sehe liefert mir Adguard vieles was ich mit großem Aufwand konfigurieren müsste.
DoT DoH Vorkonfigurierte Filter für Dienste usw.
Kann das Technitium auch? Wenn ja, scheint es wirklich ineffizient zu sein mit adguard.
Ansonsten wäre eine Ineffizienz nur gültig, wenn mein Adguard extrem viel overhad hat.
Sorry, jetzt erst gesehen. Schreibst es ja bzgl. DoH usw.
Hm, ich installiere mir das mal :)
Mir fallen dazu spontan ein paar Fragen ein: Wird standardmässig immer ein Root Nameserver kontaktiert, sofern unter "Proxy & Forwarder" nichts eingetragen ist? Merkt sich Technitium DNS Server die vom Root Server aufgelöste Route für eine vom Benutzer einstellbare Zeitspanne in einem Zonefile oder wird andernfalls wirklich jedesmal erneut angefragt? Bietet Technitium DNS die Möglichkeit das vollständige "Root Zone File" zu importieren und dadurch eine autarke lokale Auflösung zu ermöglichen? Kann man die zu befragenen Root Server auswählen bzw. ändern? https://root-servers.org/
Technitium hat einen Fallback auf die Rootserver, wenn nichts eingetragen ist, stellt einen DNS-Cache bereit (sonst wäre das auch irgendwie dämlich), siehe „Cached“ (das lila Feld) im Titelbild, die Rootserver stehen in der Datei named.root. Mit dem vollständigen Import habe ich mich nicht befasst, das sollte aber per Zone-Transfer funktionieren.
Heyho,
hab’s auf einem Pi als Docker laufen. Geht auch. Direktes DNS auflösen bei den TLDs hat aber gegenüber bspw. Quad9 das Problem dass die Vertraulichkeit gegen den eigenen ISP wie Telekom verloren geht. Bei bspw. Quad9 kann man verschlüsselt anfragen. Ein Dilemma.
Grüße Xavin
Guter Einwand. Vermutlich ließe sich das mit Proxy/VPN lösen; wofür selbiges natürlich dann hartkodiert sein müsste.
Geht bei dir der SQL Server out of the Box? Bei mir nämlich nicht. Wenn ja, wie sieht deine docker compose yml aus?
Mal kleines Feedback.
Hast Recht, ist wesentlich effizienter als pihole,adguard und co.
Mein localer DNS ist nun wesentlich schneller inkl. DoH usw. einzig die Dienst-Spezifischen easy on/off Schalter von Adguard fehlen. Aber die benutzen wohl eher Familien.
Mir ist das so wesentlich lieber.
Und locale Zones funktionieren auch viel einfacher (anstelle von manuellen unbound eintrag).
Bin begeistert.
Sehr gut, danke fürs Feedback!
Man kann in Technitium selbst eine Kopie der root Zone vorhalten.
Zones -> Add Zone
Name der Zone: . (hier nur einen Punkt eintragen) Type: secondary Primary name server adresses (IPs der root Server):
192.0.47.132 192.0.32.132 199.9.14.201 192.33.4.12 199.7.91.13 192.5.5.241 192.112.36.4 193.0.14.129
Zone transfer protocol: XFR-over-TCP
Für DoH kann ein gültiges Zertifikat von LE hinterlegt werden. Afaik unterstützt Technitium bisher nur das pfx-Format. Aber das lässt sich recht einfach scripten, wenn man einen certbot laufen hat.