Zum Inhalt

Die iproute2-Suite im Systemalltag: ip, ss, Netlink & persistente Schnittstellen

Erstellt: 08.11.2026  ·  Zuletzt aktualisiert: 08.11.2026  ·  Nejat Hakan

Management Summary: Das veraltete net-tools-Paket (ifconfig, netstat, route, arp) ist in der modernen Linux-Administration seit über 15 Jahren obsolet. Der Standard für alle Netzwerkoperationen ist die iproute2-Suite (ip, ss, bridge, tc). Während veraltete Werkzeuge unatomar Textdateien in /proc/net/ auslasen, kommuniziert iproute2 über binäre Netlink-Sockets (AF_NETLINK) direkt und performant mit dem Linux-Kernel. Dieser Leitfaden liefert die vollständige Befehls-Ersetzungsmatrix, die tägliche Schnittstellen- und Routing-Verwaltung, tiefgehende TCP-Socket-Analysen mit ss sowie die persistente Konfiguration auf Debian.

  • net-tools vs. iproute2


    Vollständige Ersetzungstabelle für ifconfig, netstat, route und arp mit modernen Brief- (-br), Farb- (-c) und JSON-Parametern (-j).

  • Die ip-Subsysteme


    Link-Status und MTU mit ip link, mehrere IP-Adressen mit ip addr, Routing mit ip route und Nachbarschaftstabellen mit ip neigh beherrschen.

  • Socket-Analyse (ss)


    Socket-Puffer, besitzende Prozesse und interne TCP-Metriken (RTT, Congestion Window, MSS) ohne Performance-Einbrüche inspizieren.

  • Persistente Debian-Konfiguration


    Deterministische Schnittstellenkonfigurationen für systemd-networkd und das klassische Debian /etc/network/interfaces.


Veraltete Werkzeuge (ifconfig, netstat) stützen sich auf zwei ineffiziente Mechanismen: 1. ioctl()-Systemaufrufe: Langsam, stark begrenzte Parameter und unfähig zu atomaren Konfigurationsänderungen. 2. Parsen von Textdateien in /proc/net/: Bei zehntausenden aktiven Verbindungen liest netstat zeilenweise /proc/net/tcp aus, was unter Hochlast zu spürbaren CPU-Spitzen und Sperrverzögerungen führt.

Im Gegensatz dazu nutzt iproute2 moderne Netlink-Sockets (AF_NETLINK): * Binäres Protokoll: Direkte Kommunikation mit den Netzwerkstrukturen des Kernels ohne zeilenweise Textkonvertierung. * Atomare Operationen: Routen, IP-Adressen und Schnittstellenflags werden verzögerungs- und verlustfrei im Kernel umgeschaltet. * Strukturierte Datenformate: Native JSON-Ausgabe über ip -j für die saubere Automatisierung mit jq.

%%{init: {'flowchart': {'wrappingWidth': 350}}}%%
flowchart TB
    APP1["Veraltet: net-tools<br/>Langsame ioctl & /proc-Parsings"]
    APP2["Modern: iproute2 (ip / ss)<br/>Schneller Netlink AF_NETLINK"]
    KERNEL["Linux-Kernel<br/>Netzwerk-Subsystem"]

    APP1 -->|"Veralteter Pfad"| KERNEL
    APP2 -->|"Atomarer Netlink"| KERNEL
    APP1 -.->|"Ersetzt durch"| APP2

2. Definitive Befehls-Ersetzungsmatrix

