Skip to main content

2.3 Linux-Netzwerkbefehle

Linux stellt für die Netzwerkdiagnose verschiedene Werkzeuge bereit. Welche Befehle verfügbar sind, hängt von Distribution, Installation und verwendeter Netzwerkverwaltung ab.

Die wichtigsten Werkzeuggruppen sind:

  • iproute2 mit ip und ss
  • iputils mit ping und tracepath
  • DNS-Werkzeuge wie resolvectl, dig, host und getent
  • NetworkManager mit nmcli
  • systemd-networkd mit networkctl
  • Treiber- und Linkdiagnose mit ethtool
  • Socket- und Prozessdiagnose mit ss, lsof und fuser
  • Firewallanalyse mit nft, iptables, ufw oder firewall-cmd
  • Protokollanalyse mit journalctl und dmesg

Kennzeichnungen

KennzeichnungBedeutung
[RO]Nur lesender Befehl; verändert keine Konfiguration
[TEST]Führt einen aktiven Netzwerk- oder Verbindungstest aus
[PRIV]Benötigt Root-Rechte beziehungsweise sudo
[CHANGE]Verändert einen Zustand oder eine Konfiguration
[DISRUPT]Kann eine Verbindung oder einen Dienst unterbrechen
[FILE]Schreibt Informationen in eine Datei
[SENS]Ausgabe kann sensible System-, Netzwerk- oder Prozessdaten enthalten

Vor Veränderungen sollten zunächst die lesenden [RO]-Befehle verwendet und deren Ergebnisse dokumentiert werden.


1. Linux-System und verfügbare Werkzeuge prüfen

Zunächst muss geklärt werden, welche Distribution, welcher Kernel und welche Netzwerkwerkzeuge vorhanden sind.

AufgabeLinux-Befehl
Distribution anzeigen[RO] cat /etc/os-release
Kernelversion anzeigen[RO] uname -r
Architektur anzeigen[RO] uname -m
Hostname anzeigen[RO] hostnamectl
Aktuellen Benutzer anzeigen[RO] id
Prüfen, ob ein Befehl vorhanden ist[RO] command -v ip
Mehrere Werkzeuge prüfen[RO] command -v ip ss ping tracepath traceroute mtr dig resolvectl nmcli networkctl ethtool
Version von iproute2 anzeigen[RO] ip -Version
Hilfe zum ip-Befehl anzeigen[RO] ip help
Handbuchseite öffnen[RO] man ip
Handbuch für einen Teilbefehl öffnen[RO] man ip-route
Kurzhilfe eines Teilbefehls anzeigen[RO] ip route help

Typische Paketnamen

WerkzeugHäufiger Paketname
ip, ssiproute2
ping, tracepathiputils beziehungsweise iputils-ping und iputils-tracepath
dig, hostdnsutils, bind-utils oder bind-tools
traceroutetraceroute
mtrmtr
ethtoolethtool
lsoflsof
ncnetcat-openbsd, nmap-ncat oder vergleichbares Paket

Paketnamen unterscheiden sich zwischen Debian, Ubuntu, Fedora, Red Hat Enterprise Linux, Rocky Linux, AlmaLinux, SUSE, Arch Linux und anderen Distributionen.


2. Netzwerkschnittstellen und Linkstatus prüfen

ip link zeigt Netzwerkschnittstellen unabhängig davon, ob bereits eine IP-Adresse konfiguriert wurde.

AufgabeLinux-Befehl
Alle Schnittstellen anzeigen[RO] ip link show
Kompakte Übersicht anzeigen[RO] ip -brief link show
Details und Statistiken anzeigen[RO] ip -details -statistics link show
Einzelne Schnittstelle anzeigen[RO] ip link show dev enp1s0
Empfangs- und Sendestatistik anzeigen[RO] ip -statistics link show dev enp1s0
Betriebszustand über sysfs lesen[RO] cat /sys/class/net/enp1s0/operstate
Physische Trägererkennung lesen[RO] cat /sys/class/net/enp1s0/carrier
MTU anzeigen[RO] cat /sys/class/net/enp1s0/mtu
MAC-Adresse anzeigen[RO] cat /sys/class/net/enp1s0/address
Alle Schnittstellennamen auflisten[RO] ls -1 /sys/class/net

enp1s0 ist nur ein Beispiel. Der tatsächliche Name kann beispielsweise eth0, ens18, eno1, enp3s0, wlan0 oder wlp2s0 lauten.

Wichtige Angaben von ip link

AngabeBedeutung
UPSchnittstelle wurde administrativ aktiviert
LOWER_UPPhysische beziehungsweise untergeordnete Verbindung wurde erkannt
NO-CARRIERKein physischer Link erkannt
state UPSchnittstelle ist betriebsbereit
state DOWNSchnittstelle ist nicht aktiv
mtuMaximum Transmission Unit
link/etherMAC-Adresse einer Ethernet-Schnittstelle
qlenLänge der Sendewarteschlange

Typische Fehlerbilder

BeobachtungMögliche Bedeutung
state DOWNSchnittstelle wurde deaktiviert oder nicht aktiviert
UP, aber kein LOWER_UPKein physischer Link, Kabel-, Port- oder WLAN-Problem
NO-CARRIERKein Trägersignal erkannt
Viele errorsKabel, Port, Treiber, Hardware oder Aushandlung prüfen
Viele droppedÜberlastung, Warteschlangen, Treiber oder Puffer prüfen
Unerwartete MTUKann Fragmentierungs- oder Tunnelprobleme verursachen
Schnittstelle fehlt vollständigTreiber, Hardwareerkennung, virtuelle Maschine oder Gerätezuordnung prüfen

