Technitium DNS-Server: Alles, was das Herz begehrt!

Ein DNS-Server spielt eine entscheidende Rolle in Netzwerken, sei es in einem Unternehmensumfeld oder im eigenen Homelab. Die Wahl des richtigen DNS-Servers kann einen erheblichen Einfluss auf die Netzwerkleistung sowie Sicherheit haben. Außerdem unterstützt auch dieses Produkt das Blockieren von lästiger Werbung, indem bestimmte DNS-Anfragen nicht beantwortet werden.

Mit einer beeindruckenden Palette an Features und einem intuitiven Web-Dashboard ist der Technitium DNS-Server eine erstklassige Wahl. Die Open-Source-Software gilt als äußerst robust und zuverlässig. Dank der Integration von Primary- und Secondary-Zonen ist ein primitives Clustering umsetzbar. In Zukunft soll es zudem einen vollwertigen Cluster-Modus mit zentraler Verwaltung geben.

Ein Technitium DNS-Server kann über 100.000 Anfragen pro Sekunde beantworten. High-Performance ist also garantiert. In diesem Beitrag werden wir einen genauen Blick auf die ganzen Funktionen werfen. Obendrein werden wir dir zeigen, wie du den DNS-Server als Docker-Container in Betrieb nehmen kannst. Und auf die Unterschiede zu alternativen Lösungen werden wir ebenso eingehen.

Grundlegendes auf einen Blick:

Technitium DNS-Server Dashboard

Die Liste der Features ist mehr als umfangreich. Gegenwärtig sind uns keine anderen Lösungen auf dem Markt bekannt, die eine vergleichbare Vielzahl an Funktionen bieten. Damit du dir einen kurzen Überblick über die zahlreichen Merkmale verschaffen kannst, haben wir eine komprimierte Übersicht erstellt:

Plattformen:Windows, Linux, macOS, Raspberry Pi (ARM-Architektur) & Docker
Protokolle:DNS-over-UDP/TCP, DNS-over-HTTPS (DoH), DNS-over-TLS (DoT) & DNS-over-QUIC (DoQ)
Zonen-Arten:Primary, Secondary, Stub & Conditional Forwarder
Zonen-Transfers:AXFR sowie IXFR mit TLS/QUIC-Support & DNS Notify
DNSSEC:RSA, ECDSA & NSEC Algorithmen & verschlüsselte Protokolle
Blocking:Werbung & Schadsoftware via URL-Listen mit Regex-Support
Forwarders:Manuelles Eintragen oder Nutzen einer fertigen Liste
Caching:Serve stale, prefetching & auto prefetching
Leistung:Über 100.000 Anfragen pro Sekunde
Besonderheiten:Wildcard Subdomain Unterstützung, DHCP Server & HTTP/SOCKS5 Proxy
Erweiterungen:Built-in App Store

Technitium DNS-Server aufsetzen:

Die Installation ist wirklich alles andere als komplex. Wer die Software direkt auf einer Linux-Distribution seiner Wahl installieren möchte, kann das in wenigen Minuten erledigen. Sollte man allerdings eine Firewall auf dem Server einsetzen, muss man zuerst ein paar Portfreigaben erstellen:

  • Port 5380/TCP: Web-Dashboard ohne Verschlüsselung
  • Port 53443/TCP: Web-Dashboard mit SSL/TLS
  • Port 53/UDP: Unverschlüsselte DNS-Anfragen (Standard)
  • Port 53/TCP: Unverschlüsselte DNS-Anfragen (Standard)
  • Port 853/UDP: DNS-over-QUIC
  • Port 853/TCP: DNS-over-TLS
  • Port 443/UDP: DNS-over-HTTPS mit HTTP/3
  • Port 443/TCP: DNS-over-HTTPS mit HTTP/1.1 & HTTP/2
  • Port 80/TCP: DNS-over-HTTP, Reverse-Proxy & Let’s Encrypt Zertifikatserstellung mit der HTTP Challenge
  • Port 67/UDP: Built-in DHCP-Server

Native Installation unter Linux:

Die Einrichtung kann mithilfe eines vollautomatisierten Skripts oder alternativ durch Herunterladen eines Tar.gz-Archivs und dem Entpacken auf dem zukünftigen DNS-Server erfolgen. Im Interesse der Einfachheit wird hier aber erstmal die automatische Methode vorgestellt:

curl -sSL https://download.technitium.com/dns/install.sh | sudo bash

Für diejenigen, die lieber den manuellen Ansatz wählen möchten, sind ein paar mehr Schritte erforderlich. So muss zu Beginn die die ASP.NET Core 7 Runtime installiert werden. Es handelt sich hierbei um ein Open-Source-Framework von Microsoft, das die Entwicklung von plattformübergreifenden, leistungsfähigen Webanwendungen ermöglicht.

