Von Zeit zu Zeit waren Linux- und Unix-Benutzer mit verschiedenen Netzwerkproblemen konfrontiert. Viele dieser Probleme werden hier und in einigen anderen Fehlerbehebungsforen vorgestellt, sie sind jedoch sehr konkret und enthalten viele zusätzliche technische Informationen. Manchmal ist es schwierig, den Hauptgrund und den wahren Grund für das Verhalten fehlerhafter Systeme zu verstehen.
Mit dieser Frage möchte ich eine Community-Wiki- Seite starten, auf der wir allgemeine Informationen zur Fehlerbehebung und zum Debuggen in unserem Netzwerk erhalten. Ich hoffe, die Linux- und Unix-Benutzer konnten auf dieser Seite ihre Netzwerkprobleme leichter erkennen und lösen ("teilen und überwinden").
Das übergeordnete Element dieser Seite sollte die bewährte Methode zur Diagnose von Problemen sein . Hier sollten wir uns jedoch auf die Behebung von Netzwerkproblemen aus dem Benutzer- und Kernelbereich konzentrieren.
Ich nehme an, wenn Sie:
- Teilen Sie die Informationen zur Verwendung eines großartigen Netzwerkdiagnosetools mit konkreten Verwendungsbeispielen und Beispielen für Netzwerkfehler, die Sie beim Auffinden unterstützen.
- Teilen Sie den Link zu dem großartigen Netzwerk-Tutorial, das mit diesem Thema verbunden ist
- Erzählen Sie von einer allgemeinen Methode oder einem Rezept, mit dem sich einige Netzwerkprobleme lösen lassen
- Geben Sie Informationen zu Ihrem Tool-Set für das Debuggen und die Fehlerbehebung im Netzwerk frei
es würde perfekt zu diesem Thema passen.
Ich beginne mit dem Teilen des Links zu verschiedenen Diagnosetools und dem 12 Jahre alten einfachen Tutorial . Auch Archlinux Tutorial scheint aktuelle Informationen zu unserem Thema zu haben. Und um in das Linux Networking einzutauchen, müssen wir unbedingt das Linux Networking-HOWTO besuchen .
Antworten:
Ich denke, allgemeine Prinzipien der Netzwerk-Fehlerbehebung sind:
Normalerweise erhalte ich alle erforderlichen Informationen mit allen erforderlichen Tools und versuche, diese Informationen mit meiner Erfahrung abzugleichen. Die Entscheidung, welche Ebene des Netzwerkstapels den Fehler enthält, hilft, unwahrscheinliche Varianten auszuschließen. Die Erfahrung anderer 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. Es scheint, dass es eine magische Funktion in meinem Gehirn gibt
SolveNetworkProblem(information_about_system_state, my_experience, people_experience)
, die manchmal genau die richtige Antwort liefert und manchmal auch fehlschlägt (wie hier: TCP stirbt auf einem Linux-Laptop ).Normalerweise verwende ich Utils aus diesem Set für das Netzwerk-Debugging:
ifconfig
(oderip link
,ip addr
) - zum Abrufen von Informationen zu Netzwerkschnittstellenping
- zur Überprüfung, ob der Zielhost von meinem Computer aus erreichbar ist.ping
Dies könnte auch für die grundlegende DNS-Diagnose verwendet werden. Wir könnten den Host anhand der IP-Adresse oder des Hostnamens anpingen und dann entscheiden, ob DNS überhaupt funktioniert. Und danntraceroute
odertracepath
oder ummtr
zu schauen, was auf dem Weg dahin los ist.dig
- diagnostizieren Sie alles DNSdmesg | less
oderdmesg | tail
oderdmesg | grep -i error
- um zu verstehen, was der Linux-Kernel von Problemen hält.netstat -antp
+| grep smth
- Meine häufigste Verwendung des Befehls netstat, mit dem Informationen zu TCP-Verbindungen angezeigt werden. Oft filtere ich mit grep. Siehe auch den neuenss
Befehl (ausiproute2
der neuen Standardsuite der Linux-Netzwerktools) undlsof
wie inlsof -ai tcp -c some-cmd
.telnet <host> <port>
- ist sehr nützlich für die Kommunikation mit verschiedenen TCP-Diensten (z. B. über SMTP, HTTP-Protokolle). Wir könnten auch die allgemeine Möglichkeit prüfen, eine Verbindung zu einem TCP-Port herzustellen.iptables-save
(unter Linux) - um die vollständigen iptables-Tabellen zu sichernethtool
- alle Parameter der Netzwerkkarte abrufen (Status der Verbindung, Geschwindigkeit, Auslagerungsparameter ...)socat
- Das Schweizer Armee-Tool zum Testen aller Netzwerkprotokolle (UDP, Multicast, SCTP ...). Besonders nützlich (mehr als Telnet) mit ein paar-d
Optionen.iperf
- um die Bandbreitenverfügbarkeit zu testenopenssl
(s_client
,ocsp
,x509
...) debuggen alle SSL / TLS / PKI Fragen.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 ARP-Tabellenstatus an.route
oder die neuere (unter Linux)ip route
- zeigt den Status der Routingtabelle an.strace
(odertruss
,dtrace
odertusc
je nach System) - ist ein nützliches Tool, das anzeigt, welche Systemaufrufe den Problemprozess ausführen. Außerdem werden Fehlercodes (errno) angezeigt, wenn Systemaufrufe fehlschlagen. Diese Informationen sagen oft genug aus, um das Systemverhalten zu verstehen und ein Problem zu lösen. Alternativ können Sie durch die Verwendung von Haltepunkten für einige Netzwerkfunktionen ingdb
herausfinden, wann sie erstellt wurden und mit welchen Argumenten.iptables -nvL
Zeigt an, wie viele Pakete von jeder Regel abgeglichen werden (iptables -Z
um die Zähler auf Null zu setzen). DasLOG
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 kommenNFLOG
(verbunden mitulogd
) wird das volle Paket protokolliert.quelle
nmap
. Das Profil der offenen Ports auf einem Computer kann Ihnen schnell Hinweise geben, ob Sie beispielsweise einen Linux- oder einen Windows-Server verwenden.tcpdump
. Als Standardpaketanalysator für TCP.Eine überraschende Anzahl von "Netzwerkproblemen" resultiert aus DNS-Problemen der einen oder anderen Art. Die anfängliche Fehlerbehebung sollte verwendet
ping -n w.x.y.z
werden, um die DNS-Auflösung eines Hostnamens auszulassen und nur die IP-Konnektivität zu überprüfen. Verwenden Sie anschließendroute -n
, um die Standard-IP-Route ohne DNS-Auflösung zu überprüfen.Nach IP - Konnektivität zu überprüfen und Routing
nslookup
,host
unddig
liefern Informationen können. Denken Sie daran, dass "Sperren" darauf hinweisen kann, dass DNS-Zeitüberschreitungen auftreten.Vergessen Sie nicht, Existenz und Inhalt von zu überprüfen
/etc/resolv.conf
. DHCP-Clients ändern diese Datei bei jedem Lease und machen manchmal einen Fehler. Wenn der Speicherplatz knapp ist, findet möglicherweise keine Aktualisierung statt.quelle
Verkabelungsprobleme können auftreten. Wenn Sie Zugriff auf die Hardware haben, stellen Sie sicher, dass alle Kabel eingesteckt und mechanisch eingerastet sind. Wenn Sie Router oder Ethernet-Schnittstellen sehen, vergewissern Sie sich, dass die Verbindungsleuchten leuchten.
Aus der Ferne muss man sich auf
ethtool
und verlassenmii-tool
."Verbindung erkannt: ja" ist gut, aber 10 MBit / s und Halbduplex sind nicht gut, da die Netzwerkkarte auf diesem Computer eine bessere Leistung erbringen kann. Ich muss herausfinden, ob die Netzwerkkarte oder das Kabel veraltet ist. Ein anderer Computer, der an denselben Router angeschlossen ist, meldet 100 MBit / s, Vollduplex.
quelle