3. IP-Adressen und Adresszustände prüfen
AufgabeLinux-Befehl
Alle Adressen anzeigen[RO] ip address show
Kompakte Adressübersicht[RO] ip -brief address show
IPv4-Adressen anzeigen[RO] ip -4 address show
IPv6-Adressen anzeigen[RO] ip -6 address show
Adressen einer Schnittstelle anzeigen[RO] ip address show dev enp1s0
Nur globale IPv4-Adressen anzeigen[RO] ip -4 address show scope global
Nur globale IPv6-Adressen anzeigen[RO] ip -6 address show scope global
Adressen ohne Loopback anzeigen[RO] ip -brief address show | grep -v '^lo'
Hostadressen kompakt anzeigen[RO] hostname -I

Wichtige Angaben

AngabeBedeutung
inetIPv4-Adresse
inet6IPv6-Adresse
/24, /64Präfixlänge
scope hostNur lokal auf diesem System gültig
scope linkNur im direkt verbundenen Netz gültig
scope globalÜber das lokale System beziehungsweise Netz hinaus verwendbar
dynamicAdresse wurde dynamisch vergeben
secondaryZusätzliche Adresse auf derselben Schnittstelle
tentativeIPv6 Duplicate Address Detection ist noch nicht abgeschlossen
deprecatedAdresse soll nicht mehr für neue Verbindungen verwendet werden
valid_lftVerbleibende Gültigkeitsdauer
preferred_lftVerbleibende bevorzugte Nutzungsdauer

Prüfpunkte

  • Passt die IP-Adresse zum vorgesehenen Netz?
  • Ist die Präfixlänge korrekt?
  • Ist die Adresse an der richtigen Schnittstelle gebunden?
  • Existieren unerwartete zusätzliche Adressen?
  • Wird eine dynamische Adresse erwartet?
  • Ist eine IPv6-Adresse noch tentative oder bereits deprecated?
  • Befindet sich eine IPv4-Adresse im Bereich 169.254.0.0/16?
  • Existiert nur eine Loopback-Adresse?

Eine Adresse aus 169.254.0.0/16 kann darauf hinweisen, dass keine reguläre IPv4-Konfiguration beziehungsweise keine erfolgreiche DHCP-Zuweisung vorhanden ist.


4. Routingtabelle und verwendeten Netzwerkweg prüfen
AufgabeLinux-Befehl
IPv4-Routingtabelle anzeigen[RO] ip route show
IPv6-Routingtabelle anzeigen[RO] ip -6 route show
Alle Routingtabellen anzeigen[RO] ip route show table all
Standardroute anzeigen[RO] ip route show default
Route zu einem Ziel bestimmen[RO] ip route get 1.1.1.1
Route mit gewünschter Quelladresse prüfen[RO] ip route get 1.1.1.1 from 192.0.2.10
Route über eine Schnittstelle suchen[RO] ip route show dev enp1s0
Policy-Routing-Regeln anzeigen[RO] ip rule show
IPv6-Policy-Regeln anzeigen[RO] ip -6 rule show
Routingtabellen-Namen anzeigen[RO] cat /etc/iproute2/rt_tables
Änderungen an Routen überwachen[RO] ip monitor route

Wichtige Angaben

AngabeBedeutung
defaultStandardroute für nicht spezifischer bekannte Ziele
viaNächster Router beziehungsweise Gateway
devVerwendete Netzwerkschnittstelle
srcBevorzugte lokale Quelladresse
metricRoutenmetrik
proto dhcpRoute wurde über DHCP bereitgestellt
proto kernelRoute wurde automatisch durch den Kernel erzeugt
tableVerwendete Routingtabelle
scope linkZiel befindet sich direkt am lokalen Link

Beispielausgabe

default via 192.0.2.1 dev enp1s0 proto dhcp src 192.0.2.10 metric 100
192.0.2.0/24 dev enp1s0 proto kernel scope link src 192.0.2.10 metric 100

Interpretation

  • Das Standardgateway ist 192.0.2.1.
  • Die Schnittstelle enp1s0 wird verwendet.
  • Die bevorzugte Quelladresse ist 192.0.2.10.
  • Das Netz 192.0.2.0/24 ist direkt angeschlossen.
  • Bei mehreren Routen können Präfixlänge, Policy-Regeln und Metriken die Auswahl beeinflussen.

Typische Fehlerbilder

  • Keine Standardroute vorhanden.
  • Standardroute verwendet die falsche Schnittstelle.
  • VPN- oder Tunnelroute überschreibt den erwarteten Weg.
  • Falsche Quelladresse wird ausgewählt.
  • Eine spezifischere Route überschreibt die Standardroute.
  • Policy Routing verwendet eine andere Routingtabelle.
  • Mehrere Standardrouten führen zu einem unerwarteten Netzwerkweg.

5. ARP- und IPv6-Nachbartabelle prüfen

ip neigh zeigt IPv4-ARP- und IPv6-Nachbareinträge.