Auf dem Server wird diese Runtime installiert, da eine entsprechende Umgebung benötigt wird, um den Technitium DNS-Server als ASP.NET Core-Anwendung auszuführen. Die Installation kann über das Paketmanagement erfolgen und ist hier beschrieben. Sobald die erforderlichen Arbeiten durchgeführt worden sind, kann es auch schon ans Herunterladen und Entpacken der Software gehen:

wget https://download.technitium.com/dns/DnsServerPortable.tar.gz
mkdir -p /opt/technitium/dns
tar -zxf DnsServerPortable.tar.gz -C /opt/technitium/dns

Unmittelbar danach muss die Systemd-Unit-Datei aus dem Installer noch im korrekten Pfad hinterlegt werden. Ein neu laden der Daemons ist außerdem auch noch notwendig. Anschließend kann der Dienst gestartet und dabei gleich noch in den Autostart aufgenommen werden:

cp /opt/technitium/dns/systemd.service /etc/systemd/system/dns.service
systemctl daemon-reload
sudo systemctl enable --now dns.service

Falls beim Starten des Dienstes Probleme auftreten sollten, kannst du die Protokolleinträge mit journalctl --unit dns --follow überprüfen, um mögliche Unstimmigkeiten zu identifizieren. Wenn alles korrekt läuft, kann der Technitium DNS-Server auf Port 5380 konfiguriert werden.

Deployment als Docker-Container:

Ebenso unkompliziert, jedoch für viele Homelabber aufgrund der Flexibilität deutlich interessanter, ist die Verwendung eines Containers. Am besten lässt sich dies durch die folgende Docker-Compose-Datei umsetzen. Diese musst du aber noch kurz auf deine Bedürfnisse abstimmen.

version: "3"
services:
  dns-server:
    container_name: dns-server
    hostname: <dns-server> # Keine Domain mit angeben
    image: technitium/dns-server:latest
    # Verwende für den Einsatz des DHCP-Dienstes den Docker-Netzwerkmodus „Host“ und entfernen alle Portmappings
    # network_mode: "host"
    ports:
      - "5380:5380/tcp" # Web-Dashboard (HTTP)
      # - "53443:53443/tcp" # Web-Dashboard (HTTPS)
      - "53:53/udp" # Standard-DNS (unverschlüsselt)
      - "53:53/tcp" # Standard-DNS (unverschlüsselt)
      # - "853:853/udp" # DNS-over-QUIC
      # - "853:853/tcp" # DNS-over-TLS
      # - "443:443/udp" # DNS-over-HTTPS (HTTP/3)
      # - "443:443/tcp" # DNS-over-HTTPS (HTTP/1.1, HTTP/2)
      # - "80:80/tcp" # DNS-over-HTTP (Reverse-Proxy oder Certbot Zertifikatserstellung)
      # - "8053:8053/tcp" # DNS-over-HTTP mit dem Einsatz des Reverse-Proxys
      # - "67:67/udp" # Built-in DHCP-Server      
    environment:
      - DNS_SERVER_DOMAIN=domain.tld # Der primäre Domänenname, den dieser DNS-Server verwendet, um sich selbst zu identifizieren.
      # - DNS_SERVER_ADMIN_PASSWORD=password # Passwort für den administrativen Zugriff auf die Web-Konsole
      # - DNS_SERVER_ADMIN_PASSWORD_FILE=password.txt # Der Pfad zu einer Datei, die ein Passwort für den Admin-Benutzer der DNS-Web-Konsole enthält.
      # - DNS_SERVER_PREFER_IPV6=false # Wenn diese Option aktiviert ist, verwendet der DNS-Server nach Möglichkeit IPv6 für Abfragen.
      # - DNS_SERVER_WEB_SERVICE_HTTP_PORT=5380 # Die TCP-Portnummer für die DNS-Web-Konsole über das HTTP-Protokoll.
      # - DNS_SERVER_WEB_SERVICE_HTTPS_PORT=53443 # Die TCP-Portnummer für die DNS-Web-Konsole über das HTTPS-Protokoll.
      # - DNS_SERVER_WEB_SERVICE_ENABLE_HTTPS=false # Aktiviere nur HTTPS für die DNS Web-Konsole
      # - DNS_SERVER_WEB_SERVICE_USE_SELF_SIGNED_CERT=false # Aktiviere ein selbst signiertes TLS Zertifikat für das Web-Dashboard
      # - DNS_SERVER_OPTIONAL_PROTOCOL_DNS_OVER_HTTP=false # Ermöglicht die Verwendung des optionalen DNS-Server-Protokolls DNS-over-HTTP auf TCP-Port 8053 mit einem TLS-terminierenden Reverse-Proxy wie Nginx.
      # - DNS_SERVER_RECURSION=Allow # Optionen: Allow, Deny, AllowOnlyForPrivateNetworks, UseSpecifiedNetworks. # Welche IP-Netzwerke bekommen auf ihre DNS-Anfragen eine Antwort
      # - DNS_SERVER_RECURSION_DENIED_NETWORKS=1.1.1.0/24 # Durch Kommas getrennte Liste von IP-Adressen oder Netzwerkadressen, um eine Rekursion zu verhindern. Nur gültig für die Rekursionsoption „UseSpecifiedNetworks“.
      # - DNS_SERVER_RECURSION_ALLOWED_NETWORKS=127.0.0.1, 192.168.1.0/24 # Durch Kommas getrennte Liste von IP-Adressen oder Netzwerkadressen, um eine Rekursion zu ermöglichen. Nur gültig für die Rekursionsoption „UseSpecifiedNetworks“.
      # - DNS_SERVER_ENABLE_BLOCKING=false # Legt fest, dass der DNS-Server Domänennamen mithilfe der Blockierungszone und der Blocklistenzone blockiert.
      # - DNS_SERVER_ALLOW_TXT_BLOCKING_REPORT=false # Gibt an, ob der DNS-Server mit TXT-Einträgen antworten soll, die einen blockierten Domänenbericht für TXT-Typ-Anfragen enthalten.
      # - DNS_SERVER_BLOCK_LIST_URLS= # Eine durch Kommas getrennte Liste von Sperrlisten-URLs.
      # - DNS_SERVER_FORWARDERS=1.1.1.1, 8.8.8.8 # Durch Kommas getrennte Liste der Weiterleitungsadressen.
      # - DNS_SERVER_FORWARDER_PROTOCOL=Tcp # Optionen für das Weiterleitungsprotokoll: Udp, Tcp, Tls, Https, HttpsJson.
      # - DNS_SERVER_LOG_USING_LOCAL_TIME=true #Aktiviere diese Option, um für die Protokollierung die Ortszeit anstelle von UTC zu verwenden.
    volumes:
      - config:/etc/dns
    restart: unless-stopped
    sysctls:
      - net.ipv4.ip_local_port_range=1024 65000
 
