Behebung von Netzwerkverbindungsproblemen

LinuxBeginner
Jetzt üben

Einführung

Die Netzwerkverbindung ist ein grundlegender Aspekt jeder modernen Computerumgebung. Obwohl viele Dinge schiefgehen können, gehört der Fehler bei der Domain Name System (DNS)-Auflösung zu den häufigsten Problemen. DNS ist der Dienst, der für Menschen lesbare Domainnamen (wie www.google.com) in IP-Adressen übersetzt, die Computer zur gegenseitigen Verbindung verwenden. Wenn DNS nicht funktioniert, sind Sie möglicherweise mit dem Internet verbunden, können aber trotzdem keine Websites erreichen.

Dieses Lab bietet einen strukturierten, praktischen Ansatz zur Diagnose und Behebung eines netzwerkbezogenen DNS-Problems. Sie lernen eine Abfolge von Befehlen kennen, um Ihre Verbindung zu testen, das DNS-Problem zu identifizieren, die Konfiguration zu korrigieren und zu bestätigen, dass Ihre Verbindung vollständig wiederhergestellt ist.

Am Ende dieses Labs verfügen Sie über eine zuverlässige Checkliste für erste Fehlerbehebungsschritte, um DNS-Konnektivitätsprobleme auf einem Linux-System anzugehen.

Problem durch Anpingen eines Domainnamens bestätigen

Beim Troubleshooting ist der erste Schritt immer die Bestätigung des Problems. Eine gängige Methode zur Überprüfung der Internetverbindung ist der Befehl ping. Versuchen wir, eine bekannte Domain, google.com, anzupingen. Wir verwenden die Option -c 4, um nur vier Pakete zu senden.

Führen Sie den folgenden Befehl in Ihrem Terminal aus:

ping -c 4 google.com

Sie werden eine Fehlermeldung sehen, die auf einen Fehler bei der Namensauflösung hinweist.

ping: google.com: Temporary failure in name resolution

Dieser Fehler teilt uns mit, dass das System den Domainnamen google.com nicht in eine IP-Adresse übersetzen konnte. Dies deutet stark auf ein Problem mit dem DNS hin.

Problem durch Anpingen einer IP-Adresse isolieren

Wir vermuten ein DNS-Problem, müssen aber bestätigen, dass unsere grundlegende Internetverbindung noch funktioniert. Dies können wir tun, indem wir direkt eine öffentliche IP-Adresse anpingen, wodurch der DNS-Namensauflösungsprozess umgangen wird. Wir verwenden die öffentliche DNS-Server-IP von Google, 8.8.8.8.

Führen Sie den folgenden Befehl aus:

ping -c 4 8.8.8.8

Dieses Mal sollte der Ping erfolgreich sein. Sie werden Antworten vom Server sehen.

PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=116 time=1.23 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=116 time=1.28 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=116 time=1.30 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=116 time=1.25 ms

--- 8.8.8.8 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 1.230/1.265/1.301/0.026 ms

Da wir eine IP-Adresse anpingen können, aber keinen Domainnamen, haben wir nun bestätigt, dass das Problem bei der DNS-Auflösung liegt.

DNS-Einstellungen überprüfen und korrigieren

Da wir nun wissen, dass DNS das Problem ist, sehen wir uns die Konfigurationsdatei für DNS an. Unter Linux ist dies typischerweise /etc/resolv.conf. Diese Datei teilt dem System mit, welche DNS-Server verwendet werden sollen.

Sehen wir uns deren Inhalt an:

cat /etc/resolv.conf

Die Ausgabe zeigt den Nameserver an, der durch unser Setup-Skript konfiguriert wurde.

nameserver 192.0.2.1

Die IP-Adresse 192.0.2.1 ist für Dokumentations- und Testzwecke reserviert; sie zeigt nicht auf einen echten DNS-Server. Dies ist die Ursache unseres Problems.

Um dies zu beheben, müssen wir den falschen Nameserver durch einen gültigen ersetzen. Wir verwenden den öffentlichen DNS-Server von Google, 8.8.8.8. Wir können die Datei mit den Befehlen echo und tee überschreiben. Dies erfordert sudo-Berechtigungen.

echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf

Sehen Sie sich nun die Datei erneut an, um die Änderung zu bestätigen.

cat /etc/resolv.conf

Die Ausgabe sollte nun den korrekten Nameserver anzeigen.

nameserver 8.8.8.8

