DNS Resolver Design: Unbound/systemd-resolved, Split DNS und Caching

Ein gut konzipierter DNS-Resolver ist essenziell für die Performance, Zuverlässigkeit und Sicherheit von Linux-Servern. Insbesondere in Unternehmensumgebungen mit internen und externen Namensauflösungen ist die Wahl zwischen systemd-resolved und Unbound, die Implementierung von Split-DNS-Szenarien und ein effektives Caching entscheidend. In diesem Artikel zeigen wir praxisnah, wie Sie DNS-Resolver unter Linux optimal designen, konfigurieren und betreiben.

Grundlagen von DNS-Resolvern

Ein DNS-Resolver ist dafür zuständig, Domainnamen in IP-Adressen aufzulösen. Linux bietet standardmäßig systemd-resolved, während Unbound als leistungsfähiger, rekursiver Resolver für größere Umgebungen empfohlen wird. Beide haben ihre Stärken und Einsatzszenarien.

systemd-resolved

systemd-resolved bietet einfache Integration in moderne Linux-Distributionen, automatische Caching-Funktionalität und Unterstützung für Multicast-DNS und DNS-over-TLS.

# Status prüfen
systemctl status systemd-resolved

Nameserver-Einstellungen anzeigen

resolvectl status

Unbound

Unbound ist ein rekursiver DNS-Resolver, der erweiterte Features wie DNSSEC-Validierung, ACLs, Forwarding und fein granular einstellbares Caching bietet. Ideal für dedizierte Server, interne Unternehmensnetzwerke oder hohe Lasten.

# Installation auf Debian/Ubuntu
apt update && apt install unbound

Test der Konfiguration

unbound-checkconf
systemctl restart unbound
systemctl status unbound

Split-DNS (Internal/External)

Split-DNS ermöglicht die getrennte Auflösung interner und externer Domains, z. B. interne Services über private IPs und Internet-Domains über öffentliche Resolver. Dies verhindert Leaks und beschleunigt interne Zugriffe.

Konfiguration in Unbound

server:
    interface: 0.0.0.0
    access-control: 10.0.0.0/8 allow
    verbosity: 1

forward-zone:
name: "internal.example.local"
forward-addr: 10.0.0.10

forward-zone:
name: "."
forward-addr: 8.8.8.8
forward-addr: 8.8.4.4

systemd-resolved mit Split-DNS

systemd-resolved unterstützt Split-DNS über resolvectl und .network-Dateien in systemd-networkd:

[Network]
DNS=8.8.8.8
Domains=~example.local

Caching und Performance

Caching reduziert Latenzzeiten und entlastet Upstream-Resolver. Sowohl systemd-resolved als auch Unbound verfügen über konfigurierbares Caching.

Unbound Caching

server:
    cache-min-ttl: 3600
    cache-max-ttl: 86400
    msg-cache-size: 50m
    rrset-cache-size: 100m

systemd-resolved Cache prüfen und leeren

# Cache anzeigen
resolvectl statistics

Cache leeren

resolvectl flush-caches

Security-Aspekte

DNSSEC-Validierung, ACLs, und sichere Transportmechanismen wie DNS-over-TLS oder DNS-over-HTTPS sind wichtig, um Manipulation und Spoofing zu verhindern.

DNSSEC in Unbound

server:
    auto-trust-anchor-file: "/var/lib/unbound/root.key"
    val-permissive-mode: no

systemd-resolved mit DNS-over-TLS

[Resolve]
DNS=1.1.1.1
DNSOverTLS=yes

Monitoring und Troubleshooting

Regelmäßige Überprüfung des Resolver-Status verhindert Ausfälle und Performance-Einbrüche.

Tools

  • dig @127.0.0.1 example.com – Test der Auflösung
  • resolvectl query example.local – Prüfen interner Domains
  • unbound-control status – Unbound Monitoring
  • tcpdump -i eth0 port 53 – Analyse von DNS-Traffic

Best Practices

  • Split-DNS implementieren, um interne und externe Namespaces zu trennen
  • Unbound für rekursive, interne Resolver nutzen, systemd-resolved für Desktop/Client-Hosts
  • TTL-Werte für Caching optimieren, um Balance zwischen Performance und Aktualität zu halten
  • DNSSEC aktivieren, um Integrität der Antworten sicherzustellen
  • Monitoring und Logging einrichten, um Probleme frühzeitig zu erkennen
  • ACLs verwenden, um Resolver nur für autorisierte Clients verfügbar zu machen
  • DNS-over-TLS oder -HTTPS für verschlüsselte Abfragen einsetzen

Ein sauber geplantes DNS-Resolver-Design mit Split-DNS, Caching, Sicherheitsmaßnahmen und Monitoring gewährleistet stabile und schnelle Namensauflösung im Linux-Serverbetrieb. Durch die Wahl des richtigen Resolvers und die konsequente Trennung von internem und externem DNS-Verkehr lassen sich Performance, Sicherheit und Auditierbarkeit gleichermaßen optimieren.

Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3

Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.

Meine Leistungen umfassen:

  • Professionelle Konfiguration von Routern und Switches

  • Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen

  • Erstellung von Topologien und Simulationen in Cisco Packet Tracer

  • Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG

  • Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible

  • Erstellung von Skripten für wiederkehrende Netzwerkaufgaben

  • Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege

  • Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting

Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.

Related Articles