AufgabeLinux-Befehl
Nachbartabelle anzeigen[RO] ip neighbour show
Kompakte Nachbartabelle anzeigen[RO] ip -brief neighbour show
IPv4-Nachbarn anzeigen[RO] ip -4 neighbour show
IPv6-Nachbarn anzeigen[RO] ip -6 neighbour show
Nachbarn einer Schnittstelle anzeigen[RO] ip neighbour show dev enp1s0
Bestimmte IP-Adresse suchen[RO] ip neighbour show 192.0.2.1
Fehlgeschlagene Einträge anzeigen[RO] ip neighbour show nud failed
Unvollständige Einträge anzeigen[RO] ip neighbour show nud incomplete
Änderungen überwachen[RO] ip monitor neighbour

Wichtige Zustände

ZustandBedeutung
REACHABLENachbar wurde kürzlich erfolgreich erreicht
STALEEintrag ist vorhanden, wurde aber länger nicht bestätigt
DELAYPrüfung der Erreichbarkeit wird verzögert
PROBEAktive Erreichbarkeitsprüfung läuft
INCOMPLETEAdressauflösung ist noch nicht abgeschlossen
FAILEDAdressauflösung beziehungsweise Erreichbarkeitsprüfung ist fehlgeschlagen
PERMANENTDauerhaft konfigurierter Eintrag
NOARPFür diesen Eintrag wird keine normale Nachbarauflösung verwendet

Fehlerhinweise

  • INCOMPLETE oder FAILED kann auf ein falsches VLAN, eine falsche Netzmaske, einen nicht erreichbaren Nachbarn oder ein Layer-2-Problem hinweisen.
  • Unterschiedliche MAC-Adressen für dieselbe IP-Adresse können auf doppelte IP-Adressen, Hochverfügbarkeit oder einen Sicherheitsvorfall hinweisen.
  • Ein fehlender Eintrag ist nicht automatisch ein Fehler. Das Ziel wurde möglicherweise noch nicht angesprochen oder liegt außerhalb des lokalen Netzes.

6. Erreichbarkeit mit ping prüfen
AufgabeLinux-Befehl
Vier ICMP-Anfragen senden[TEST] ping -c 4 192.0.2.1
Externe IP-Adresse testen[TEST] ping -c 4 1.1.1.1
DNS-Namen testen[TEST] ping -c 4 example.com
Nur IPv4 verwenden[TEST] ping -4 -c 4 example.com
Nur IPv6 verwenden[TEST] ping -6 -c 4 example.com
Bestimmte Schnittstelle verwenden[TEST] ping -I enp1s0 -c 4 192.0.2.1
Bestimmte Quelladresse verwenden[TEST] ping -I 192.0.2.10 -c 4 192.0.2.1
Timeout pro Antwort begrenzen[TEST] ping -c 4 -W 2 192.0.2.1
Gesamtlaufzeit begrenzen[TEST] ping -c 4 -w 10 192.0.2.1
Paketgröße prüfen[TEST] ping -c 4 -s 1400 192.0.2.1
Keine Fragmentierung erlauben[TEST] ping -c 4 -M do -s 1400 192.0.2.1

Wichtige Ergebnisse

WertBedeutung
timeAntwortzeit beziehungsweise Round Trip Time
ttlVerbleibende IPv4 Time to Live
icmp_seqNummer der ICMP-Anfrage
packet lossAnteil verlorener Anfragen
min/avg/maxMinimale, durchschnittliche und maximale Laufzeit
mdevStreuung der Laufzeiten unter Linux

Interpretation

ErgebnisMögliche Bedeutung
IP-Adresse erreichbar, DNS-Name nichtDNS-Problem wahrscheinlich
Gateway nicht erreichbarLokales Netz, VLAN, WLAN, Switch oder Gateway prüfen
Ziel nicht erreichbar, Gateway erreichbarRouting, Firewall oder entferntes System prüfen
Einzelne PaketverlusteÜberlastung, Funkstörung, Linkfehler oder Rate Limiting möglich
Hohe LaufzeitschwankungenÜberlastung, WLAN-Störung oder wechselnder Netzwerkweg
Destination Host UnreachableLokales System oder Router kennt keinen funktionierenden Weg
Keine AntwortZiel offline, ICMP blockiert oder Netzwerkweg gestört

Ein fehlgeschlagener Ping beweist nicht, dass ein Ziel vollständig unerreichbar ist. ICMP kann blockiert sein, während ein TCP-Dienst weiterhin funktioniert.


7. Netzwerkpfad mit tracepath, traceroute und mtr untersuchen
AufgabeLinux-Befehl
Pfad ohne Root-Rechte prüfen[TEST] tracepath example.com
IPv4-Pfad prüfen[TEST] tracepath -4 example.com
IPv6-Pfad prüfen[TEST] tracepath -6 example.com
Klassische Routenverfolgung[TEST] traceroute example.com
Keine Namensauflösung durchführen[TEST] traceroute -n example.com
TCP-Traceroute zu Port 443[TEST][PRIV] sudo traceroute -T -p 443 example.com
Laufende kombinierte Messung[TEST] mtr example.com
Bericht mit 20 Messzyklen[TEST] mtr --report --report-cycles 20 example.com
Bericht ohne DNS-Auflösung[TEST] mtr --report --numeric --report-cycles 20 example.com
TCP-MTR zu Port 443[TEST][PRIV] sudo mtr --tcp --port 443 --report example.com

Unterschiede

WerkzeugSchwerpunkt
tracepathEinfacher Pfadtest und Erkennung der Path MTU; häufig ohne Root-Rechte nutzbar
tracerouteKlassische Routenverfolgung mit verschiedenen Protokolloptionen
mtrKombiniert laufende Ping- und Traceroute-Messungen

