ip -br a
ip route
ping -c 4 1.1.1.1
ping -c 4 google.com
ss -tulpen
Damit trennst du Layer-3-Probleme (kein Gateway) von DNS-Problemen (IP geht, Name nicht). Antwortet 1.1.1.1 nicht, liegt das Problem auf Netzwerkebene. Antwortet google.com nicht, aber 1.1.1.1 schon, deutet alles auf einen DNS-Fehler hin.
Die Ausgabe von ip -br a liefert eine kompakte Übersicht aller Interfaces mit Status und zugewiesenen Adressen. Das Flag -br steht für "brief" und spart Zeit beim Einlesen der Situation.
2. Netzwerk-Interfaces
Das Werkzeug der Wahl für die Interface-Verwaltung ist seit Jahren ip aus dem Paket iproute2. Das ältere ifconfig aus dem Paket net-tools ist auf vielen modernen Distributionen nicht mehr standardmäßig installiert und sollte als veraltet betrachtet werden. ip unterstützt IPv6, Policy Routing, VLANs und viele weitere Funktionen, die ifconfig schlicht fehlen.
Interfaces auflisten
# Alle Interfaces mit Adressen anzeigen
ip addr show
# Kompakte Darstellung (Status, Name, IP)
ip -br addr show
# Nur ein bestimmtes Interface
ip addr show dev eth0
# Alle Interfaces ohne Adressen
ip link show
Interface aktivieren und deaktivieren
# Interface hochfahren
sudo ip link set eth0 up
# Interface herunterfahren
sudo ip link set eth0 down
# MTU setzen
sudo ip link set eth0 mtu 9000
IP-Adresse zuweisen und entfernen
# Adresse hinzufügen
sudo ip addr add 192.168.1.50/24 dev eth0
# Adresse entfernen
sudo ip addr del 192.168.1.50/24 dev eth0
# Alle Adressen eines Interfaces entfernen
sudo ip addr flush dev eth0
VLAN-Interfaces und detaillierte Infos
# Detaillierte Infos inkl. VLAN-Tagging, Master, Bonding
ip -d link show eth0.10
# Statistiken (Pakete, Fehler, Drops)
ip -s link show eth0
ip -d link zeigt VLAN-Tagging und MTU-Infos. Besonders praktisch bei Trunk-Ports, wo mehrere VLANs auf einem physischen Interface liegen.
Unterschied ip vs. ifconfig
Ein direkter Vergleich der wichtigsten Operationen:
# IP-Adresse anzeigen
ip addr show # modern
ifconfig # veraltet
# Interface up/down
ip link set eth0 up # modern
ifconfig eth0 up # veraltet
# Routing-Tabelle anzeigen
ip route show # modern
route -n # veraltet (net-tools)
ifconfig zeigt keine IPv6-Link-Local-Adressen vollständig und kennt kein Policy Routing. Für Skripting und moderne Systeme immer ip bevorzugen.
3. Routing und Interfaces prüfen
Bei asymmetrischem Routing oder VLAN-Problemen:
ip link show
ip -d link show eth0.10
ip route get 8.8.8.8
ip neigh show
ip -d link zeigt VLAN-Tagging und MTU-Infos.
ip route get zeigt den real gewählten Pfad.
ip neigh hilft bei ARP- und L2-Problemen.
Routing-Tabelle anzeigen
# Aktuelle Routing-Tabelle
ip route show
# Legacy-Variante mit numerischen Zielen
route -n
# Konkreten Pfad für eine Zieladresse ermitteln
ip route get 8.8.8.8
# Nur die Default-Route anzeigen
ip route show default
Routen hinzufügen und entfernen
# Statische Route zu einem Subnetz hinzufügen
sudo ip route add 10.20.30.0/24 via 192.168.1.1 dev eth0
# Default-Gateway setzen
sudo ip route add default via 192.168.1.1
# Route entfernen
sudo ip route del 10.20.30.0/24
# Default-Gateway entfernen
sudo ip route del default via 192.168.1.1
Routen die mit ip route add gesetzt werden, sind nicht persistent. Nach einem Neustart sind sie weg. Für persistente Routen muss die Distribution-spezifische Konfiguration (z.B. /etc/network/interfaces unter Debian, NetworkManager oder systemd-networkd) verwendet werden.
Policy Routing mit ip rule
Linux unterstützt mehrere Routing-Tabellen gleichzeitig. Mit ip rule lässt sich steuern, welche Pakete welche Tabelle benutzen — etwa um Traffic über ein zweites Interface oder einen VPN-Tunnel zu leiten.
# Alle Regeln auflisten (niedrigere Priorität = höher priorisiert)
ip rule show
# Pakete von einer bestimmten Quell-IP über Tabelle 100 routen
sudo ip rule add from 192.168.2.0/24 table 100
# Regel entfernen
sudo ip rule del from 192.168.2.0/24 table 100
# Route in Tabelle 100 setzen
sudo ip route add default via 10.0.0.1 table 100
Typischer Anwendungsfall: Zwei Uplinks (ISP A und ISP B) — Traffic aus VLAN 10 geht über ISP A, Traffic aus VLAN 20 über ISP B, jeweils mit eigener Routing-Tabelle.
4. DNS-Diagnose
resolvectl status
nslookup opnsense.org
nslookup opnsense.org 1.1.1.1
dig +short github.com
Teste immer einmal gegen den lokalen Resolver und einmal gegen einen öffentlichen DNS-Server. So lässt sich schnell feststellen, ob das Problem beim lokalen Resolver oder bei der Weiterleitung liegt.
dig — Das mächtigste DNS-Diagnosetool
dig (Domain Information Groper) ist das bevorzugte Tool für DNS-Abfragen. Es gibt die vollständige Antwort des Servers aus, inklusive TTL, Antwortcode und zuständigem Nameserver.
# Standard A-Record Abfrage
dig github.com
# Nur die IP-Adresse ausgeben
dig +short github.com
# MX-Records (Mailserver) abfragen
dig MX gmail.com
# NS-Records (zuständige Nameserver) abfragen
dig NS heise.de
# TXT-Records abfragen (SPF, DKIM, Verifikation)
dig TXT google.com
# Einen bestimmten DNS-Server direkt befragen
dig @1.1.1.1 github.com
# Reverse-DNS (PTR-Record)
dig -x 8.8.8.8
# Vollständige DNSSEC-Informationen
dig +dnssec github.com
# DNS-Trace vom Root-Server an
dig +trace github.com
nslookup — Interaktiv und skriptfähig
# Einfache Abfrage
nslookup github.com
# Abfrage gegen spezifischen Server
nslookup github.com 8.8.8.8
# Interaktiver Modus
nslookup
> set type=MX
> gmail.com
> exit
host — Kompakter Helfer
# Einfache Vorwärtsauflösung
host github.com
# Rückwärtsauflösung
host 8.8.8.8
# Alle Records anzeigen
host -a github.com
Resolver-Konfiguration
# Klassische Resolver-Konfiguration anzeigen
cat /etc/resolv.conf
# systemd-resolved Status (moderne Systeme)
systemd-resolve --status
# oder mit neuem Befehlsnamen
resolvectl status
# DNS-Cache leeren (systemd-resolved)
sudo systemd-resolve --flush-caches
sudo resolvectl flush-caches
Auf Systemen mit systemd-resolved ist /etc/resolv.conf oft ein Symlink auf /run/systemd/resolve/stub-resolv.conf. Manuelle Änderungen an /etc/resolv.conf werden dann beim nächsten Neustart überschrieben. Die korrekte Konfiguration erfolgt über /etc/systemd/resolved.conf oder per resolvectl.
5. Verbindungsdiagnose
Connectivity-Tests bilden den Kern der täglichen Netzwerkdiagnose. Die folgenden Tools decken ICMP-Erreichbarkeit, Pfadverfolgung und Porttests ab.
Ein erhöhter Paketverlust (packet loss > 0 %) ist oft ein Indikator für Netzwerkprobleme. Steigende Round-Trip-Zeiten deuten auf Congestion oder Routing-Anomalien hin.
traceroute und tracepath
# Standard-Traceroute (UDP-Pakete)
traceroute 8.8.8.8
# ICMP-basierter Traceroute (oft durch Firewalls)
traceroute -I 8.8.8.8
# TCP-basierter Traceroute auf Port 80
traceroute -T -p 80 8.8.8.8
# tracepath — ohne root-Rechte, erkennt MTU
tracepath 8.8.8.8
tracepath erfordert keine root-Rechte und erkennt automatisch MTU-Engpässe auf dem Pfad. Es ist damit in vielen Fällen die bessere Wahl für schnelle Diagnosen.
mtr — Interaktives traceroute
mtr (Matt's Traceroute) kombiniert ping und traceroute in einer kontinuierlich aktualisierten Ansicht. Es zeigt Paketverlust und Latenz pro Hop in Echtzeit.
Hoher Paketverlust auf einem mittleren Hop, aber kein Verlust auf späteren Hops, bedeutet meist, dass dieser Router ICMP deprioritiert — kein echtes Problem. Echter Verlust zeigt sich erst, wenn er ab einem Hop bis zum Ziel bestehen bleibt.
Für Portests ist nc -zv dem älteren telnet vorzuziehen, da es skriptfähig ist und sauber mit Exit-Codes arbeitet. Ein Exit-Code 0 bedeutet Verbindung erfolgreich, ein Exit-Code ungleich 0 bedeutet kein Zugang.
6. Pakete analysieren
tcpdump — Paketmitschnitte auf der Kommandozeile
# Mitschnitt auf Interface eth0
sudo tcpdump -ni eth0
# Nur Traffic zu/von einer bestimmten IP
sudo tcpdump -ni eth0 host 192.168.10.1
# Nur einen bestimmten Port
sudo tcpdump -ni eth0 port 51820
# Subnetz filtern
sudo tcpdump -ni eth0 net 10.0.0.0/8
# Kombinierte Filter (AND / OR)
sudo tcpdump -ni eth0 host 192.168.1.1 and port 443
sudo tcpdump -ni eth0 port 80 or port 443
# Nur eingehenden Traffic
sudo tcpdump -ni eth0 dst host 192.168.1.1
# Paketinhalt im ASCII-Format anzeigen
sudo tcpdump -ni eth0 -A port 80
# Mitschnitt in Datei speichern (pcap-Format für Wireshark)
sudo tcpdump -ni eth0 -w /tmp/capture.pcap
# Gespeicherte pcap-Datei einlesen
tcpdump -r /tmp/capture.pcap
# Anzahl der Pakete begrenzen
sudo tcpdump -ni eth0 -c 100 host 192.168.1.1
Kurze, gezielte Captures sind besser als lange unkontrollierte Mitschnitte. Für reproduzierbare Probleme Captures pro Richtung speichern und mit Wireshark analysieren. Das Flag -n verhindert Reverse-DNS-Lookups und macht die Ausgabe deutlich schneller.
ss — Socket-Statistiken (modern)
ss ist der Nachfolger von netstat und deutlich schneller, da es direkt auf Kernel-Strukturen zugreift statt /proc zu parsen.
# Alle lauschenden TCP-Ports mit Prozess-Info
ss -tlnp
# Alle lauschenden UDP-Ports
ss -ulnp
# Alle aktiven Verbindungen (TCP)
ss -tn
# Verbindungen zu einem bestimmten Port
ss -tn dport = :443
# Verbindungen von einer bestimmten IP
ss -tn src 192.168.1.100
# Vollständige Übersicht: TCP, UDP, lauschend, Prozess-ID
ss -tulpen
# Statistik-Zusammenfassung
ss -s
netstat gehört zu den net-tools und ist auf modernen Systemen oft nicht mehr installiert. Wo möglich ss verwenden.
7. Bandbreite und Performance
Bandbreiten-Tests und Traffic-Monitoring helfen dabei, Engpässe zu identifizieren und die tatsächliche Netzwerkkapazität zu messen.
iperf3 — Bandbreite messen
iperf3 misst die maximale Datentransferrate zwischen zwei Hosts. Ein Host agiert als Server, der andere als Client.
# Server starten (wartet auf Verbindungen)
iperf3 -s
# Server auf spezifischem Port
iperf3 -s -p 5202
# Client-Test gegen Server
iperf3 -c 192.168.1.100
# Testdauer auf 30 Sekunden setzen
iperf3 -c 192.168.1.100 -t 30
# UDP statt TCP (für Jitter-Messung)
iperf3 -c 192.168.1.100 -u -b 100M
# Parallele Streams (realistischerer Last-Test)
iperf3 -c 192.168.1.100 -P 4
# Bidirektional testen
iperf3 -c 192.168.1.100 --bidir
# Ergebnis im JSON-Format
iperf3 -c 192.168.1.100 -J
Für einen aussagekräftigen Test immer mehrere Durchläufe machen. Ein einzelner kurzer Test ist wenig repräsentativ. UDP-Tests mit -u eignen sich gut für VoIP- oder Streaming-Szenarien, da sie Jitter und Paketverlust unter Last zeigen.
nload — Echtzeit-Bandbreite pro Interface
# Alle Interfaces anzeigen
nload
# Bestimmtes Interface
nload eth0
# Mehrere Interfaces gleichzeitig
nload eth0 eth1
nload zeigt eingehenden und ausgehenden Traffic in Echtzeit als ASCII-Balkendiagramm, inklusive aktueller, durchschnittlicher und maximaler Bandbreite.
iftop — Verbindungsbasiertes Traffic-Monitoring
# Alle Verbindungen auf eth0 anzeigen
sudo iftop -i eth0
# Ohne DNS-Auflösung (schneller)
sudo iftop -i eth0 -n
# Auf bestimmtes Subnetz filtern
sudo iftop -i eth0 -F 192.168.1.0/24
iftop zeigt die Bandbreitennutzung aufgeteilt nach Verbindungspaaren (Quelle-Ziel). Damit lässt sich schnell erkennen, welche Hosts oder Dienste am meisten Traffic verursachen.
nethogs — Traffic pro Prozess
# Traffic aller Prozesse auf eth0 anzeigen
sudo nethogs eth0
# Aktualisierungsrate setzen (Sekunden)
sudo nethogs -d 2 eth0
nethogs gruppiert den Traffic nach Prozess statt nach Verbindung. Damit lässt sich auf Anhieb erkennen, welches Programm gerade das Netzwerk belastet — etwa ein Update-Prozess, ein Backup-Job oder eine fehlerhafte Anwendung.
8. Nützliche Einzeiler
ARP-Tabelle anzeigen
# Modern (ip neigh)
ip neigh show
# Nur erreichbare Einträge
ip neigh show nud reachable
# Legacy (arp)
arp -n
Die ARP-Tabelle zeigt die Zuordnung von IP-Adressen zu MAC-Adressen im lokalen Segment. Fehlende oder falsche Einträge deuten auf L2-Probleme hin. Ein veralteter Eintrag kann zu Verbindungsproblemen führen — bereinigen mit sudo ip neigh del 192.168.1.50 dev eth0.
MAC-Adresse ändern
# Interface zuerst deaktivieren
sudo ip link set eth0 down
# Neue MAC-Adresse setzen
sudo ip link set eth0 address 02:00:00:00:00:01
# Interface wieder aktivieren
sudo ip link set eth0 up
# Aktuelle MAC-Adresse prüfen
ip link show eth0
Die MAC-Adresse lässt sich so für Tests oder zur Anonymisierung temporär ändern. Nach einem Neustart ist die originale Hardware-Adresse wieder aktiv, außer die Änderung wird persistent konfiguriert.
Interface-Statistiken
# Pakete, Bytes, Fehler und Drops pro Interface
ip -s link show
# Nur ein Interface
ip -s link show eth0
# Noch mehr Details (zweimal -s)
ip -s -s link show eth0
Hohe Werte bei errors oder dropped können auf Hardware-Probleme, Duplex-Mismatches oder überlastete Puffer hinweisen.
Firewall-Status prüfen
# iptables — klassische Firewall-Regeln anzeigen
sudo iptables -L -n -v
# NAT-Tabelle anzeigen
sudo iptables -t nat -L -n -v
# Mangle-Tabelle
sudo iptables -t mangle -L -n -v
# nftables — moderner Nachfolger von iptables
sudo nft list ruleset
# Nur eine bestimmte Tabelle
sudo nft list table inet filter
# Aktuelle Verbindungen im Conntrack-Cache
sudo conntrack -L
Auf modernen Systemen (Debian 11+, Ubuntu 20.04+) ist nftables der Standard. iptables ist dort oft nur ein Kompatibilitäts-Wrapper über nftables. Das lässt sich mit iptables --version prüfen — steht dort nf_tables, läuft alles über das neue Backend.
Weitere nützliche Einzeiler
# Offene Dateien und Netzwerkverbindungen eines Prozesses
sudo lsof -i -P -n | grep LISTEN
# Welcher Prozess lauscht auf Port 80?
sudo ss -tlnp | grep :80
sudo lsof -i :80
# Alle aktiven Netzwerkverbindungen eines Prozesses (PID 1234)
sudo ss -tp | grep pid=1234
# Hostname und zugehörige IP
hostname -I
# Öffentliche IP ermitteln
curl -s ifconfig.me
curl -s https://api.ipify.org
# Netzwerk-Namespaces anzeigen
ip netns list
9. Betrieb und Hardening
Regelmäßige Snapshots vor Netzwerkanpassungen.
Standardisierte Namenskonvention für Interfaces und VLANs.
Firewall-Regeln als Code dokumentieren.
Monitoring für Latenz, Paketverlust und DNS-Antwortzeiten aktivieren.
SSH-Zugang auf Key-Authentifizierung beschränken und Passwort-Login deaktivieren.
Netzwerkdienste auf das notwendige Minimum reduzieren — ss -tlnp regelmäßig prüfen.
Änderungen an Routing und Firewall mit git versionieren, wenn sie als Konfigurationsdateien vorliegen.
Bei iptables/nftables: Regeln persistieren (iptables-save / nft list ruleset > /etc/nftables.conf), sonst sind sie nach Neustart weg.