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

5 Linux-Befehle zur Fehlerbehebung im Netzwerk

Netzwerkkonfiguration und Fehlerbehebung sind wichtige Aufgaben, die Systemadministratoren regelmäßig durchführen müssen. Einige dieser Aufgaben können herausfordernd sein. Wenn Sie jedoch mit Verbindungsproblemen umgehen, hilft Ihnen die Verwendung der richtigen Tools dabei, die Ergebnisse schneller und konsistenter zu erzielen.

Der ip-Befehl

Die ip command ist ein Allround-Dienstprogramm zum Anzeigen und Bearbeiten von Netzwerkobjekten auf Ihrem Linux-System, einschließlich IP-Adressen, Routen und ARP-Tabellen. Es ist ein nützliches Tool zum Konfigurieren des Netzwerks sowie zum Beheben von Netzwerkverbindungsproblemen.

Die ip Der Befehl ersetzt die Funktionalität vieler Befehle, die mit den alten net-tools bereitgestellt wurden Paket wie ifconfig , route , und arp , aber es fügt viele andere Funktionen hinzu.

In seiner einfachsten Form können Sie einfach ip ausführen und Bereitstellen eines zu manipulierenden Netzwerkobjekts, wie z. B. einer Adresse, eines Links oder einer Route, und eines Unterbefehls zum Ausführen einer Aktion. Wenn Sie keinen Unterbefehl angeben, werden viele Objekte standardmäßig auf show gesetzt Unterbefehl, um Informationen zu diesem Objekt anzuzeigen.

Hier ist die grundlegende Syntax:

ip <OBJECT> [COMMAND]

Um beispielsweise den Verbindungsstatus auf allen Netzwerkgeräten anzuzeigen, führen Sie ip link show aus :

$ ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 52:54:00:b5:c7:2b brd ff:ff:ff:ff:ff:ff

Weil show der standardmäßige Unterbefehl ist, können Sie dasselbe Ergebnis auch erhalten, indem Sie ip link ausführen oder sogar ip l (Viele Objekte erkennen eine Abkürzung).

Die ip Befehl verwaltet viele Objekte. Die wichtigsten sind:

  • link oder l - steuert den Status von Netzwerkgeräten
  • address oder a - manipuliert IP-Adressen auf Geräten
  • route oder r - verarbeitet Routing-Tabelleneinträge
  • neighbor oder n - steuert ARP-Tabelleneinträge

Sie können eine vollständige Liste der Objekte und Befehle anzeigen, indem Sie ip help ausführen .

Einige nützliche Beispiele des ip-Befehls

Netzwerkstatistik anzeigen -s im menschenlesbaren Format -h für eine bestimmte Netzwerkschnittstelle:

$ ip -s -h l show dev enp1s0
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 52:54:00:b5:c7:2b brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped overrun mcast   
    820M       303k     0       182k    0       0       
    TX: bytes  packets  errors  dropped carrier collsns 
    19.9M      60.9k    0       0       0       0    

Zeigt die IP-Adressen aller Schnittstellen:

$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:b5:c7:2b brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.169/24 brd 192.168.122.255 scope global noprefixroute enp1s0
       valid_lft forever preferred_lft forever
    inet6 fe80::7ecf:5cc8:5c1f:1009/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

Zeigt die IP-Adresse einer einzelnen Schnittstelle an, z. B. enp1s0 :

$ ip a show dev enp1s0

Fügen Sie einer Schnittstelle eine weitere IP-Adresse hinzu (erfordert sudo oder root Benutzer):

$ sudo ip a change 192.168.122.170 dev enp1s0

Zeigen Sie die Routing-Tabelle an:

$ ip route
default via 192.168.122.1 dev enp1s0 proto static metric 100 
192.168.122.0/24 dev enp1s0 proto kernel scope link src 192.168.122.169 metric 100

Route hinzufügen (Standard-Gateway):

$ sudo ip route add default via 192.168.122.1 dev enp1s0

Die ip Der Befehl ist eine untergeordnete Schnittstelle zum Konfigurieren von Netzwerkoptionen auf Ihrem Linux-System. Obwohl es als Tool zur Fehlerbehebung nützlich ist, kann es schwieriger sein, das Netzwerk damit einzurichten. Aus diesem Grund bieten viele Distributionen eine Schnittstelle auf höherer Ebene, um dieselbe Aufgabe zu erfüllen. Sehen wir uns als Nächstes das Network Manager-Konfigurationstool nmcli an , das eine integrierte Methode zum Konfigurieren des Netzwerks bietet.

Das nmcli-Tool

