Über die Jahre gewöhnt man sich an bewährte Systeme und Techniken, darunter auch DNS-Server wie bspw. Unbound. Wie jedes System hat Unbound seine Vor- und Nachteile. In diesem Beitrag stellen wir kurz eine Alternative zu Unbound vor – Technitium DNS.
Übersicht
Technitium kann auf allen gängigen Plattformen (Linux/Raspberry, Windows & Mac) installiert werden – ein Betrieb als Docker Container ist ebenso möglich. Es benötigt wenige Ressourcen. Ein Linuxcontainer mit 1GB RAM & 1 CPU reicht hier vollkommen aus.
Key features
- kann als authoritive sowie als recursive DNS genutzt werden
- unterstützt DNS-over-TLS, DNS-over-HTTPS, DNS-over-TCP und DNS-over-QUIC
- Implementierung von DNS-over-HTTPS via HTTP/1.1, HTTP/2 & HTTP/3
- CNAME, A, AAAA, DNAME, ANAME, APP, DNSSEC, uvm.
- einfache Verwaltung via Webinterface
- Auflösung gegen Root Server
- Blockierung von Ads
Installation & Konfiguration
Im folgenden Beispiel installieren und konfigurieren wir Technitium DNS in einem LXC (Proxmox) auf Basis des Debian 12 Templates.
- 1 CPU
- 1GB RAM
- 512MB SWAP
- 8GB Disk
Die Installation kann einfach via curl und einem Script gestartet werden:
curl -sSL https://download.technitium.com/dns/install.sh | sudo bash
Der Installer benötigt nur einige Sekunden und meldet sich nach erfolgreichem Durchlauf wie folgt:
===============================
Technitium DNS Server Installer
===============================
Installing ASP.NET Core Runtime...
ASP.NET Core Runtime was installed successfully!
Downloading Technitium DNS Server...
Updating Technitium DNS Server...
Configuring systemd service...
Technitium DNS Server was installed successfully!
Open http://TECHNITIUM:5380/ to access the web console.
Donate! Make a contribution by becoming a Patron: https://www.patreon.com/technitium
Management & Ersteinrichtung
Technitium DNS wird über ein Webinterface konfiguriert. Man öffnet die Administrationsoberfläche via http://ip-des-servers:5380 und wird zunächst dazu aufgefordert, ein Passwort für den default User „admin“ festzulegen:
Das aufgeräumte Dashboard beinhaltet eine Übersicht der Anfragen. Im Oberen Bereich finden sich die Menüs zur Verwaltung:
Die Menüpunkte in der Übersicht
Hierüber werden die verschiedenen Zonen (primary, secondary, stub oder conditional forwarder) verwaltet.
Default verwendet Technitium einen Cache. Der Inhalt der bereits gecachten Abfragen kann hier eingesehen werden, sortiert nach TLDs.
Werden Blocklists verwendet, sind hier die entsprechenden positiven und negativen Treffer zu finden.
Technitium verwendet einen „App-Store“ zur Installation weiterer Features. U.a. Advanced Blocking, DNS64, DNSBL, etc.
Der Client kann für DNS-Abfragen aller Art verwendet werden. Entweder wird der lokale Server oder eine voreingestellte Liste der „großen“ Anbieter verwendet (Cloduflare, Google, Quad9, Roots, etc.)
Darüber werden die Systemeinstellungen konfiguriert. Vom Servernamen über TTL, Bindings, DNSSEC, etc.
Technitium kann als DHCP-Server im Netz agieren und mehrere Scopes managen.
Neben dem Admin können weitere User mit unterschiedlichen Berechtigungen hinzugefügt werden. Eine Kontrolle der letzten Logins & Aktivitäten lässt sich hier auch einsehen.
Die chronologischen Systemlogs des Servers, welche nach Datum sortiert werden und auch abgefragt werden können.
Technitium gegen die Root Server auflösen lassen
Wie andere DNS-Server auch kann Technitium gegen die Root Server auflösen. Gerade im Hinblick auf den Datenschutz und die Privatsphäre ein Feature, welches eingesetzt werden sollte.
Erstellung der sekundären Root Zone
Technitium legt hierfür eine Kopie in einer sekundären Zone ab.
Im Menü auf „Zones“ -> „Add Zone“ klicken.
- Zone: . (hier nur einen Punkt eingeben)
- Type: Secondary Zone
- Primary Name Server Addresses: siehe nachstehende Liste
- Zone Transfer Protocol: XFR-over-TCP (default)
Liste der Primary Name Server Addresses:
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
Nach Eingabe aller Daten auf „Add“ klicken:
Nach dem Anlegen der Zone benötigt Technitium eine gewisse Zeit, um die Kopie zu transferieren. Klickt man auf den Reload-Button neben dem Bezeichner <root> sollten die Einträge erscheinen:
Blocking & Advanced Blocking
Technitium erlaubt das Blocken von Ads sowie unerwünschten Domains. Hierfür sind keine zusätzlichen Apps notwendig. Die Apps „Advanced Blocking“ sowie „DNS Block List (DNSBL)“ erweitern das Blocking zusätzlich um RegEx und weitere Listen und die Möglichkeiten zum Erstellen eigener Kategorien. Allerdings sei angemerkt, dass das Advanced Blocking etwas anders gelöst ist wie bspw. bei PiHole oder AdGuard.
Zum Installieren dieser Features wählt man „Apps“ -> „App Store“ und klickt im Popup auf „Install“ neben dem jeweiligen Eintrag:
Anschließend können via „Settings“ -> „Blocking“ die entsprechenden Block List URLs hinzugefügt oder aus einer der vordefinierten Listen („Quick Add“) ausgewählt werden:
Selbstverständlich kann Technitium auch als reiner Forwarder/Upstream für andere Lösungen fungieren (PiHole, AdGuard Home, etc.).
Lokale Primary Domain mit Reverse Lookup Zone erzeugen
Auch für lokale Netzwerke/Intranets kann Technitium verwendet werden. Soll der Server eine Secondary Zone vorhalten (typisches Szenario: AD Netzwerk) erstellt man diese mit dem entsprechenden Namen und verweist auf die primären AD DNS Server.
Im folgenden Beispiel soll Technitium die Primary Zone für eine lokale Domain (test.localdomain) erstellen und gleichzeitig eine Reverse Lookup Zone hinterlegen.
Dazu auf „Zones“ -> „Add Zone“ klicken.
- Zone: test.localdomain
- Type: Primary Zone (default)
Im nächsten Schritt erstellt man über „Zones“ -> „Add Zone“ eine weitere Zone.
- Zone: IP-DES-SUBNET-IM-CIDR-FORMAT, bspw.: 192.168.225.0/24
- Type: Conditional Forwarder Zone
- Forwarder: Use „This Server“
Nach dem Erstellen der Zone sollte diese in der Übersicht entsprechend angezeigt werden:
Einen statischen Eintrag in der lokalen Domain erzeugen
Für statische Einträge klickt man in der Zonenübersicht auf die gewünschte Domain und wählt „Add Record“.
- Name: server (test.localdomain wird automatisch angehangen)
- Type: A (AAAA für einen IPv6-Eintrag)
- TTL: default 3600 Sekunden, kann aber nach eigenen Vorlieben angepasst werden
- IPv4 Address: IP-DES-ENDGERÄTES
- Add reverse (PTR) record: anhaken (die entsprechende Zone haben wir im obigen Beispiel eben erstellt)
- Overwrite existing records: falls der Eintrag bereits vorhanden ist, wird dieser bei Aktivierung überschrieben
- Comments: hier können eigene Kommentare zwecks Übersichtlichkeit hinzugefügt werden