Veralteter Befehl (net-tools) Moderner Ersatz (iproute2) Funktion & Zweck
ifconfig -a ip -br -c addr show Kompakte, farbige Übersicht aller Interfaces, Status und IPv4/IPv6-Adressen.
ifconfig eth0 up / down sudo ip link set dev eth0 up / down Schnittstelle administrativ aktivieren oder deaktivieren.
ifconfig eth0 192.168.1.50/24 sudo ip addr add 192.168.1.50/24 dev eth0 Fügt eine IP-Adresse hinzu, ohne bestehende Adressen zu überschreiben.
route -n / netstat -rn ip -c route show Zeigt die Kernel-Layer-3-Routingtabelle mit farblich hervorgehobenen Gateways.
route add default gw 192.168.1.1 sudo ip route add default via 192.168.1.1 Setzt oder ändert die primäre Standard-Gateway-Route.
arp -an ip -c neigh show Zeigt den Layer-2-Neighbor-Cache (ARP für IPv4 und NDP für IPv6).
arp -d 192.168.1.50 sudo ip neigh del 192.168.1.50 dev eth0 Entfernt einen bestimmten MAC-Eintrag aus dem Cache des Kernels.
netstat -tulpn sudo ss -tulpn Sofortige Übersicht lauschender TCP- und UDP-Ports inklusive Prozessnamen und PIDs.
netstat -i ip -s link show dev eth0 Zeigt Paket-, Byte- und Fehlerzähler auf Layer 2 an.

3. Die ip-Subsysteme im täglichen Praxiseinsatz

Verwaltung von Layer-2-Eigenschaften:

# Kompakte Übersicht aller Links, MAC-Adressen und MTU-Werte
ip -br link show

# MTU anpassen (z. B. 9000 für Jumbo Frames im Storage-LAN)
sudo ip link set dev eth0 mtu 9000

# MAC-Adresse ändern (Interface muss vorher deaktiviert werden)
sudo ip link set dev eth0 down
sudo ip link set dev eth0 address 52:54:00:12:34:56
sudo ip link set dev eth0 up

# Detaillierte Fehlerstatistiken und Paketverluste anzeigen
ip -s -s link show dev eth0

2. IP-Adressverwaltung: ip addr

iproute2 unterstützt nativ beliebig viele IP-Adressen pro Schnittstelle ohne veraltete Aliase (eth0:1):

# Sekundäre IP-Adresse hinzufügen
sudo ip addr add 10.10.10.50/24 dev eth0

# Nur IPv4-Adressen in kompakter Form anzeigen
ip -4 -br addr show

# IP-Adresse wieder entfernen
sudo ip addr del 10.10.10.50/24 dev eth0

# Alle dynamischen oder statischen IPs eines Interfaces auf einen Schlag löschen
sudo ip addr flush dev eth0

3. Kernel-Routing verwalten: ip route

# Aktive Routingtabelle anzeigen
ip -c route show

# Statische Route für ein entferntes Subnetz über ein Gateway eintragen
sudo ip route add 10.200.0.0/16 via 192.168.1.254 dev eth0

# Host-Route mit spezifischer Metrik anlegen
sudo ip route add 198.51.100.1 via 192.168.1.1 dev eth0 metric 50

# Kernel abfragen, über welchen Weg ein Ziel erreicht wird
ip route get 8.8.8.8

4. Nachbarschaftstabelle & ARP/NDP: ip neigh

Die Neighbor-Tabelle hält die Zuordnung von IP- zu MAC-Adressen:

# Alle gelernten IPv4- (ARP) und IPv6- (NDP) Nachbarn anzeigen
ip -c neigh show

# Status-Zustände der Nachbarn:
# REACHABLE = Bestätigt und aktiv
# STALE     = Gültig, aber inaktiv; wird beim nächsten Paket verifiziert
# DELAY     = Wartet auf Bestätigung
# FAILED    = Auflösung fehlgeschlagen; keine MAC-Antwort erhalten
# PERMANENT = Statisch hinterlegt; verfällt niemals

# Statischen ARP-Eintrag setzen (Schutz vor ARP-Spoofing / MITM)
sudo ip neigh add 192.168.1.1 lladdr 00:11:22:33:44:55 nud permanent dev eth0

# Neighbor-Cache leeren
sudo ip neigh flush dev eth0

4. Performante Socket-Analyse mit ss