Network Manager ist eine Netzwerkkonfigurationsanwendung, die standardmäßig mit vielen Linux-Distributionen, einschließlich RHEL und Fedora, verfügbar ist. Network Manager wird als Daemon ausgeführt, und sein Ziel ist es, eine Schnittstelle auf höherer Ebene bereitzustellen, um die Netzwerkkonfiguration einfacher und stärker zu automatisieren.

Es ist üblich, dass Benutzer von Desktop-Linux oder Servern mit einer grafischen Benutzeroberfläche Network Manager-GUI-Clients verwenden, um das Netzwerk zu konfigurieren. Für Fälle, in denen Sie mit Headless-Servern arbeiten oder die Konfiguration über Shell-Skripte automatisieren möchten, ist die Datei nmcli Werkzeug ist praktisch.

Network Manager und nmcli sind eine vielseitige Kombination, mit der Sie viele Netzwerkoptionen überprüfen und konfigurieren können. Die grundlegende Syntax für nmcli ist:

nmcli <OBJECT> [COMMAND] [ARGUMENTS]

Die häufigsten Objekte sind:

  • general - Zeigt den Status und die Berechtigungen von Network Manager an
  • networking - Zeigt, aktiviert und deaktiviert das Netzwerk
  • radio - Zeigt, aktiviert und deaktiviert WiFi und WWAN
  • device - zeigt und manipuliert den Status von Netzwerkgeräten
  • connection - verwaltet Network Manager-Verbindungsprofile

Es ist unmöglich, alle Optionen in einem einzigen Blogbeitrag abzudecken. Sehen wir uns einige Beispiele zur Verwendung von nmcli an für allgemeine Netzwerkkonfigurationsaufgaben. Weitere Beispiele finden Sie auf der offiziellen nmcli-examples-Seite oder in den Manpages mit man nmcli-examples .

Überprüfen Sie den Status der Netzwerkgeräte:

$ nmcli device status
DEVICE  TYPE      STATE      CONNECTION 
enp1s0  ethernet  connected  enp1s0
enp7s0  ethernet  disconnected  --
lo      loopback  unmanaged  -- 

Alle Verbindungsprofile anzeigen:

$ nmcli con show 
NAME    UUID                                  TYPE      DEVICE 
enp1s0  1bb35a4a-ad02-4cad-978a-4a97ea9527cb  ethernet  enp1s0

Details zu einer bestimmten Verbindung anzeigen (z. B. enp1s0 ):

$ nmcli connection show enp1s0 

Abrufen bestimmter Parameter von einer Verbindung (z. B. IP-Adresse und DNS):

$ nmcli -g ip4.address,ip4.dns connection show enp1s0
192.168.122.169/24
192.168.122.1

Verbindungsparameter ändern, z. B. von DHCP auf manuelle Verbindung umstellen:

$ sudo nmcli con mod enp1s0 ipv4.method manual ipv4.addresses 192.168.122.169/24 ipv4.dns 192.168.122.1 ipv4.gateway 192.168.122.1

Starten Sie die Verbindung neu, um neue Optionen zu aktivieren:

$ sudo nmcli con down enp1s0
$ sudo nmcli con up enp1s0

Fügen Sie ein neues Verbindungsprofil hinzu:

$ sudo nmcli connection add con-name enp7s0 ifname enp7s0 type ethernet ip4 192.168.64.88/24 

nmcli ermöglicht Ihnen auch, ein Verbindungsprofil interaktiv zu bearbeiten. Diese Schnittstelle bietet Hilfe und automatische Vervollständigung über den Tab Taste, die Sie durch die vielen verfügbaren Optionen führt. Aktivieren Sie den Editor mit nmcli connection edit CONNECTION-NAME :

$ sudo nmcli connection edit enp7s0 

===| nmcli interactive connection editor |===

Editing existing '802-3-ethernet' connection: 'enp7s0'

Type 'help' or '?' for available commands.
Type 'print' to show all the connection properties.
Type 'describe [<setting>.<prop>]' for detailed property description.

You may edit the following settings: connection, 802-3-ethernet (ethernet), 802-1x, dcb, sriov, ethtool, match, ipv4, ipv6, tc, proxy.


Im Editor können Sie mit set bestimmte Parameter definieren Befehl. Verwenden Sie den Tab Autovervollständigung drücken, um alle verfügbaren Optionen zu sehen:

nmcli> set ipv4.<PRESS TAB>
addresses            dhcp-hostname        dhcp-timeout         dns-search           may-fail             routes
dad-timeout          dhcp-hostname-flags  dns                  gateway              method               route-table
dhcp-client-id       dhcp-iaid            dns-options          ignore-auto-dns      never-default        routing-rules
dhcp-fqdn            dhcp-send-hostname   dns-priority         ignore-auto-routes   route-metric         
nmcli> set ipv4.addresses 192.168.64.90/24