volumes:
    config:

Unsere FAQ zum Abschluss:

FAQ

Die Nachfrage nach DNS-Servern mit integrierter Ad- und Malware-Blockierung ist enorm. Aufgrund dessen erhalten wir regelmäßig Leserfragen zum Technitium DNS-Server. Das hat uns dazu inspiriert, den Artikel um einen Abschnitt mit häufig gestellten Fragen und unseren Antworten zu erweitern. Auf diese Weise kannst auch du von den Erklärungen und Lösungen profitieren.

PiHole oder Technitium DNS-Server?

Über viele Jahre hinweg haben wir PiHole verwendet. Allerdings ist das Projekt nicht mehr auf dem neuesten, technologischen Stand. Und so vermisst man viele grundlegende Protokolle wie DNS-over-TLS oder DNS-over-HTTP/S. Auch mit Zonen mag der PiHole wenig anfangen und so ist an ein simples Clustering mit den Bordmitteln gar nicht erst zu denken.

Es gibt allerdings Erweiterungen aus der Community, die man nachinstallieren kann. Einzig die Weboberfläche ist moderner gestaltet und verfügt im Gegensatz zum Technitium DNS-Server über einen schönen Dark Mode. Unserer Meinung nach ist der PiHole keine gute Wahl mehr und sollte lieber nicht eingesetzt werden.

AdGuard Home oder Technitium DNS-Server?

Bei einem Vergleich der Funktionen werden die Unterschiede erst auf den zweiten Blick deutlich. Beispielsweise mangelt es dem AdGuard Home an einem App-Store, und die Handhabung von Zonen ist bei weitem nicht so ausgreift. Wer mit Primary- und Secondary-Zonen samt DNS-Notify und DNSSEC arbeiten möchte, sollte zum Technitium DNS-Server greifen.

Wer steht hinter dem Technitium DNS-Server?

Das Projekt ist gemäß der GNU GPLv3-Lizenz veröffentlicht, und der Quellcode ist jederzeit auf GitHub einsehbar. Obwohl die Open-Source-Community maßgeblich an der Entwicklung beteiligt ist, wird das Projekt im Hintergrund von der Firma Altha Technology gesponsert. Es wird also auch in Zukunft neue Features und haufenweise Verbesserungen geben.

Von Fabian Wüst

Er ist leidenschaftlicher Open-Source-Benutzer und ein begeisterter Technologie-Enthusiast. Als kreativer Kopf hinter Homelabtopia bringt Fabian hier seine umfangreiche Erfahrung als Linux-Admin ein. Um sicherzustellen, dass du aus seinen Beiträgen den größtmöglichen Nutzen ziehen kannst, führt er ausgiebige Tests durch und errichtet dafür immense Setups.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert