GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Fehlerbehebung und Debugging für Linux-Netzwerke?

Von Zeit zu Zeit wurden Linux- und Unix-Benutzer mit verschiedenen Netzwerkproblemen konfrontiert. Viele dieser Probleme werden hier und in einigen anderen Fehlerbehebungsforen vorgestellt, aber sie sind sehr konkret und enthalten viele zusätzliche technische Informationen, und manchmal ist es ziemlich schwierig, den Hauptpunkt und den wahren Grund für fehlerhaftes Systemverhalten zu verstehen.

Mit dieser Frage möchte ich ein Community-Wiki starten Seite, die es ermöglicht, unsere Erfahrungen mit der Fehlerbehebung und dem Debuggen von Netzwerken zu verallgemeinern. Ich hoffe, dass die Linux- und Unix-Benutzer ihre Netzwerkprobleme mithilfe dieser Seite leichter erkennen und lösen („Teile und Herrsche“).

Die übergeordnete Seite dieser Seite sollte Best Practice zum Diagnostizieren von Problemen sein. Aber hier sollten wir uns auf die Fehlerbehebung der Netzwerkprobleme konzentrieren aus Benutzer- und Kernel-Space.

Ich nehme an, wenn Sie:

  1. Teilen Sie die Informationen über die Verwendung eines großartigen Netzwerkdiagnosetools mit konkreten Anwendungsbeispielen und Beispielen für Netzwerkfehler, die sie zu finden helfen.
  2. Teilen Sie den Link zum großartigen Netzwerk-Tutorial zu diesem Thema
  3. Erzählen Sie von einer allgemeinen Methode oder einem Rezept, das es ermöglicht, einige Klassen von Netzwerkproblemen anzugehen
  4. Teilen Sie Informationen über Ihr Toolset für Netzwerk-Debugging und -Fehlerbehebung

es würde perfekt zu diesem Thema passen.

Ich beginne damit, den Link zu verschiedenen Diagnosetools und dem 12 Jahre alten einfachen Tutorial zu teilen. Auch das Archlinux-Tutorial scheint aktuelle Informationen zu unserem Thema zu enthalten. Und um in die Linux-Netzwerke einzutauchen, müssen wir unbedingt Linux Networking-HOWTO besuchen.

Akzeptierte Antwort:

Ich denke, allgemeine Prinzipien der Netzwerkfehlerbehebung sind:

  1. Finden Sie heraus, auf welcher Ebene des TCP/IP-Stacks (oder eines anderen Stacks) das Problem auftritt.
  2. Verstehen Sie, was das richtige Systemverhalten ist und was eine Abweichung vom normalen Systemzustand ist
  3. Versuchen Sie, das Problem in einem Satz oder in mehreren Worten auszudrücken
  4. Verwenden Sie die erhaltenen Informationen aus dem fehlerhaften System, Ihre eigene Erfahrung und die Erfahrung anderer Personen (Google, verschiedene Foren usw.) und versuchen Sie, das Problem bis zum Erfolg (oder Misserfolg) zu lösen
  5. Wenn Sie scheitern, fragen Sie andere um Hilfe oder Rat

Ich selbst besorge mir normalerweise alle erforderlichen Informationen mit allen erforderlichen Tools und versuche, diese Informationen mit meiner Erfahrung abzugleichen. Die Entscheidung, auf welcher Ebene des Netzwerkstapels der Fehler enthalten ist, hilft, unwahrscheinliche Varianten abzuschneiden. Die Erfahrung anderer Menschen zu nutzen hilft, die Probleme schnell zu lösen, aber oft führt es dazu, dass ich ein Problem ohne sein Verständnis lösen kann und wenn dieses Problem erneut auftritt, ist es für mich unmöglich, es ohne das Internet erneut anzugehen.

Und im Allgemeinen weiß ich nicht, wie ich Netzwerkprobleme löse. Anscheinend gibt es in meinem Gehirn eine magische Funktion namens SolveNetworkProblem(information_about_system_state, my_experience, people_experience) , die manchmal genau die richtige Antwort zurückgeben und manchmal auch fehlschlagen könnten (wie hier TCP stirbt auf einem Linux-Laptop).