Der Befehl ss (Socket Statistics) liest Socket-Zustände direkt über das Kernel-Modul sock_diag aus. Er liefert selbst auf Servern mit über 100.000 parallelen TCP-Verbindungen sofortige Ergebnisse ohne CPU-Blockaden.

1. Die wichtigsten Diagnose-Flags

# Lauschende (-l) TCP- (-t) und UDP-Sockets (-u) numerisch (-n) mit Prozess (-p)
sudo ss -tulpn

# Alle aktiven TCP-Verbindungen mit Speicherverbrauch des Socketpuffers (-m)
ss -tm state established

# Interne TCP-Metriken anzeigen (-i): RTT, Congestion Window (cwnd), MSS und Retransmits
ss -ti '( dport = :https or sport = :https )'

Fortgeschrittene TCP-Metriken aus ss -ti verstehen

ESTAB  0  0  192.168.1.50:48210  93.184.216.34:443
     bbr wscale:7,7 rto:204 rtt:4.12/0.08 ato:40 mss:1460 rcvspace:14600
     cwnd:10 ssthresh:7 bytes_acked:15432 retrans:0/1
  • bbr / cubic: Aktiver TCP-Überlastungssteuerungs-Algorithmus.
  • rtt:4.12/0.08: Round Trip Time in Millisekunden (Mittelwert / Abweichung).
  • cwnd:10: Congestion Window (Segmente, die der Kernel ohne ACK senden darf).
  • retrans: Anzahl erneuter Paketübertragungen auf dieser Verbindung.

2. Zustände und Ports gezielt filtern

# Verbindungen im Zustand TIME-WAIT oder CLOSE-WAIT anzeigen
ss -t state time-wait
ss -t state close-wait

# Verbindungen nach Quell- oder Zielport filtern
ss -t '( sport = :http or dport = :http )'

# Verbindungen zu einem bestimmten Ziel-Subnetz filtern
ss -t dst 10.0.0.0/16

5. Skript-Automatisierung mit ip -j & jq

In modernen Automatisierungsskripten sollte die Ausgabe niemals mit awk zerlegt werden. Nutze stattdessen JSON (-j):

# IP des Standard-Gateways sauber mit jq extrahieren
ip -j route show | jq -r '.[] | select(.dst == "default") | .gateway'

# Alle aktiven Schnittstellen mit ihrer primären IPv4 auflisten
ip -j addr show | jq -r '.[] | select(.operstate == "UP") | {ifname: .ifname, ip: .addr_info[0].local}'

6. Persistente Konfiguration unter Debian Linux

Im Terminal mit ip gesetzte Einstellungen wirken sofort im Kernel, gehen nach einem Neustart jedoch verloren. Zur dauerhaften Speicherung dienen die Standarddienste von Debian:

# Datei: /etc/systemd/network/10-static-eth0.network
[Match]
Name=eth0

[Network]
Address=192.168.1.50/24
Gateway=192.168.1.1
DNS=192.168.1.1
DNS=9.9.9.9
IPv6AcceptRA=yes

[Link]
MTUBytes=1500
RequiredForOnline=yes

Aktivieren:

sudo systemctl enable --now systemd-networkd
sudo networkctl reload

# Datei: /etc/network/interfaces
source /etc/network/interfaces.d/*

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
    address 192.168.1.50/24
    gateway 192.168.1.1
    dns-nameservers 192.168.1.1 9.9.9.9
    mtu 1500

Aktivieren:

sudo systemctl restart networking


7. Nächste Schritte

Nachdem Schnittstellen, IP-Adressen und Routingtabellen souverän bedient werden können, folgt die Domänennamensauflösung und die systematische Bottom-Up-Fehlerdiagnose von Schicht 1 bis 7:

  • DNS-Namensauflösung & Bottom-Up Troubleshooting


    glibc-NSS-Mechanik (nsswitch.conf), systemd-resolved, dig-Trace-Analysen und ein systematischer Layer-1-bis-7-Diagnose-Leitfaden.

    Zum DNS- & Troubleshooting-Leitfaden