Dann können Sie print die aktuellen Werte:

nmcli> print ipv4.addresses 
ipv4.addresses: 192.168.64.88/24, 192.168.64.90/24

Wenn Sie Ihre Änderungen abgeschlossen haben, save sie zur Verbindung und quit um den Vorgang abzuschließen:

nmcli> save
Connection 'enp7s0' (94170029-5620-4f90-ad78-704b21480b1a) successfully updated.
nmcli> quit

Starten Sie abschließend die Verbindung neu, damit die Änderungen wirksam werden.

Network Manager und nmcli sind eine Komplettlösung für die Netzwerkkonfiguration. Wenn Sie es noch nie zuvor verwendet haben, beginnen Sie mit einigen der grundlegenden Befehle und gehen Sie nach und nach zu komplexeren Einstellungen über. Schlagen Sie in den Manpages und Beispielen nach, um bestimmte Aufgaben auszuführen.

Sehen wir uns als Nächstes einige Befehle an, die Ihnen bei der Netzwerkfehlerbehebung helfen, beginnend mit der Namensauflösung.

Der nslookup-Befehl

Bei der Verwaltung von Verbindungsproblemen bereitet die DNS-Namensauflösung oft Kopfschmerzen. Die nslookup Dienstprogramm hilft Ihnen bei der Überprüfung und Fehlerbehebung der DNS-Namensauflösung.

Dieser Befehl ist mit den bind-utils verfügbar Paket auf RHEL8- und Fedora-Systemen. Installieren Sie es mit dnf :

$ sudo dnf install -y bind-utils

Um die Namensauflösung für einen bestimmten Host schnell zu überprüfen, verwenden Sie nslookup mit dem Hostnamen als Argument. Der Befehl verwendet die Standard-DNS-Konfiguration für die Namensauflösung:

$ nslookup redhat.com
Server:        192.168.122.1
Address:    192.168.122.1#53

Non-authoritative answer:
Name:    redhat.com
Address: 209.132.183.105

Wenn die Namensauflösung fehlschlägt, können Sie einen alternativen Nameserver für die Auflösung verwenden, indem Sie seine Adresse als drittes Argument angeben:

$ nslookup redhat.com 192.168.0.9
Server:        192.168.0.9
Address:    192.168.0.9#53

Non-authoritative answer:
Name:    redhat.com
Address: 209.132.183.105

Diese Informationen sind nützlich für die Fehlerbehebung, da sie dabei helfen, festzustellen, ob das Problem lokal auf einen bestimmten Server zurückzuführen ist oder auf ein umfassenderes Problem zurückzuführen ist.

Sie können es auch verwenden, um Reverse-DNS-Abfragen auszuführen, indem Sie die IP-Adresse anstelle eines Hostnamens angeben:

$ nslookup 209.132.183.105
105.183.132.209.in-addr.arpa    name = redirect.redhat.com.

Die nslookup Dienstprogramm ist ein nützliches Tool zur Behebung von Netzwerkproblemen im Zusammenhang mit der DNS-Namensauflösung. Sehen wir uns als Nächstes die Fehlerbehebung bei lokalen Netzwerk-Sockets an.

Das Dienstprogramm ss

Eine weitere häufige Aufgabe bei der Behebung von Netzwerkkonnektivitätsproblemen besteht darin, festzustellen, ob eine Verbindung hergestellt wurde oder ein bestimmter Dienst auf einem Server verfügbar ist.

Die ss Befehl, kurz für Socket-Statistiken , ist ein praktisches Tool, das Netzwerk-Socket-Informationen anzeigt. Es ist der moderne Ersatz für netstat das eine ähnliche Funktionalität bietet, aber einige zusätzliche Features enthält.

Verwenden Sie ss ohne Optionen, um die vollständige Liste aller eingerichteten Netzwerk-Sockets für die Socket-Typen TCP, UDP und UNIX anzuzeigen.

$ ss
Netid    State     Recv-Q    Send-Q                                               Local Address:Port              Peer Address:Port
u_str    ESTAB     0         0                                                                * 25812                        * 25811
u_str    ESTAB     0         0                                      /run/systemd/journal/stdout 23604                        * 23603
... TRUNCATED OUTPUT
u_str    ESTAB     0         0                                                                * 22566                        * 22171
icmp6    UNCONN    0         0                                                                *:ipv6-icmp                    *:*   
icmp6    UNCONN    0         0                                                                *:ipv6-icmp                    *:*   
tcp      ESTAB     0         0                                                  192.168.122.169:ssh              192.168.122.1:45626