Wichtige Hinweise zur Auswertung

  • Ein einzelner nicht antwortender Hop beweist keinen Fehler.
  • Router können Diagnosepakete begrenzen oder ignorieren und trotzdem Nutzdaten weiterleiten.
  • Paketverlust ist besonders relevant, wenn er ab einem Hop beginnt und auch an allen folgenden Hops einschließlich des Ziels sichtbar bleibt.
  • Unterschiedliche Pfade können durch Load Balancing entstehen.
  • Ein erfolgreicher letzter Hop ist wichtiger als einzelne Sterne in der Mitte des Pfades.
  • ICMP-, UDP- und TCP-Traceroute können unterschiedliche Ergebnisse liefern.

8. DNS-Konfiguration und Namensauflösung prüfen

Welche DNS-Werkzeuge funktionieren, hängt vom verwendeten Resolver und den installierten Paketen ab.

AufgabeLinux-Befehl
Resolver-Konfiguration prüfen[RO] cat /etc/resolv.conf
systemd-resolved-Status anzeigen[RO] resolvectl status
DNS-Server pro Schnittstelle anzeigen[RO] resolvectl dns
DNS-Domänen pro Schnittstelle anzeigen[RO] resolvectl domain
Namen über den Systemresolver abfragen[TEST] resolvectl query example.com
Auflösung über NSS testen[TEST] getent hosts example.com
IPv4- und IPv6-Ergebnisse anzeigen[TEST] getent ahosts example.com
Standard-DNS-Abfrage durchführen[TEST] dig example.com
IPv4-Adresse abfragen[TEST] dig A example.com
IPv6-Adresse abfragen[TEST] dig AAAA example.com
Mailserver abfragen[TEST] dig MX example.com
Nameserver abfragen[TEST] dig NS example.com
Kurzausgabe erzeugen[TEST] dig +short example.com
Bestimmten DNS-Server verwenden[TEST] dig @192.0.2.53 example.com
Vollständigen Delegationsweg prüfen[TEST] dig +trace example.com
Reverse-DNS-Abfrage durchführen[TEST] dig -x 192.0.2.10
Alternative kompakte Abfrage[TEST] host example.com
Reverse-Abfrage mit host[TEST] host 192.0.2.10

Warum können die Ergebnisse unterschiedlich sein?

WerkzeugVerwendeter Weg
getent hostsSystemweite Name Service Switch-Konfiguration aus /etc/nsswitch.conf
resolvectl querysystemd-resolved
digDirekte DNS-Abfrage; berücksichtigt nicht automatisch alle NSS-Quellen
hostDirekte DNS-Abfrage
AnwendungKann eigenen Resolver, eigenen Cache oder DNS over HTTPS verwenden

Zusätzliche Prüfungen

AufgabeLinux-Befehl
NSS-Reihenfolge prüfen[RO] grep '^hosts:' /etc/nsswitch.conf
Lokale Hosts-Datei prüfen[RO] cat /etc/hosts
Status von systemd-resolved prüfen[RO] systemctl status systemd-resolved --no-pager
DNS-Protokoll anzeigen[RO][PRIV] sudo journalctl -u systemd-resolved --since "30 minutes ago"
DNS-Statistik anzeigen[RO] resolvectl statistics

Typische Fehlerbilder

  • Falscher DNS-Server ist eingetragen.
  • /etc/resolv.conf zeigt auf eine nicht erreichbare Adresse.
  • /etc/resolv.conf ist ein Symlink auf eine unerwartete Datei.
  • Split-DNS oder VPN weist bestimmten Domänen andere Resolver zu.
  • /etc/hosts überschreibt das erwartete DNS-Ergebnis.
  • dig funktioniert, eine Anwendung jedoch nicht.
  • Interne Namen werden fälschlicherweise an einen öffentlichen DNS-Server gesendet.
  • IPv4- und IPv6-Auflösung liefern unterschiedliche Ergebnisse.

Interne Hostnamen und DNS-Zonen können sensible Unternehmensinformationen darstellen. Sie sollten nicht unüberlegt an öffentliche Resolver gesendet werden.


9. NetworkManager mit nmcli diagnostizieren

nmcli ist das Kommandozeilenwerkzeug für NetworkManager.

AufgabeLinux-Befehl
Allgemeinen Status anzeigen[RO] nmcli general status
Prüfen, ob NetworkManager läuft[RO] nmcli -terse -fields RUNNING general
Gerätestatus anzeigen[RO] nmcli device status
Details aller Geräte anzeigen[RO] nmcli device show
Details einer Schnittstelle anzeigen[RO] nmcli device show enp1s0
Verbindungprofile auflisten[RO] nmcli connection show
Aktive Profile anzeigen[RO] nmcli connection show --active
Detailinformationen eines Profils anzeigen[RO] nmcli connection show "PROFILNAME"
IP-Adressen eines Profils anzeigen[RO] nmcli -get-values IP4.ADDRESS connection show "PROFILNAME"
DNS-Daten eines Profils anzeigen[RO] nmcli -get-values IP4.DNS connection show "PROFILNAME"
NetworkManager-Konnektivitätsstatus anzeigen[RO] nmcli networking connectivity
Konnektivität neu prüfen[TEST] nmcli networking connectivity check
WLAN-Zustand anzeigen[RO] nmcli radio wifi
Sichtbare WLANs auflisten[TEST] nmcli device wifi list
Änderungen überwachen[RO] nmcli monitor

Für Skripte sollten die vollständigen Befehlsnamen statt möglicherweise mehrdeutiger Abkürzungen verwendet werden.

