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
oderl
- steuert den Status von Netzwerkgerätenaddress
odera
- manipuliert IP-Adressen auf Gerätenroute
oderr
- verarbeitet Routing-Tabelleneinträgeneighbor
odern
- 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 annetworking
- Zeigt, aktiviert und deaktiviert das Netzwerkradio
- Zeigt, aktiviert und deaktiviert WiFi und WWANdevice
- zeigt und manipuliert den Status von Netzwerkgerätenconnection
- 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. ]