Netzwerkkonfiguration, Diagnose und allgemeine Linux-Fehlerbehebung sind wesentliche Teile der Systemadministration. Selbst für einen Entwickler, der mit Linux-Systemen arbeitet, Kenntnisse über Linux-Netzwerkbefehle ist ein zusätzlicher Vorteil.
Insbesondere wenn Sie ein DevOps-Ingenieur werden oder Teil von SRE werden möchten, ist es wichtig, alle Linux-Fehlerbehebungsbefehle zu kennen da sie Teil Ihrer täglichen Aktivitäten sein werden.
Dieser Beitrag behandelt die wichtigen Linux-Netzwerk- und Fehlerbehebungsbefehle die nativ in Linux-Systemen verfügbar sind.
Was sind die besten Linux-Netzwerk- und Fehlerbehebungsbefehle?
Es folgt die Liste der nativ verfügbaren Fehlerbehebungsbefehle.
Befehl | Beschreibung |
hostname | Zur Überprüfung und Einstellung des Hostnamens des Servers. |
host | So erhalten Sie Host-DNS-Details |
ping | Überprüft, ob der Remote-Server über das ICMP-Protokoll erreichbar ist. Es zeigt auch die Umlaufzeit von Paketen. |
curl | Ein plattformübergreifendes Dienstprogramm, das zum Übertragen von Daten verwendet wird. Es kann zur Behebung mehrerer Netzwerkprobleme verwendet werden. |
wget | Dienstprogramm zum Herunterladen von Dateien. Kann zur Fehlerbehebung bei Proxy-Verbindungen und Konnektivität verwendet werden. |
ip | Ein Ersatz für ifconfig . Kann verwendet werden, um Informationen über Systemnetzwerkschnittstellen zu konfigurieren und abzurufen |
arp | Dienstprogramm zum Anzeigen und Verwalten des Arp-Cache. |
ss/netstat | Wird hauptsächlich verwendet, um die Verbindungen und die PID auf Ports und Unix-Sockets zu überprüfen. |
tracerout e | Dieses Dienstprogramm verwendet das ICMP-Protokoll und findet die Hops, die beim Lesen des Zielservers beteiligt sind. Es zeigt auch die Zeit an, die zwischen den Sprüngen vergeht. |
mtr | mtr ist eine Mischung aus ping und traceroute . Es bietet auch zusätzliche Informationen wie Zwischenhosts und Reaktionsfähigkeit. |
dig | Hilft Ihnen beim Abrufen der mit einem Domänennamen verknüpften DNS-Einträge. |
nslookup | Befehl ähnlich wie dig. |
nc | Dienstprogramm zum Debuggen von TCP/UDP-Sockets. |
telnet | Es kann verwendet werden, um die Remote-Konnektivität an Ports zu testen |
route | Hilft Ihnen, alle Routing-Tabelleninformationen zu erhalten |
tcpdump | Dieses Dienstprogramm hilft Ihnen, Netzwerkpakete zu erfassen und sie auf Netzwerkprobleme zu analysieren. |
lsof | Listen Sie alle geöffneten Dateien und die Prozessinformationen auf, die sie geöffnet haben |
Lassen Sie uns jeden Befehl verstehen und sehen, wie wir ihn zur Fehlerbehebung unter Linux verwenden können.
Wichtiger Hinweis: Jeder in diesem Beitrag erwähnte Befehl/Dienstprogramm hat viele Optionen und Flags. Jeder Befehl hat eine Manpage und Sie können diese verwenden, um die Flags und Optionen zu identifizieren, die für Ihren Anwendungsfall erforderlich sind. Zum Beispiel für
ip
Befehl, können Sie ihn einfachman ip
eingeben im Terminal, um alle Details zu diesem Befehl zu erhalten.
1. Hostname
Der Befehl Hostname wird verwendet, um den Hostnamen der Maschine anzuzeigen und den Hostnamen festzulegen.
hostname
Sie können den Befehl hostname verwenden, um einen neuen Hostnamen für die Maschine festzulegen. Zum Beispiel
sudo hostname temp.com
Wenn Sie den Hostnamen mit „hostname
”-Befehl, wenn Sie die Maschine neu starten, ändert sich der Hostname in den Namen, der in der Hostnamen-Datei angegeben ist (z. B.:/etc/hostname).
Wenn Sie also den Hostnamen dauerhaft ändern möchten, können Sie den /etc/hosts
verwenden Datei oder relevante Hostname-Datei, die auf dem Server vorhanden ist.
- Für Ubuntu-Rechner können Sie ihn in
/etc/hostname
ändern Datei. - Für RHEL, CentOS und Fedora können Sie es in
/etc/sysconfig/network
ändern Datei.
2. Gastgeber
Der Host-Befehl dient zum Reverse-Lookup von IP- oder DNS-Namen.
Wenn Sie beispielsweise ein DNS finden möchten, das mit einer IP verbunden ist, können Sie die Host-Befehle wie folgt verwenden.
host 8.8.8.8
Sie können auch umgekehrt vorgehen, um die mit dem Domänennamen verknüpfte IP-Adresse zu finden. Zum Beispiel
host devopscube.com
3. pingen
Das Ping-Netzwerkdienstprogramm wird verwendet, um zu prüfen, ob der Remote-Server erreichbar ist oder nicht. Es wird hauptsächlich zur Überprüfung der Konnektivität und Fehlerbehebung im Netzwerk verwendet.
Es enthält die folgenden Details.
- Gesendete und empfangene Bytes
- Gesendete, empfangene und verlorene Pakete
- Ungefähre Roundtrip-Zeit (in Millisekunden)
Der Ping-Befehl hat die folgende Syntax.
ping <IP or DNS>
Zum Beispiel
ping devopscube.com
Um die IP-Adresse zu pingen
ping 8.8.8.8
Wenn Sie die Ping-Ausgabe einschränken möchten, ohne Strg+C zu verwenden, können Sie das „-c“-Flag mit einer Zahl wie unten gezeigt verwenden.
ping -c 1 devopscube.com
4. kräuseln
Das Curl-Dienstprogramm wird hauptsächlich zum Übertragen von Daten von oder zu einem Server verwendet. Sie können es jedoch zur Fehlerbehebung im Netzwerk verwenden.
curl
für die Fehlerbehebung im Netzwerk unterstützt Protokolle wie DICT
, FILE
, FTP
, FTPS
, GOPHER
, HTTP
, HTTPS
, IMAP
, IMAPS
, LDAP
, LDAPS
, MQTT
, POP3
, POP3S
, RTMP
, RTMPS
, RTSP
, SCP
, SFTP
, SMB
, SMBS
, SMTP
, SMTPS
, TELNET
und TFTP
Beispiel:curl
kann die Konnektivität auf Port 22 mit Telnet überprüfen.
curl -v telnet://192.168.33.10:22
Sie können die FTP-Konnektivität mit curl überprüfen.
curl ftp://ftptest.net
Sie können auch Probleme mit der Webserver-Konnektivität beheben.
curl http://devopscube.com -I
5. wget
Das wget
Der Befehl wird hauptsächlich zum Abrufen von Webseiten verwendet.
Sie können wget
verwenden um auch Netzwerkprobleme zu beheben.
Beispielsweise können Sie Probleme mit Proxy-Server-Verbindungen mithilfe von wget beheben.
wget -e use_proxy=yes http_proxy=<proxy_host:port> http://externalsite.com
Sie können überprüfen, ob eine Website aktiv ist, indem Sie die Dateien abrufen.
wget www.google.com
6. ip (ifconfig)
ip
Der Befehl wird verwendet, um Routen und Netzwerkschnittstellen anzuzeigen und zu manipulieren. ip Befehl ist die neuere Version von ifconfig
. ifconfig funktioniert in allen Systemen, aber es ist besser, den Befehl ip anstelle von ifconfig zu verwenden.
Schauen wir uns ein paar Beispiele für ip
an Befehl.
Netzwerkgeräte und -konfiguration anzeigen
ip addr
Sie können diesen Befehl mit Pipes und Grep verwenden, um eine detailliertere Ausgabe wie die IP-Adresse der eth0-Schnittstelle zu erhalten. Es ist sehr nützlich, wenn Sie an Automatisierungstools arbeiten, die erfordern, dass IP dynamisch abgerufen wird.
Der folgende Befehl ruft die IP-Adresse von eth0
ab Netzwerkschnittstelle.
ip a | grep eth0 | grep "inet" | awk -F" " '{print $2}'
Details zu einer bestimmten Schnittstelle abrufen
ip a show eth0
Sie können die Routing-Tabellen auflisten.
ip route
ip route list
7. arp
ARP (Address Resolution Protocol ) zeigt die Cache-Tabelle der IP-Adressen und MAC-Adressen lokaler Netzwerke, mit denen das System interagiert hat.
arp
Beispielausgabe,
[email protected]:~$ arp
Address HWtype HWaddress Flags Mask Iface
10.0.2.3 ether 52:54:00:12:35:03 C eth0
192.168.33.1 ether 0a:00:27:00:00:00 C eth1
10.0.2.2 ether 52:54:00:12:35:02 C eth0
8. ss (netstat)
Die ss
Befehl ist ein Ersatz für netstat
. Sie können immer noch netstat
verwenden Befehl auf allen Systemen.
Mit ss
Befehl erhalten Sie mehr Informationen als netstat
Befehl. Der Befehl ss ist schnell, da er alle Informationen aus dem Kernel-Userspace erhält.
Schauen wir uns nun ein paar Verwendungen von ss
an Befehl.
Alle Verbindungen auflisten
Die Datei „ss
” listet alle TCP-, UDP- und Unix-Socket-Verbindungen auf Ihrem Rechner auf.
[email protected]:~$ ss Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port u_str ESTAB 0 0 * 7594 * 0 u_str ESTAB 0 0 @/com/ubuntu/upstart 7605 * 0 u_str ESTAB 0 0 * 29701 * 0 u_str ESTAB 0 0 /var/run/dbus/system_bus_socket 29702 * 0 tcp ESTAB 0 400 172.31.18.184:ssh 1.22.167.31:61808
Die Ausgabe von ss
Der Befehl wird groß sein, sodass Sie ” ss | less
” Befehl, um die Ausgabe scrollbar zu machen.
TCP-, UDP- und Unix-Sockets herausfiltern
Wenn Sie TCP-, UDP- oder UNIX-Socket-Details herausfiltern möchten, verwenden Sie die Flags „-t“, „-u“ und „-x“ mit dem Befehl „ss“. Es zeigt alle hergestellten Verbindungen zu den spezifischen Ports an. Wenn Sie sowohl verbundene als auch abhörende Ports auflisten möchten, verwenden Sie „a“ mit dem spezifischen Flag, wie unten gezeigt.
ss -ta ss -ua ss -xa
Alle Listening-Ports auflisten
Um alle lauschenden Ports aufzulisten, verwenden Sie das Flag „-l“ mit dem Befehl ss. Um einen bestimmten TCP-, UDP- oder UNIX-Socket aufzulisten, verwenden Sie die Flags „-t“, „-u“ und „-x“ mit „-l“, wie unten gezeigt.
[email protected]:~$ ss -lt State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:ssh *:* LISTEN 0 50 :::http-alt :::* LISTEN 0 50 :::55857 :::* LISTEN 0 128 :::ssh :::* LISTEN 0 50 :::53285 :::* [email protected]:~$
Alle Etablierten auflisten
Um alle eingerichteten Ports aufzulisten, verwenden Sie den state established
wie unten gezeigt kennzeichnen.
ss -t -r state established
Um alle Sockets im Empfangszustand aufzulisten,
ss -t -r state listening
9. Traceroute
Wenn Sie keine traceroute
haben Utility in Ihrem System oder Server, können Sie es aus dem nativen Repository installieren.
traceroute
ist ein Dienstprogramm zur Fehlerbehebung im Netzwerk. Mit Traceroute können Sie die Anzahl der Hops ermitteln, die ein bestimmtes Paket benötigt, um das Ziel zu erreichen.
Zum Beispiel
traceroute google.com
Hier ist die Ausgabe.
traceroute to google.com (173.194.33.163), 30 hops max, 60 byte packets 1 ec2-50-112-0-84.us-west-2.compute.amazonaws.com (50.112.0.84) 1.974 ms 1.895 ms 1.899 ms 2 100.64.1.247 (100.64.1.247) 1.414 ms 100.64.1.137 (100.64.1.137) 1.127 ms 100.64.1.97 (100.64.1.97) 1.313 ms 3 100.64.0.198 (100.64.0.198) 1.443 ms 100.64.0.62 (100.64.0.62) 2.160 ms 100.64.0.60 (100.64.0.60) 2.116 ms 10 66.249.94.214 (66.249.94.214) 6.313 ms 7.104 ms 209.85.249.34 (209.85.249.34) 5.986 ms 11 209.85.244.65 (209.85.244.65) 6.157 ms 6.341 ms 6.574 m. . 12 sea09s18-in-f3.1e100.net (173.194.33.163) 6.302 ms 6.517 ms 6.071 ms [email protected]:~$
Die obige Ausgabe zeigt die Hop-Anzahl (12), um google.com vom devopscube AWS ec2-Server zu erreichen.
10. mtr
Der mtr
Dienstprogramm ist ein Netzwerkdiagnosetool zur Behebung von Netzwerkengpässen. Es kombiniert die Funktionalität von beiden ping
und traceroute
Beispielsweise zeigt der folgende Befehl die traceroute
Ausgabe in Echtzeit.
mtr google.com
Hier ist die Ausgabe.
mtr-Bericht
Sie können einen Bericht mit dem Flag –report generieren. Wenn Sie den mtr-Bericht ausführen, sendet er 10 Pakete an das Ziel und erstellt den Bericht.
mtr -n --report google.com
11. graben
Wenn Sie eine Aufgabe im Zusammenhang mit der DNS-Suche haben, können Sie „dig
“-Befehl, um die DNS-Nameserver abzufragen.
Alle DNS-Einträge mit dig abrufen
Der folgende Befehl gibt alle DNS-Einträge und TTL-Informationen von twitter.com
zurückdig twiter.com ANY
Verwenden Sie +short
um die Ausgabe ohne Ausführlichkeit zu erhalten.
dig google.com ANY +short
Speziellen DNS-Eintrag mit dig abrufen
Zum Beispiel, wenn Sie den A record
erhalten möchten Für den jeweiligen Domänennamen können Sie den Befehl dig verwenden. +short
wird die Informationen ohne Ausführlichkeit bereitstellen
dig www.google.com A +short
Ebenso können Sie die anderen Datensatzinformationen separat mit den folgenden Befehlen abrufen.
dig google.com CNAME +short
dig google.com MX +short
dig google.com TXT +short
dig google.com NS +short
Umgekehrter DNS-Lookup mit dig
Mit dem folgenden Befehl können Sie eine umgekehrte DNS-Suche mit dig durchführen. Ersetzen Sie 8.8.8.8
mit der erforderlichen IP
dig -x 8.8.8.8
12. nslookup
Nslookup Das Dienstprogramm (Name Server Lookup) wird verwendet, um die DNS-Einträge zu überprüfen. Es ähnelt dem Befehl dig.
Um die DNS-Einträge einer Domain zu überprüfen, können Sie den folgenden Befehl verwenden.
nslookup google.com
Sie können auch eine Rückwärtssuche mit der IP-Adresse durchführen.
nslookup 8.8.8.8
Um alle DNS-Einträge eines Domainnamens abzurufen, können Sie Folgendes verwenden.
nslookup -type=any google.com
Ebenso können Sie Datensätze wie mx
abfragen , soa
usw.
13. nc (netcat)
Der nc
(netcat) command ist bekannt als die Schweizer Armee der Netzwerkkommandos.
Mit nc
, können Sie die Konnektivität eines Dienstes überprüfen, der auf einem bestimmten Port ausgeführt wird.
Zum Beispiel, um zu prüfen, ob ssh
Port geöffnet ist, können Sie den folgenden Befehl verwenden.
nc -v -n 192.168.33.10 22
netcat
kann auch für die Datenübertragung über TCP/UDP und das Scannen von Ports verwendet werden.
Das Scannen von Ports wird in Cloud-Umgebungen nicht empfohlen. Sie müssen den Cloud-Anbieter auffordern, Port-Scanning-Vorgänge in Ihrer Umgebung durchzuführen.
14. telnet
Der Telnet-Befehl wird verwendet, um Fehler bei den TCP-Verbindungen an einem Port zu beheben.
Verwenden Sie den folgenden Befehl, um die Port-Konnektivität mit Telnet zu überprüfen.
telnet 10.4.5.5 22
15. Strecke
Die „route
“-Befehl wird verwendet, um die Details der Routing-Tabelle für Ihr System abzurufen und zu manipulieren. Sehen wir uns einige Beispiele für den route-Befehl an.
Alle Routen auflisten
Führen Sie die „route
“ aus ” Befehl ohne Argumente, um alle vorhandenen Routen in Ihrem System oder Server aufzulisten.
[email protected]:~$ route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default ip-172-31-16-1. 0.0.0.0 UG 0 0 0 eth0 172.17.0.0 * 255.255.0.0 U 0 0 0 docker0 172.31.16.0 * 255.255.240.0 U 0 0 0 eth0 [email protected]:~$
Wenn Sie die vollständige Ausgabe in numerischer Form ohne Hostnamen erhalten möchten, können Sie das Flag „-n“ mit dem Befehl route verwenden.
[email protected]:~$ route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 172.31.16.1 0.0.0.0 UG 0 0 0 eth0 172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0 172.31.16.0 0.0.0.0 255.255.240.0 U 0 0 0 eth0 [email protected]:~$
16. tcpdump
Der tcpdump
Der Befehl wird hauptsächlich zur Fehlerbehebung im Netzwerkverkehr verwendet.
Hinweis: Um die Ausgabe von
tcpdump
zu analysieren Der Befehl erfordert etwas Einarbeitung, daher würde es den Rahmen dieses Artikels sprengen, ihn zu erklären.
tcpdump
Der Befehl arbeitet mit den Netzwerkschnittstellen des Systems. Sie müssen also Administratorrechte verwenden, um den Befehl auszuführen.
Alle Netzwerkschnittstellen auflisten
Verwenden Sie den folgenden Befehl, um alle Schnittstellen aufzulisten.
sudo tcpdump --list-interfaces
Pakete auf spezifischer Schnittstelle erfassen
Um den Dump von Paketen auf einer bestimmten Schnittstelle zu erhalten, können Sie den folgenden Befehl verwenden.
Hinweis: drücken Sie
ctrl + c
um die Erfassung der Pakete zu stoppen.
sudo tcpdump -i eth0
Um die Paketerfassung einzuschränken, können Sie den -c
verwenden Flagge mit der Nummer.
Zum Beispiel
sudo tcpdump -i eth0 -c 10
Pakete auf allen Schnittstellen erfassen
Um Pakete auf allen Schnittstellen zu erfassen, verwenden Sie any
wie unten gezeigt kennzeichnen.
sudo tcpdump -i any
17. lsof
lsof
ist ein Befehl, der bei der täglichen Linux-Fehlerbehebung verwendet wird. Dieser Befehl ist gleichermaßen wichtig für jeden, der mit Linux-Systemen arbeitet.
Um alle geöffneten Dateien aufzulisten, führen Sie lsof
aus Befehl.
lsof
Einer der häufigsten Fehler von Entwicklern und DevOps-Ingenieuren ist „Fehler bei der Bindung fehlgeschlagen:Adresse wird bereits verwendet “. Sie können die einem Port zugeordnete Prozess-ID mit dem folgenden Befehl finden. Dann können Sie den Prozess beenden, um den Port freizugeben.
lsof -i :8080
Dienstprogramme zur Fehlerbehebung bei Netzwerken von Drittanbietern
Es sind weitere Befehlszeilen-Dienstprogramme zur Netzwerkfehlerbehebung von Drittanbieterlösungen verfügbar.
Sie müssen sie separat installieren und für Ihre Fehlerbehebungszwecke verwenden. Aus Gründen der Sicherheitskonformität erlaubt Ihnen nicht jede Organisation, dies zu tun. Wenn Sie jedoch die Option haben, Tools von Drittanbietern zu verwenden, können Sie diese erkunden.
Schlussfolgerung
In diesem Artikel haben wir die wichtigen Linux-Befehlszeilenprogramme für Netzwerkfehlerbehebung und -konfiguration behandelt
Wenn Sie mit Systemadministration, DevOps oder SRE-Rollen beginnen, ist es wichtig, sich mit diesen Dienstprogrammen vertraut zu machen, um die Projekte zu unterstützen, an denen Sie arbeiten.
Jedes Dienstprogramm hat viele Funktionalitäten und Sie können weitere Informationen finden, um Ihre Anforderungen zu erfüllen.
Wenn Sie der Meinung sind, dass wir wichtige Befehle verpasst haben, teilen Sie uns dies im Kommentarbereich mit.
Wenn Sie Shell-Skripting lernen möchten, lesen Sie auch unseren Leitfaden zum Erlernen von Shell-Skripting. Wenn Sie Entwickler sind, lesen Sie meinen Leitfaden zu Linux-Befehlen, die jeder Entwickler kennen sollte.