Wichtige Gerätezustände

ZustandBedeutung
connectedGerät verwendet ein aktives Verbindungsprofil
disconnectedGerät ist vorhanden, aber nicht verbunden
connectingVerbindungsaufbau läuft
unavailableGerät kann momentan nicht verwendet werden
unmanagedNetworkManager verwaltet dieses Gerät nicht

Wichtiger Unterschied

  • Device: Tatsächliche physische oder virtuelle Netzwerkschnittstelle.
  • Connection: Gespeichertes NetworkManager-Verbindungsprofil.
  • Ein Gerät kann mehrere passende Profile besitzen, aber normalerweise nur ein aktives Profil gleichzeitig verwenden.

10. systemd-networkd mit networkctl diagnostizieren

networkctl zeigt den Zustand von Schnittstellen, wenn systemd-networkd verwendet wird.

AufgabeLinux-Befehl
Schnittstellenübersicht anzeigen[RO] networkctl list
Gesamtstatus anzeigen[RO] networkctl status
Einzelne Schnittstelle anzeigen[RO] networkctl status enp1s0
LLDP-Nachbarn anzeigen[RO] networkctl lldp
Status von systemd-networkd anzeigen[RO] systemctl status systemd-networkd --no-pager
Protokoll der letzten 30 Minuten anzeigen[RO][PRIV] sudo journalctl -u systemd-networkd --since "30 minutes ago"
Konfigurationsdateien auflisten[RO] find /etc/systemd/network /run/systemd/network /usr/lib/systemd/network -maxdepth 1 -type f 2>/dev/null

Typische Fehlerbilder

  • Eine Schnittstelle ist unmanaged.
  • Keine passende .network-Datei trifft auf die Schnittstelle zu.
  • Mehrere Konfigurationsdateien konkurrieren miteinander.
  • NetworkManager und systemd-networkd sollen dieselbe Schnittstelle verwalten.
  • DHCP läuft nicht oder liefert keine Adresse.
  • Die Schnittstelle befindet sich im Zustand configuring oder failed.

Nicht gleichzeitig davon ausgehen, dass NetworkManager und systemd-networkd dieselbe Schnittstelle verwalten. Zuerst muss festgestellt werden, welcher Dienst tatsächlich zuständig ist.


11. Link, Treiber und Hardware mit ethtool prüfen

ethtool liefert Informationen über Ethernet-Schnittstellen, Treiber und Aushandlung.

AufgabeLinux-Befehl
Linkeinstellungen anzeigen[RO] ethtool enp1s0
Treiberinformationen anzeigen[RO] ethtool -i enp1s0
Schnittstellenstatistik anzeigen[RO][PRIV] sudo ethtool -S enp1s0
Offload-Funktionen anzeigen[RO] ethtool -k enp1s0
Pause-Parameter anzeigen[RO] ethtool -a enp1s0
Ringpuffer anzeigen[RO][PRIV] sudo ethtool -g enp1s0
Zeitstempelfunktionen anzeigen[RO] ethtool -T enp1s0

Wichtige Angaben

AngabeBedeutung
SpeedAusgehandelte Geschwindigkeit
DuplexHalb- oder Vollduplex
Auto-negotiationAutomatische Aushandlung aktiviert oder deaktiviert
Link detectedPhysischer Link erkannt
PortVerwendeter Anschlusstyp
driverVerwendetes Kernelmodul
versionTreiberversion
firmware-versionFirmwareversion des Adapters

Typische Fehlerbilder

  • Link detected: no
  • Unerwartet niedrige Geschwindigkeit
  • Half-Duplex statt Full-Duplex
  • Unterschiedliche feste Einstellungen an beiden Link-Enden
  • Steigende CRC-, Frame-, Drop- oder Timeout-Zähler
  • Falscher oder sehr alter Treiber
  • Treiber- oder Firmwarefehler im Kernelprotokoll

12. Offene Ports, Verbindungen und Prozesse mit ss prüfen

ss ist das zentrale moderne Werkzeug zur Untersuchung von Sockets und ersetzt viele frühere netstat-Anwendungsfälle.

AufgabeLinux-Befehl
Socket-Zusammenfassung anzeigen[RO] ss -summary
Lauschende TCP-Ports anzeigen[RO] ss -listen -tcp -numeric
Lauschende TCP- und UDP-Ports anzeigen[RO] ss -listen -numeric -tcp -udp
Ports mit Prozessen anzeigen[RO][PRIV] sudo ss -listen -numeric -tcp -udp -processes
Alle TCP-Verbindungen anzeigen[RO] ss -all -tcp -numeric
Bestehende TCP-Verbindungen anzeigen[RO] ss -tcp -numeric state established
TCP-Verbindungen mit internen Informationen[RO] ss -tcp -numeric -info
Lokalen Port 443 prüfen[RO] ss -listen -tcp -numeric 'sport = :443'
Verbindungen zu Zielport 443 anzeigen[RO] ss -tcp -numeric 'dport = :443'
UNIX-Sockets anzeigen[RO] ss -x -all

Häufig verwendete Kurzform

sudo ss -lntup

Die Optionen bedeuten:

OptionBedeutung
-lNur lauschende Sockets
-nNumerische Adressen und Ports
-tTCP
-uUDP
-pZugehörige Prozesse anzeigen

Interpretation