Normalerweise verwende ich Dienstprogramme aus diesem Satz für das Netzwerk-Debugging:

  • ifconfig (oder ip link , ip addr ) – um Informationen über Netzwerkschnittstellen zu erhalten
  • ping – zur Validierung, ob der Zielhost von meiner Maschine aus erreichbar ist. ping Dies könnte auch für grundlegende DNS-Diagnosen verwendet werden – wir könnten den Host über die IP-Adresse oder den Hostnamen anpingen und dann entscheiden, ob DNS überhaupt funktioniert. Und dann traceroute oder tracepath oder mtr um zu sehen, was auf dem Weg dorthin los ist.
  • dig – alles DNS diagnostizieren
  • dmesg | less oder dmesg | tail oder dmesg | grep -i error – um zu verstehen, was der Linux-Kernel über Probleme denkt.
  • netstat -antp + | grep smth – meine beliebteste Verwendung des netstat-Befehls, der Informationen über TCP-Verbindungen anzeigt. Oft führe ich eine Filterung mit grep durch. Siehe auch das neue ss Befehl (von iproute2 der neue Standard Suite von Linux-Netzwerktools) und lsof wie in lsof -ai tcp -c some-cmd .
  • telnet <host> <port> – ist sehr nützlich für die Kommunikation mit verschiedenen TCP-Diensten (z. B. auf SMTP-, HTTP-Protokollen), außerdem könnten wir die allgemeine Möglichkeit prüfen, sich mit einem TCP-Port zu verbinden.
  • iptables-save (unter Linux) – um das volle zu dumpen iptables-Tabellen
  • ethtool – Abrufen aller Parameter der Netzwerkschnittstellenkarte (Status der Verbindung, Geschwindigkeit, Offload-Parameter …)
  • socat – das Tool der Schweizer Armee zum Testen aller Netzwerkprotokolle (UDP, Multicast, SCTP…). Besonders nützlich (mehr als Telnet) mit ein paar -d Optionen.
  • iperf – zum Testen der Bandbreitenverfügbarkeit
  • openssl (s_client , ocsp , x509 …), um alle SSL/TLS/PKI-Probleme zu beheben.
  • wireshark – das leistungsstarke Tool zum Erfassen und Analysieren des Netzwerkverkehrs, mit dem Sie viele Netzwerkfehler analysieren und abfangen können.
  • iftop – große Benutzer im Netzwerk/Router anzeigen.
  • iptstate (unter Linux) – aktuelle Ansicht der Verbindungsverfolgung der Firewall.
  • arp (oder das neue (Linux) ip neigh ) – zeigt den Status der ARP-Tabelle.
  • route oder die neuere (unter Linux) ip route – den Status der Routing-Tabelle anzeigen.
  • strace (oder truss , dtrace oder tusc je nach System) – ist ein nützliches Tool, das zeigt, welche Systemaufrufe das Problem verarbeitet, es zeigt auch Fehlercodes (errno) an, wenn Systemaufrufe fehlschlagen. Diese Informationen sagen oft genug aus, um das Systemverhalten zu verstehen und ein Problem zu lösen. Alternativ können Sie Haltepunkte für einige Netzwerkfunktionen in gdb verwenden können Sie erfahren lassen, wann sie gemacht werden und mit welchen Argumenten.
  • um Firewall-Probleme unter Linux zu untersuchen:iptables -nvL zeigt, wie viele Pakete von jeder Regel abgeglichen werden (iptables -Z zum Nullstellen der Zähler). Das LOG Das in die Firewall-Ketten eingefügte Ziel ist nützlich, um zu sehen, welche Pakete sie erreichen und wie sie bereits transformiert wurden, wenn sie dort ankommen. Um weiter zu kommen NFLOG (verbunden mit ulogd ) protokolliert das vollständige Paket.
Verwandte:Glob mit numerischer Reihenfolge?
Linux
  1. Fehlerbehebung bei Hardwareproblemen unter Linux

  2. So legen Sie eine statische IP-Adresse fest und konfigurieren das Netzwerk unter Linux

  3. Linux-Desktop verstehen?

  4. Gewusst wie:MTR – Netzwerkkonnektivität verstehen und Fehler beheben

  5. Fehlerbehebung bei langsamer Netzwerkkommunikation oder Verbindungszeitüberschreitungen in Linux

So debuggen Sie Bash-Skripte in Linux und Unix

Ein Leitfaden für Anfänger zur Netzwerkfehlerbehebung unter Linux

Meine Go-to-Fehlerbehebungsbefehle für Linux-Netzwerke

SELinux Fehlerbehebung und Fallstricke

Sysadmin University:Schnelle und schmutzige Linux-Tricks

Linux-nload-Befehl