Wenn Sie ein Ubuntu-Benutzer sind, haben Sie sicherlich schon einmal die Situation erlebt, in der "der Domainname nicht funktioniert, aber die Verbindung über die IP-Adresse hergestellt werden kann". In solchen Fällen liegt das Problem häufig an den DNS-Einstellungen. Besonders in der neuesten Version von Ubuntu wird systemd-resolved als DNS-Resolver-Daemon standardmäßig verwendet, weshalb es wichtig ist, die Struktur zu verstehen.


1. Ablauf der DNS-Anfrage

Wenn Sie die folgende Zusammenfassung sorgfältig lesen und verstehen, werden fast alle Probleme gelöst.

  1. Der Benutzer fordert eine Domain über Anwendungen wie den Browser an
  2. Linux liest standardmäßig /etc/resolv.conf, um DNS aufzulösen (diese Datei ist symbolisch mit /run/systemd/resolve/stub-resolv.conf verknüpft.)
  3. Die Datei /run/systemd/resolve/stub-resolv.conf ist auf 127.0.0.53 eingestellt, wodurch systemd-resolved schließlich ins Spiel kommt.
  4. Das systemd-resolved des Systems wird durch die Konfigurationsdatei /etc/systemd/resolved.conf gesteuert
  5. Das heißt, systemd-resolved fragt die in /etc/systemd/resolved.conf festgelegten DNS-Server ab,
  6. erhält die Antwort und wandelt die Domain erfolgreich in eine IP-Adresse um

2. Zusammenfassung der Kernkomponenten

Wie oben beschrieben, umfasst systemd-resolved folgende 4 wichtige Konfigurationsdateien. Das Verständnis ihrer Funktionen ist entscheidend.

2-1. /etc/resolv.conf

  • Standort, an dem die DNS-Serverliste in traditionellen Linux-Systemen gelesen wird
  • Aktuell muss sie jedoch aus Kompatibilitätsgründen mit systemd als symbolischer Link existieren
  • Typischerweise sollte es folgendermaßen eingestellt sein, um normal zu funktionieren: bash /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf
  • Das bedeutet, diese Datei fungiert als "Vermittler zwischen traditionellen Apps und systemd-resolved"

2-2. /run/systemd/resolve/stub-resolv.conf

  • Enthält Informationen zum lokalen DNS-Stubs-Server (127.0.0.53), der von systemd-resolved verwaltet wird
  • Wenn /etc/resolv.conf auf diese Datei verweist, gehen alle DNS-Anfragen über systemd-resolved

2-3./etc/systemd/resolved.conf

  • systemd-resolved's wichtige Konfigurationsdatei
  • Hier können Einstellungen wie DNS=, FallbackDNS= vorgenommen werden, um Prioritäten zu setzen
  • Permanent und bleibt nach einem Neustart erhalten

2-4. /run/systemd/resolve/resolv.conf

  • Diese Datei enthält die tatsächliche Liste der DNS-Server, die von systemd-resolved verwaltet wird
  • Fortgeschrittene Benutzer können einen direkten DNS-Anfrager anstelle von stub-resolv.conf einstellen, indem sie es auf /etc/resolv.conf verlinken (Bypass-Einstellung)

3. Beispiel für ein Problem: Wenn der DNS-Server des vom ISP bereitgestellten Routers instabil ist

  • Der DNS-Server des führenden südkoreanischen ISPs KT (z.B. 168.126.63.1) ist im Router konfiguriert, aber wenn ich keine Kontrolle über den Router habe, treten gelegentlich DNS-Probleme auf.
  • Der KT DNS hat oft eine instabile Antwortzeit oder scheitert häufig am UDP/TCP-Handshake
  • Wenn im systemd-resolved Protokoll wiederholt Nachrichten wie folgt angezeigt werden, ist das ein Zeichen für Probleme: Using degraded feature set TCP instead of UDP for DNS server 168.126.63.1. Using degraded feature set UDP instead of TCP for DNS server 168.126.63.1.
  • Infolge kommt es zu einem Fehlschlagen der Domainauflösung → der Zugriff auf die Website ist nicht möglich

4. Empfohlene DNS-Server

Name Adresse Eigenschaften
Google DNS 8.8.8.8, 8.8.4.4 Schnell und stabil
Cloudflare DNS 1.1.1.1, 1.0.0.1 Schnelle Geschwindigkeit und ausgezeichnete Datenschutzfunktionen
Quad9 9.9.9.9 Bietet Sicherheitsbedrohungsfilterung

5. So konfigurieren Sie ein stabiles DNS

  1. Öffnen Sie die Datei /etc/systemd/resolved.conf
[Resolve]
DNS=1.1.1.1 8.8.8.8
FallbackDNS=9.9.9.9
  1. Änderungen anwenden
sudo systemctl restart systemd-resolved
  1. Überprüfen Sie, ob /etc/resolv.conf korrekt verlinkt ist
ls -l /etc/resolv.conf

→ Sollte auf /run/systemd/resolve/stub-resolv.conf verlinkt sein

Falls nötig, forcieren Sie die Neusetzen:

sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf

6. Vorsicht vor der Einmischung des NetworkManagers

In Ubuntu mit einer GUI kann es sein, dass der NetworkManager die DNS-Einstellungen überschreibt

  • Wenn die automatische DNS-Einstellung aktiviert ist, können die systemd-resolved Einstellungen ignoriert werden
  • Überschreiben: bash nm-connection-editor → Verbindung bearbeiten → IPv4-Registerkarte → Automatische DNS deaktivieren → manuelle DNS eingeben

7. Fazit

  • Da die Instabilität des KT DNS häufig berichtet wird, ist es ratsam, es zu meiden
  • Die DNS-Konfiguration über systemd-resolved ist ein sehr effektiver Weg, um die Stabilität unter Ubuntu zu erhöhen
  • Wenn Sie die Einstellungen genau verstehen und anwenden, können Sie den Stress durch Fehlschläge bei der Domainauflösung reduzieren

8. Jesses Kommentar

Das Verständnis der Einstellungen ist die stärkste Sicherheit und Wartung. Ich hoffe, dass dieser Artikel für diejenigen, die verwirrt über die DNS-Einstellungen unter Ubuntu waren, praktische Hilfe bietet.