BeobachtungMögliche Bedeutung
Erwarteter Port fehltDienst läuft nicht oder lauscht auf einem anderen Port
Dienst lauscht nur auf 127.0.0.1Nur lokale Verbindungen möglich
Dienst lauscht auf 0.0.0.0Lauscht grundsätzlich auf allen IPv4-Adressen
Dienst lauscht auf ::Lauscht auf IPv6; IPv4-Verhalten hängt zusätzlich von System und Anwendung ab
Viele Verbindungen in SYN-SENTZiel oder Firewall antwortet möglicherweise nicht
Viele Verbindungen in SYN-RECVViele eingehende, noch nicht vollständig aufgebaute Verbindungen
Große Send-QDaten können möglicherweise nicht schnell genug gesendet werden
Große Recv-QAnwendung verarbeitet empfangene Daten möglicherweise nicht schnell genug

13. Ports und Prozesse mit lsof und fuser zuordnen
AufgabeLinux-Befehl
Alle Netzwerkdateien anzeigen[RO][PRIV] sudo lsof -numeric -P -i
Lauschende TCP-Ports anzeigen[RO][PRIV] sudo lsof -numeric -P -iTCP -sTCP:LISTEN
TCP-Port 443 untersuchen[RO][PRIV] sudo lsof -numeric -P -iTCP:443
UDP-Port 53 untersuchen[RO][PRIV] sudo lsof -numeric -P -iUDP:53
Prozess auf TCP-Port 443 suchen[RO][PRIV] sudo fuser -verbose 443/tcp
Prozess auf UDP-Port 53 suchen[RO][PRIV] sudo fuser -verbose 53/udp
Prozessdetails anhand der PID anzeigen[RO] ps -fp 1234
Ausführliche Prozessinformationen anzeigen[RO] ps -p 1234 -o pid,ppid,user,group,cmd

Bei fehlenden Root-Rechten werden möglicherweise nicht alle Prozessinformationen angezeigt.


14. TCP- und UDP-Ports aktiv testen
AufgabeLinux-Befehl
TCP-Port testen[TEST] nc -verbose -zero -wait 3 example.com 443
SSH-Port testen[TEST] nc -verbose -zero -wait 3 192.0.2.10 22
Mehrere Ports testen[TEST] nc -verbose -zero -wait 3 192.0.2.10 22 80 443
UDP-Port testen[TEST] nc -verbose -zero -udp -wait 3 192.0.2.53 53
Bash-TCP-Test durchführen[TEST] timeout 3 bash -c '</dev/tcp/example.com/443'

Häufig verwendete Kurzform

nc -vz -w 3 example.com 443

Mögliche Ergebnisse

ErgebnisBedeutung
succeeded oder openTCP-Verbindung konnte aufgebaut werden
Connection refusedZiel erreichbar, aber kein Dienst akzeptiert die Verbindung oder lehnt sie aktiv ab
timed outKeine rechtzeitige Antwort; Firewall, Routing oder Zielsystem prüfen
No route to hostKein verwendbarer Netzwerkweg oder entsprechende ICMP-Rückmeldung
Name or service not knownNamensauflösung fehlgeschlagen

Ein UDP-Test mit nc kann ohne Antwort nicht zuverlässig beweisen, ob der UDP-Port offen oder geschlossen ist. UDP besitzt keinen TCP-Verbindungsaufbau.


15. Firewallstatus lesend prüfen

Linux-Systeme können unterschiedliche Werkzeuge zur Firewallverwaltung einsetzen. Zuerst muss festgestellt werden, welches System tatsächlich aktiv ist.

AufgabeLinux-Befehl
nftables-Regelwerk anzeigen[RO][PRIV][SENS] sudo nft list ruleset
iptables-Filterregeln anzeigen[RO][PRIV][SENS] sudo iptables -S
iptables-Regeln mit Zählern anzeigen[RO][PRIV][SENS] sudo iptables -L -numeric -verbose
IPv6-iptables-Regeln anzeigen[RO][PRIV][SENS] sudo ip6tables -S
UFW-Status anzeigen[RO][PRIV] sudo ufw status verbose
firewalld-Status prüfen[RO] firewall-cmd --state
Aktive firewalld-Zonen anzeigen[RO][PRIV] sudo firewall-cmd --get-active-zones
Regeln der aktiven Zone anzeigen[RO][PRIV][SENS] sudo firewall-cmd --list-all
Alle firewalld-Zonen anzeigen[RO][PRIV][SENS] sudo firewall-cmd --list-all-zones
nftables-Dienststatus anzeigen[RO] systemctl status nftables --no-pager
firewalld-Dienststatus anzeigen[RO] systemctl status firewalld --no-pager
UFW-Dienststatus anzeigen[RO] systemctl status ufw --no-pager

Prüfpunkte

  • Welches Firewall-Frontend wird tatsächlich verwendet?
  • Welches Regelwerk ist im Kernel aktiv?
  • Welche Eingangs- und Ausgangsregeln gelten?
  • Auf welche Schnittstelle oder Zone bezieht sich eine Regel?
  • Stimmen IPv4- und IPv6-Regeln überein?
  • Erhöhen sich die Paket- oder Bytezähler einer relevanten Regel?
  • Wird ein Port lokal geöffnet, aber durch die Firewall blockiert?

Die Firewall nicht pauschal deaktivieren. Zuerst müssen Dienstbindung, Route, verwendete Schnittstelle und passende Regeln geprüft werden.