Mit einem korrekt konfigurierten Nameserver sind wir einen Schritt näher an der Lösung des Problems.

Lokalen DNS-Cache leeren

Ihr System speichert einen temporären Cache kürzlich nachgeschlagener Domainnamen, um zukünftige Anfragen zu beschleunigen. Nach der Änderung der DNS-Einstellungen ist es ratsam, diesen Cache zu leeren, um sicherzustellen, dass das System sofort die neuen Einstellungen verwendet und sich nicht auf alte, potenziell falsche, zwischengespeicherte Daten verlässt.

Auf modernen Linux-Systemen können Sie den Befehl resolvectl verwenden, der Teil von systemd-resolved ist, um den DNS-Cache zu verwalten. Um die Caches zu leeren, führen Sie den folgenden Befehl aus. Dieser erfordert sudo-Berechtigungen.

sudo resolvectl flush-caches

Dieser Befehl erzeugt bei Erfolg keine Ausgabe. Um zu überprüfen, ob der Cache geleert wurde, können Sie die Cache-Statistiken mit dem Befehl statistics überprüfen.

resolvectl statistics

Achten Sie in der Ausgabe auf die Zeile Current Cache Size. Nach dem Leeren sollte dieser Wert 0 sein, was bestätigt, dass der Cache geleert wurde. Beachten Sie, dass andere Statistiken wie Treffer (Hits) und Fehlschläge (Misses) ihre vorherigen Werte beibehalten.

...
Cache
  Current Cache Size: 0
          Cache Hits: 24
        Cache Misses: 67
...

Das Leeren des DNS-Caches ist ein wichtiger Schritt, um sicherzustellen, dass Ihr System keine veralteten DNS-Einträge verwendet.

DNS-Auflösung und Konnektivität bestätigen

Nachdem wir die DNS-Server-Konfiguration korrigiert und den lokalen Cache geleert haben, ist es Zeit, die Korrektur zu überprüfen. Wir wiederholen denselben Befehl aus Schritt 1, der zuvor fehlgeschlagen ist.

Versuchen wir erneut, google.com anzupingen.

ping -c 4 google.com

Dieses Mal sollte der Befehl erfolgreich sein. Sie werden sehen, wie der Domainname in eine IP-Adresse aufgelöst wird, und Sie erhalten Antworten vom Server. (Hinweis: Die genaue IP-Adresse für google.com kann variieren).

PING google.com (142.250.189.238) 56(84) bytes of data.
64 bytes from nuq04s39-in-f14.1e100.net (142.250.189.238): icmp_seq=1 ttl=119 time=4.43 ms
64 bytes from nuq04s39-in-f14.1e100.net (142.250.189.238): icmp_seq=2 ttl=119 time=4.43 ms
64 bytes from nuq04s39-in-f14.1e100.net (142.250.189.238): icmp_seq=3 ttl=119 time=4.40 ms
64 bytes from nuq04s39-in-f14.1e100.net (142.250.189.238): icmp_seq=4 ttl=119 time=4.43 ms

--- google.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 4.400/4.421/4.434/0.012 ms

Erfolg! Sie haben nun ein DNS-Konnektivitätsproblem erfolgreich diagnostiziert und behoben.

Zusammenfassung

Herzlichen Glückwunsch zum Abschluss dieses Labs! Sie haben erfolgreich ein Standardverfahren zur Fehlerbehebung und Behebung eines häufigen DNS-bezogenen Netzwerkproblems auf einem Linux-System durchlaufen.

In diesem Lab haben Sie gelernt, wie Sie:

  • ping verwenden, um die Konnektivität zu testen und zwischen einem allgemeinen Netzwerkausfall und einem DNS-spezifischen Problem zu unterscheiden.
  • Die DNS-Server-Konfiguration Ihres Systems in /etc/resolv.conf überprüfen.
  • Eine ungültige DNS-Konfiguration korrigieren, um die Namensauflösung wiederherzustellen.
  • Den lokalen DNS-Cache mithilfe von resolvectl flush-caches leeren, um veraltete Einträge zu entfernen.
  • Bestätigen, dass die Korrektur funktioniert, indem Sie erfolgreich einen Domainnamen anpingen.

Diese grundlegenden Fähigkeiten bilden eine solide Basis für die Bewältigung vieler gängiger Netzwerkprobleme. Sie können diesen logischen, schrittweisen Prozess nun immer anwenden, wenn Sie in Zukunft DNS-Probleme vermuten.