Da der Standardbefehl alle hergestellten Netzwerkverbindungen anzeigt, kann diese Liste auf einem ausgelasteten Computer mit über tausend Einträgen umfangreich sein. Um Ihnen bei der Fehlerbehebung zu helfen, ss bietet mehrere Filteroptionen.

Sie können Socket-Informationen für bestimmte Socket-Typen mit den folgenden Befehlszeilenparametern anzeigen:-t für TCP -u für UDP und -x für UNIX.

Zeigen Sie beispielsweise TCP-Socket-Informationen mit ss -t an :

$ ss -t
State           Recv-Q            Send-Q                         Local Address:Port                        Peer Address:Port
ESTAB           0                 0                            192.168.122.169:ssh                        192.168.122.1:45626

Sie können die Liste auch nach Quell- oder Zielhostname oder IP-Adresse filtern. Hier ist beispielsweise eine Liste der hergestellten Verbindungen für die Ziel-IP-Adresse 192.168.122.1:

$ ss dst 192.168.122.1
Netid         State         Recv-Q          Send-Q                     Local Address:Port                    Peer Address:Port
tcp           ESTAB         0               0                        192.168.122.169:ssh                    192.168.122.1:45626

Diese Befehle sind nützlich, um Probleme mit der Netzwerkkonnektivität im Allgemeinen oder zwischen bestimmten Hosts im Netzwerk zu beheben. Eine weitere praktische Anwendung für ss ist zu überprüfen, ob Netzwerkdienste auf dem lokalen Computer mit der richtigen Adresse und dem richtigen Port lauschen. Um lauschende Sockets zu überprüfen, verwenden Sie die Option -l :

$ ss -l
Netid   State    Recv-Q   Send-Q                           Local Address:Port                     Peer Address:Port
nl      UNCONN   0        0                                         rtnl:NetworkManager/909                   *
nl      UNCONN   0        0                                         rtnl:systemd-resolve/1122                 *
... TRUNCATED OUTPUT
udp     UNCONN   0        0                                      0.0.0.0:hostmon                       0.0.0.0:*
udp     UNCONN   0        0                                127.0.0.53%lo:domain                        0.0.0.0:
udp     UNCONN   0        0                                    127.0.0.1:323                           0.0.0.0:*
udp     UNCONN   0        0                                         [::]:hostmon                          [::]:*
udp     UNCONN   0        0                                        [::1]:323                              [::]:*
tcp     LISTEN   0        128                                    0.0.0.0:ssh                           0.0.0.0:*
tcp     LISTEN   0        128                                    0.0.0.0:hostmon                       0.0.0.0:*
tcp     LISTEN   0        128                                       [::]:ssh                              [::]:
tcp     LISTEN   0        128                                       [::]:hostmon                          [::]:*

Sie können dieselben oben beschriebenen Filteroptionen verwenden, um bestimmte Socket-Typen zu filtern. Um beispielsweise alle lauschenden TCP-Sockets aufzulisten, geben Sie Folgendes ein:

$ ss -lt
State            Recv-Q            Send-Q                       Local Address:Port                          Peer Address:Port
LISTEN           0                 128                                0.0.0.0:ssh                                0.0.0.0:*
LISTEN           0                 128                                0.0.0.0:hostmon                            0.0.0.0:
LISTEN           0                 128                                   [::]:ssh                                   [::]:
LISTEN           0                 128                                   [::]:hostmon                               [::]:

Statt den Dienstnamen anzuzeigen, wie ssh oder hostmon , ss kann Portnummern mit -n anzeigen Möglichkeit:

$ ss -ltn
State             Recv-Q            Send-Q                       Local Address:Port                        Peer Address:Port
LISTEN            0                 128                                0.0.0.0:22                               0.0.0.0:
LISTEN            0                 128                                0.0.0.0:5355                             0.0.0.0:
LISTEN            0                 128                                   [::]:22                                  [::]:
LISTEN            0                 128                                   [::]:5355                                [::]:

Schließlich ist eine weitere nützliche Option -p um prozessbezogene Informationen wie Benutzername und Prozess-ID (PID) anzuzeigen. Einige Dienste erfordern möglicherweise erhöhte Berechtigungen über sudo oder als root Prozessinformationen auflisten:

$ sudo ss -tnlp
State      Recv-Q     Send-Q         Local Address:Port           Peer Address:Port
LISTEN     0          128                  0.0.0.0:22                  0.0.0.0:*         users:(("sshd",pid=919,fd=5))
LISTEN     0          128                  0.0.0.0:5355                0.0.0.0:*         users:(("systemd-resolve",pid=1122,fd=13))
LISTEN     0          128                     [::]:22                     [::]:*         users:(("sshd",pid=919,fd=7))
LISTEN     0          128                     [::]:5355                   [::]:*         users:(("systemd-resolve",pid=1122,fd=15))

Die ss tool ist ein wesentlicher Befehl in der sysadmin-Toolbox für Netzwerk-Fehlerbehebungsaufgaben. Als nächstes werfen wir einen Blick auf tracepath um die Netzwerkkonnektivität zwischen Hosts zu verfolgen.

Der Tracepath-Befehl

Der tracepath Der Befehl ist ein Netzwerk-Fehlerbehebungstool, das den Netzwerkverbindungspfad zwischen dem lokalen Host und einem Remote-Host anzeigt und alle Router identifiziert, die zum Weiterleiten des Datenverkehrs zwischen ihnen verwendet werden.

Falls Sie keine Verbindung zu einem Netzwerkdienst auf einem entfernten Host herstellen können, tracepath hilft Ihnen festzustellen, wo das Problem liegt.

tracepath ist ein Ersatz für traceroute , bietet eine ähnliche Funktionalität. Der Hauptunterschied besteht darin, dass tracepath verwendet zufällige UDP-Ports anstelle des ICMP-Protokolls für die Ablaufverfolgung und erfordert daher keine erhöhten Berechtigungen zur Ausführung.

Geben Sie für die grundlegende Verwendung den Hostnamen oder die IP-Adresse des Zielhosts an. Sie können auch die Option -n angeben IP-Adressen für die Router anstelle ihrer Namen anzuzeigen:

$ tracepath -n sat65server
 1?: [LOCALHOST]                      pmtu 1500
 1:  192.168.122.1                                         0.415ms 
 1:  192.168.122.1                                         0.299ms 
 2:  192.168.10.10                                         0.904ms 
 3:  192.168.88.1                                          1.127ms 
 4:  192.168.0.95                                          2.020ms
     Resume: pmtu 1500 

Wenn tracepath kann keine Verbindung zu einem Netzwerk-Hop herstellen, es wird keine Antwort angezeigt . Standardmäßig beträgt die maximale Anzahl der versuchten Hops 30, was normalerweise ausreicht. Sie können dies mit der Option -m ändern .

Angenommen, es erhält nach einem bestimmten Hop keine Antworten. Das ist ein guter Indikator, wo Sie als nächstes bei Ihrer Fehlerbehebungsaufgabe vorgehen müssen. tracepath Informationen sind nicht endgültig, da der Verkehr aus mehreren Gründen blockiert werden könnte. Es hilft Ihnen jedoch, das Problem einzugrenzen und sich auf die Lösungsbemühungen zu konzentrieren.

Aus Sicherheitsgründen blockieren viele Router im Internet den Datenverkehr, also tracepath möglicherweise nicht so nützlich für die Verfolgung der Konnektivität mit Internetdiensten. Es ist immer noch nützlich für die Fehlersuche im lokalen Netzwerk.

Was kommt als nächstes?

In diesem Artikel haben wir fünf wichtige Netzwerkkonfigurations- und Fehlerbehebungstools für Linux-Systeme untersucht. Diese Tools sind leistungsstark und bieten viele Optionen, die in einem einzigen Beitrag schwer zu behandeln sind. Wir empfehlen Ihnen, sie auszuprobieren und sich die Dokumentation und Manpages anzusehen, um zu sehen, wie Sie sie in Ihren Arbeitsablauf integrieren können.

Es gibt andere nützliche Linux-Netzwerktools, wie zum Beispiel tcpdump , nmap , und firewall-cmd . Diese Tools werden in anderen Artikeln zum Aktivieren von Sysadmin behandelt.

[ Netzwerk schwer zu verwalten? Sehen Sie sich Network Automation for Everyone an, ein kostenloses Buch von Red Hat. ]


Linux
  1. 5 Linux-Anfängerfehler

  2. 10 Linux-Befehle für die Netzwerkdiagnose

  3. Fehlerbehebung und Debugging für Linux-Netzwerke?

  4. Linux-Echo-Befehl

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

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

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

40 nützliche Linux-Netzwerkbefehle für moderne SysAdmins

Die 50 nützlichen Linux-IP-Befehle für Netzwerkadministratoren

Linux-nload-Befehl

Nmap-Befehle - 17 grundlegende Befehle für Linux-Netzwerke