16. Netzwerkdienste und Protokolle prüfen
AufgabeLinux-Befehl
Fehlgeschlagene Dienste anzeigen[RO] systemctl --failed
NetworkManager-Status anzeigen[RO] systemctl status NetworkManager --no-pager
systemd-networkd-Status anzeigen[RO] systemctl status systemd-networkd --no-pager
systemd-resolved-Status anzeigen[RO] systemctl status systemd-resolved --no-pager
Dienstprotokoll anzeigen[RO][PRIV] sudo journalctl -u NetworkManager --since "30 minutes ago"
networkd-Protokoll anzeigen[RO][PRIV] sudo journalctl -u systemd-networkd --since "30 minutes ago"
resolved-Protokoll anzeigen[RO][PRIV] sudo journalctl -u systemd-resolved --since "30 minutes ago"
Kernelmeldungen zum Netzwerk filtern`[RO][PRIV] sudo dmesg --human | grep -Ei 'link
Kernelmeldungen des aktuellen Starts[RO][PRIV] sudo journalctl -kernel -boot
Letzte Kernelmeldungen live verfolgen[RO][PRIV] sudo journalctl -kernel -follow
Startzeit eines Dienstes anzeigen[RO] systemctl show NetworkManager -property ActiveEnterTimestamp

Typische Protokollhinweise

  • link is down
  • link becomes ready
  • carrier lost
  • renamed from eth0
  • DHCP timeout
  • no lease
  • firmware failed to load
  • authentication failed
  • activation failed
  • DNSSEC validation failed
  • network unreachable

Protokolle müssen immer mit Zeitstempel, betroffener Schnittstelle und vorhergehenden Ereignissen ausgewertet werden. Eine einzelne Meldung ohne Kontext reicht selten zur Ursachenbestimmung.


17. Diagnoseinformationen sichern und vergleichen
AufgabeLinux-Befehl
Linkinformationen speichern[RO][FILE][SENS] ip -details -statistics link show > link-status.txt
IP-Adressen speichern[RO][FILE][SENS] ip address show > ip-addresses.txt
Routingtabellen speichern[RO][FILE][SENS] ip route show table all > routes.txt
Policy-Regeln speichern[RO][FILE][SENS] ip rule show > routing-rules.txt
Nachbartabelle speichern[RO][FILE][SENS] ip neighbour show > neighbours.txt
Ports und Prozesse speichern[RO][PRIV][FILE][SENS] sudo ss -lntup > listening-ports.txt
NetworkManager-Status speichern[RO][FILE][SENS] nmcli device show > networkmanager-devices.txt
Resolverstatus speichern[RO][FILE][SENS] resolvectl status > resolver-status.txt
Netzwerkprotokolle speichern[RO][PRIV][FILE][SENS] sudo journalctl -u NetworkManager --since "1 hour ago" > networkmanager-log.txt

Zwei Messzeitpunkte vergleichen

ip -brief address show > addresses-vorher.txt
ip route show table all > routes-vorher.txt

# Messung oder freigegebene Änderung durchführen

ip -brief address show > addresses-nachher.txt
ip route show table all > routes-nachher.txt

diff -u addresses-vorher.txt addresses-nachher.txt
diff -u routes-vorher.txt routes-nachher.txt

Hinweise

  • Diagnoseausgaben können interne IP-Adressen, DNS-Namen, MAC-Adressen, Benutzer, Prozesse und Netzstrukturen enthalten.
  • Dateien müssen entsprechend den betrieblichen Datenschutz- und Sicherheitsvorgaben behandelt werden.
  • Vor einer Weitergabe müssen vertrauliche Inhalte geprüft und gegebenenfalls redigiert werden.
  • Passwörter, private Schlüssel, Tokens und vollständige VPN-Konfigurationen gehören nicht in ein allgemeines Diagnoselog.

18. Eingreifende Befehle nur nach der Diagnose verwenden

Die folgenden Befehle verändern den Systemzustand und können insbesondere über SSH die eigene Verbindung unterbrechen.

MaßnahmeLinux-BefehlAuswirkung
Schnittstelle deaktivieren[CHANGE][PRIV][DISRUPT] sudo ip link set dev enp1s0 downVerbindung wird unterbrochen
Schnittstelle aktivieren[CHANGE][PRIV] sudo ip link set dev enp1s0 upSchnittstelle wird aktiviert
NetworkManager-Gerät trennen[CHANGE][PRIV][DISRUPT] sudo nmcli device disconnect enp1s0Aktive Verbindung wird getrennt
NetworkManager-Gerät verbinden[CHANGE][PRIV] sudo nmcli device connect enp1s0NetworkManager versucht eine Verbindung aufzubauen
Verbindungsprofil neu aktivieren[CHANGE][PRIV][DISRUPT] sudo nmcli connection up "PROFILNAME"Profil wird aktiviert beziehungsweise neu angewendet
NetworkManager neu starten[CHANGE][PRIV][DISRUPT] sudo systemctl restart NetworkManagerVerwaltete Verbindungen können unterbrochen werden
systemd-networkd neu starten[CHANGE][PRIV][DISRUPT] sudo systemctl restart systemd-networkdVerwaltete Verbindungen können unterbrochen werden
DNS-Cache leeren[CHANGE][PRIV] sudo resolvectl flush-cachesLokale DNS-Cacheeinträge werden entfernt

Vor einem Eingriff prüfen

  • Erfolgt der Zugriff lokal oder über SSH?
  • Betrifft die Maßnahme die Schnittstelle der eigenen Sitzung?
  • Ist die aktuelle Konfiguration dokumentiert?
  • Ist bekannt, welcher Netzwerkdienst die Schnittstelle verwaltet?
  • Besteht Konsolen-, Out-of-Band- oder Hypervisorzugriff?
  • Gibt es eine Rückfallmöglichkeit?
  • Sind Auswirkungen auf Container, virtuelle Maschinen, Bridges, Bonds oder VLANs bekannt?
  • Ist eine betriebliche Freigabe erforderlich?

Auf einem entfernten System darf die aktive Managementschnittstelle nicht ohne gesicherten Rückfallweg deaktiviert oder neu gestartet werden.


19. Praktische Linux-Diagnosereihenfolge

Schritt 1 – System und Netzwerkverwaltung identifizieren

cat /etc/os-release
systemctl is-active NetworkManager
systemctl is-active systemd-networkd

Schritt 2 – Linkstatus prüfen

ip -brief link show
ip -statistics link show

Schritt 3 – IP-Adressen prüfen

ip -brief address show

Schritt 4 – Standardroute und Routenauswahl prüfen

ip route show default
ip route get 1.1.1.1
ip rule show

Schritt 5 – Nachbartabelle prüfen

ip neighbour show

Schritt 6 – Standardgateway testen

ping -c 4 192.0.2.1

Schritt 7 – Externe IP-Adresse testen

ping -c 4 1.1.1.1

Schritt 8 – DNS-Konfiguration prüfen

cat /etc/resolv.conf
resolvectl status

Schritt 9 – DNS-Auflösung testen

getent hosts example.com
dig example.com

Schritt 10 – Zielport testen

nc -vz -w 3 example.com 443

Schritt 11 – Lokale Ports und Prozesse prüfen

sudo ss -lntup

Schritt 12 – Netzwerkpfad untersuchen

tracepath example.com
mtr --report --numeric --report-cycles 20 example.com

Schritt 13 – Firewallstatus prüfen

sudo nft list ruleset

Schritt 14 – Netzwerkprotokolle prüfen

sudo journalctl -u NetworkManager --since "30 minutes ago"
sudo journalctl -kernel --since "30 minutes ago"

Diagnoselogik

ErgebnisNächster Schwerpunkt
Schnittstelle fehltHardware, Treiber, virtuelle Maschine oder Gerätezuordnung prüfen
Schnittstelle DOWNAdministrativen Zustand und Netzwerkverwaltung prüfen
Kein LOWER_UP beziehungsweise kein CarrierKabel, WLAN, Switchport oder Linkpartner prüfen
Keine passende IP-AdresseDHCP oder statische Konfiguration prüfen
Keine StandardrouteGateway- und Profilkonfiguration prüfen
Gateway nicht erreichbarLokales Netz, VLAN, Bridge, Switch oder WLAN prüfen
Externe IP erreichbar, DNS-Name nichtDNS-Konfiguration und Resolver prüfen
Ziel-IP erreichbar, Zielport nichtDienst, Portbindung und Firewall prüfen
Falsche Quelladresse oder SchnittstelleRouting, Policy Routing, VPN und Metrik prüfen
Dienst lauscht lokal, ist extern aber nicht erreichbarFirewall, Routing, NAT und Bind-Adresse prüfen

Kurzreferenz

DiagnosezielLinux-Befehl
Schnittstellenstatus[RO] ip -brief link show
Schnittstellenstatistik[RO] ip -statistics link show
IP-Adressen[RO] ip -brief address show
IPv4-Adressen[RO] ip -4 address show
IPv6-Adressen[RO] ip -6 address show
Standardroute[RO] ip route show default
Route zu einem Ziel[RO] ip route get 1.1.1.1
Policy Routing[RO] ip rule show
Nachbartabelle[RO] ip neighbour show
Gateway testen[TEST] ping -c 4 192.0.2.1
Netzwerkpfad[TEST] tracepath example.com
Fortlaufende Pfadanalyse[TEST] mtr example.com
Resolverstatus[RO] resolvectl status
Namensauflösung über NSS[TEST] getent hosts example.com
DNS-Abfrage[TEST] dig example.com
NetworkManager-Status[RO] nmcli general status
NetworkManager-Geräte[RO] nmcli device status
systemd-networkd-Status[RO] networkctl status
Ethernet-Link[RO] ethtool enp1s0
Treiberinformationen[RO] ethtool -i enp1s0
Lauschende Ports[RO][PRIV] sudo ss -lntup
TCP-Port testen[TEST] nc -vz -w 3 example.com 443
Port einem Prozess zuordnen[RO][PRIV] sudo lsof -nP -iTCP:443
nftables-Regeln[RO][PRIV] sudo nft list ruleset
Dienststatus[RO] systemctl status DIENST --no-pager
Dienstprotokoll[RO][PRIV] sudo journalctl -u DIENST
Kernelprotokoll[RO][PRIV] sudo journalctl -kernel

Veraltete und moderne Befehle

Älterer BefehlBevorzugter moderner Befehl
ifconfigip address, ip link
route -nip route
arp -nip neighbour
netstat -lntupss -lntup

Ältere Werkzeuge können weiterhin installiert sein. Für neue Dokumentationen und aktuelle Linux-Systeme sollten grundsätzlich die iproute2-Werkzeuge verwendet werden.


Merksatz

Die Linux-Netzwerkdiagnose folgt einer festen Kette: Schnittstelle → Link → IP-Adresse → Nachbartabelle → Route → Gateway → DNS → Zielport → lokaler Dienst → Firewall → Protokolle.


Quellen