Ip/Befehl
topic kurze Beschreibung
Beschreibung
Der Befehl ip wird verwendet, um einer Netzwerkschnittstelle eine Adresse zuzuweisen und / oder Netzwerkschnittstellenparameter unter Linux-Betriebssystemen zu konfigurieren.
- Dieser Befehl ersetzt den alten guten und jetzt veralteten Befehl ifconfig auf modernen Linux-Distributionen.
Mit der Programmsammlung iproute2 rund um den zentralen Befehl ip lassen sich Netzwerkschnittstellen auf der Kommandozeile abfragen oder konfigurieren.
- Damit bietet sich diese Sammlung als vollwertiger Ersatz zu klassischen Befehlen wie ifconfig, route und netstat (sämtlich im Paket net-tools) an.
- Sie ist vollständig IPv6-kompatibel.
Enthalten sind des Weiteren die folgenden Werkzeuge: * ss (socket status, netstat-Ersatz)
- lnstat (link state, auch ctstat)
- nstat (network statistics tool)
- routef (flush routes)
- routel (list routes)
- rtstat (route state monitoring)
Nur mit Root-Rechten zugänglich sind: arpd (userspace arp daemon), rtacct (routing table realms and policy propagation), rtmon (routing table monitor) und tc (traffic control).
- Dieser Artikel beschränkt sich auf den Befehl ip.
- Im WLAN-Bereich ist der Befehl iw der Ersatz für das bisherige iwconfig.
Das Kommando ip aus der iproute2 Toolsammlung dient unter Linux zur Konfiguration von Netzwerkadressen.
- Es ersetzt das ifconfig Kommando aus den obsoleten net-tools.
- Dieser Artikel zeigt die wichtigsten Parameter des ip Kommandos anhand einiger Beispiele.
Installation
Der Befehl ip ist im Paket iproute2 enthalten, welches standardmäßig installiert ist
# apt install iproute2
Anwendung
ip versus ifconfig
Die Tabelle zeigt wichtige Befehle zur Netzwerkkonfiguration und vergleicht die Syntax der Kommandos ip und ifconfig:
Zweck | iproute2 Kommando | iproute2 Kommando Kurzversion | net-tools Kommando |
---|---|---|---|
Linkstatus anzeigen | ip link show | ip l | ifconfig |
Linkstatus inkl.
(RX/TX bytes, errors, ...) anzeigen |
ip -statistics link show | ip -s l | ifconfig |
IP Adresse anzeigen | ip addr show | ip a | ifconfig -a |
IP Adresse setzen | ip addr add IP/NETMASK dev DEVICE | ip a a IP/NETMASK dev DEVICE | ifconfig DEVICE IP/NETMASK |
IP Adresse entfernen | ip addr del IP/NETMASK dev DEVICE | ip a d IP/NETMASK dev DEVICE | |
IP Adressen entfernen | ip addr flush dev DEVICE | ip a f dev DEVICE | |
Routingtabelle anzeigen | ip route show | ip r | route -n |
Standardgateway setzen | ip route add default via IP | ip r a default via IP | route add default gw IP DEVICE |
ARP-Cache anzeigen | ip neigh show | ip n | arp -na |
Verbindungen anzeigen | ss --tcp --all --processes --extended --numeric | ss -tapen | netstat -tapen |
Informationen anzeigen
# 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: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether d4:3d:7e:cb:10:46 brd ff:ff:ff:ff:ff:ff inet 192.168.1.115/24 brd 192.168.1.255 scope global dynamic noprefixroute enp2s0 valid_lft 3561sec preferred_lft 3561sec inet6 2001::7213:7947:5dc7:71d0/64 scope global dynamic noprefixroute valid_lft 86107sec preferred_lft 14107sec inet6 fe80::9d6c:75be:55cb:d0fc/64 scope link noprefixroute valid_lft forever preferred_lft forever
IP-Adresse setzen
# ip a add {ip_addr/mask} dev {interface}
To assign 192.168.1.200/255.255.255.0 to eth0, enter:
# ip a add 192.168.1.200/255.255.255.0 dev eth0
OR
# ip a add 192.168.1.200/24 dev eth0
Broadcast-Adresse ändern
# ip addr add brd {ADDDRESS-HERE} dev {interface} # ip addr add broadcast {ADDDRESS-HERE} dev {interface} # ip addr add broadcast 172.20.10.255 dev dummy0
Fügen Sie der Schnittstelle eth0 die Adresse 192.168.1.50 mit der Netzmaske 255.255.255.0 (/ 24) mit Standardübertragung und der Bezeichnung „eth0Home“ hinzu:
# ip addr add 192.168.1.50/24 brd + dev eth0 label eth0Home
Sie können die Loopback-Adresse für das Loopback-Gerät lo wie folgt einstellen:
# ip addr add 127.0.0.1/8 dev lo brd + scope host
Löschen einer IP-Adresse
# ip a del {ipv6_addr_OR_ipv4_addr} dev {interface}
To delete 192.168.1.200/24 from eth0, enter:
# ip a del 192.168.1.200/24 dev eth0
Flush einer IP-Adresse
Mit dem folgenden Befehl können Sie alle IP-Adressen aus dem privaten Netzwerk 192.168.2.0/24 löschen:
# ip -s -s a f to 192.168.2.0/24 2: eth0 inet 192.168.2.201/24 scope global secondary eth0 2: eth0 inet 192.168.2.200/24 scope global eth0
*** Round 1, deleting 2 addresses *** *** Flush is complete after 1 round ***
Sie können die IP-Adresse auf allen ppp-Schnittstellen (Punkt-zu-Punkt) deaktivieren:
# ip -4 addr flush label "ppp*"
Hier ist ein weiteres Beispiel für alle Ethernet-Schnittstellen:
# ip -4 addr flush label "eth*"
Start/Stopp der Netzwerkkarte
# ip link set dev {DEVICE} {up|down}
Stoppen der Netzwerkkarte
# ip link set dev eth1 down
Starten der Netzwerkkarte
# ip link set dev eth1 up
Txqueuelen ändern
# ip link set txqueuelen {NUMBER} dev {DEVICE}
- Beispiel
Standardeinstellung txqueuelen für eth0 von 1000 auf 10000 ändern
# ip link set txqueuelen 10000 dev eth0 # ip a list eth0
MTU ändern
Für Gigabit-Netzwerke können Sie die maximale Größe der Übertragungseinheiten (MTU) festlegen:
# ip link set mtu {NUMBER} dev {DEVICE}
Geben Sie Folgendes ein, um die MTU des Geräts eth0 auf 9000 zu ändern:
# ip link set mtu 9000 dev eth0 # ip a list eth0 2: eth0: mtu 9000 qdisc pfifo_fast state UP qlen 1000 link/ether 00:08:9b:c4:30:30 brd ff:ff:ff:ff:ff:ff inet 192.168.1.10/24 brd 192.168.1.255 scope global eth1 inet6 fe80::208:9bff:fec4:3030/64 scope link valid_lft forever preferred_lft forever
Neighbour cache anzeigen
# ip n show # ip neigh show 74.xx.yy.zz dev eth1 lladdr 00:30:48:yy:zz:ww REACHABLE 10.10.29.66 dev eth0 lladdr 00:30:48:c6:0a:d8 REACHABLE 74.ww.yyy.xxx dev eth1 lladdr 00:1a:30:yy:zz:ww REACHABLE 10.10.29.68 dev eth0 lladdr 00:30:48:33:bc:32 REACHABLE 74.fff.uu.cc dev eth1 lladdr 00:30:48:yy:zz:ww STALE 74.rr.ww.fff dev eth1 lladdr 00:30:48:yy:zz:ww DELAY 10.10.29.65 dev eth0 lladdr 00:1a:30:38:a8:00 REACHABLE 10.10.29.74 dev eth0 lladdr 00:30:48:8e:31:ac REACHABLE
- STALE – Der Nachbar ist gültig, aber wahrscheinlich schon nicht erreichbar.
- DELAY – Ein Paket wurde an den veralteten Nachbarn gesendet und der Kernel wartet auf Bestätigung.
- REACHABLE – Der Nachbar ist gültig und anscheinend erreichbar.
Statische Neighbour-Einträge
# ip neigh add {IP-HERE} lladdr {MAC/LLADDRESS} dev {DEVICE} nud {STATE}
Fügen Sie einen permanenten ARP-Eintrag für den Nachbarn 192.168.1.5 auf dem Gerät eth0 hinzu:
# ip neigh add 192.168.1.5 lladdr 00:1a:30:38:a8:00 dev eth0 nud perm
neighbour state (nud) | Bedeutung |
---|---|
permanent | Der Nachbareintrag ist für immer gültig und kann nur administrativ entfernt werden |
noarp | Der Nachbareintrag ist gültig.
|
stale | Der Nachbareintrag ist gültig, aber verdächtig.
|
reachable | Der Nachbareintrag ist gültig, bis das Erreichbarkeitszeitlimit abgelaufen ist |
Löschen Sie einen ARP-Eintrag
# ip neigh del {IPAddress} dev {DEVICE} # ip neigh del 192.168.1.5 dev eth1
Änderungen sind Status für den Nachbarn 192.168.1.100 auf dem Gerät eth1 erreichbar
# ip neigh chg 192.168.1.100 dev eth1 nud reachable
Flush ARP entry
# ip -s -s n f {IPAddress}
flush neighbour/arp table:
# ip -s -s n f 192.168.1.5
oder
# ip -s -s n flush 192.168.1.5
Beispiele
Die folgenden Ausgaben zeigen einige Beispiele von iproute2 Kommandos.
ip help
$ ip help Usage: ip [ OPTIONS ] OBJECT { COMMAND | help } ip [ -force ] -batch filename where OBJECT := { link | addr | addrlabel | route | rule | neigh | ntable | tunnel | tuntap | maddr | mroute | mrule | monitor | xfrm | netns } OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] | -f[amily] { inet | inet6 | ipx | dnet | link } | -l[oops] { maximum-addr-flush-attempts } | -o[neline] | -t[imestamp] | -b[atch] [filename] | -rc[vbuf] [size]}
ip link show
$ ip link show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 08:00:27:66:72:e1 brd ff:ff:ff:ff:ff:ff
ip -statistics link show
$ ip link show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 RX: bytes packets errors dropped overrun mcast 2073916 4895 0 0 0 0 TX: bytes packets errors dropped carrier collsns 2073916 4895 0 0 0 0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 08:00:27:66:72:e1 brd ff:ff:ff:ff:ff:ff RX: bytes packets errors dropped overrun mcast 1716782262 1369751 0 0 0 0 TX: bytes packets errors dropped carrier collsns 308636400 1172428 0 0 0 0
ip addr show
$ ip addr show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 08:00:27:66:72:e1 brd ff:ff:ff:ff:ff:ff inet 10.1.102.59/24 brd 10.1.102.255 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::a00:27ff:fe66:72e1/64 scope link valid_lft forever preferred_lft forever
ip addr add IP/NETMASK dev DEVICE
$ sudo ip addr add 10.1.102.60/24 dev eth0 $ ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 08:00:27:66:72:e1 brd ff:ff:ff:ff:ff:ff inet 10.1.102.59/24 brd 10.1.102.255 scope global eth0 valid_lft forever preferred_lft forever inet 10.1.102.60/24 scope global secondary eth0 valid_lft forever preferred_lft forever inet6 fe80::a00:27ff:fe66:72e1/64 scope link valid_lft forever preferred_lft forever
ip addr del IP/NETMASK dev DEVICE
$ sudo ip addr del 10.1.102.60/24 dev eth0 $ ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 08:00:27:15:17:5e brd ff:ff:ff:ff:ff:ff inet 10.1.102.54/24 brd 10.1.102.255 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::a00:27ff:fe15:175e/64 scope link valid_lft forever preferred_lft forever
ip addr flush dev DEVICE
$ sudo ip addr flush dev eth0 $ ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 08:00:27:15:17:5e brd ff:ff:ff:ff:ff:ff
ip route show
$ ip route show default via 10.1.102.1 dev eth0 metric 100 10.1.102.0/24 dev eth0 proto kernel scope link src 10.1.102.59
ip route add default via IP
$ sudo ip route add d via 10.1.102.1
ip neigh show
$ ip neigh show 10.1.102.101 dev eth0 lladdr f0:de:f1:f3:17:88 REACHABLE 10.1.102.1 dev eth0 lladdr 00:0c:42:97:79:63 REACHABLE
Beispiele
Status aller Schnittstellen
$ ip link 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: irda0: <NOARP> mtu 2048 qdisc noop state DOWN qlen 8 link/irda 00:00:00:00 brd ff:ff:ff:ff 3: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc mq state DOWN qlen 1000 link/ether 00:05:4e:4f:65:e5 brd ff:ff:ff:ff:ff:ff 4: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
Statistik aller Schnittstellen
wie ifconfig
$ ip -s link
Statistik der Schnittstelle eth0 anzeigen
$ ip -s link show eth0 4: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0d:60:b1:16:7f brd ff:ff:ff:ff:ff:ff RX: bytes packets errors dropped overrun mcast 2631476274 2634102 0 0 0 0 TX: bytes packets errors dropped carrier collsns 449098710 2363841 0 0 0 0
IP-Adresse der Schnittstelle eth0 anzeigen
$ ip addr show eth0 4: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0d:60:b1:16:7f brd ff:ff:ff:ff:ff:ff inet 192.168.178.68/24 brd 192.168.178.255 scope global eth0
Standard-Gateway der aktiven Schnittstelle (eth0) anzeigen
$ ip route show | grep 'default' default via 192.168.178.1 dev eth0
Syntax
# ip OBJECT COMMAND
# ip [options] OBJECT COMMAND
# ip OBJECT help
$ ip OPTIONEN SCHNITTSTELLE
Da manche der Optionen dem System-Administrator vorbehalten sind, muss man je nach Anwendungsfall den Befehl sudo voranstellen.
Die CIDR-Notation ermöglicht im Gegensatz zur Dezimalpunktschreibweise von IPv4 kürzere Ausdrücke.
- Beispiel: 192.168.0.0/24 entspricht dem bisherigen 192.168.0.0/255.255.255.0.
- Während man früher wahlweise beide Schreibweisen verwenden konnte, ist nur noch CIDR erlaubt.
OBJECTS-Syntax
OBJEKTE können eine der folgenden sein und können in vollständiger oder abgekürzter Form geschrieben sein:
Objekt | Kurzform | Zweck |
---|---|---|
link | l | Network device |
address | a / addr | Protocol (IP or IPv6) address on a device |
addrlabel | addrl | Etikettenkonfiguration für die Auswahl der Protokolladresse |
neighbour | n / neigh | ARP or NDISC cache entry |
route | r | Routing-Tabelleneintrag |
rule | ru | Regel in der Routing-Richtliniendatenbank |
maddress | m / maddr | Multicast address |
mroute | mr | Multicast-Routing-Cache-Eintrag |
tunnel | t | Tunnel over IP |
xfrm | x | Framework für das IPSec-Protokoll |
Um Informationen zu jedem Objekt abzurufen, verwenden Sie den Hilfebefehl wie folgt:
# ip OBJECT help # ip OBJECT h # ip a help # ip r help
Optionen
ip kennt sehr viele Optionen (siehe auch Beispiele), die man bei Bedarf in der Manpage oder in der Dokumentation nachschlagen kann.
- Zusätzlich gibt es eine komfortable Soforthilfe: man kombiniert die gewünschte Option mit dem Schlüsselwort help.
$ ip link help
Nachfolgend eine praktisch orientierte Übersicht, die alte und neue Befehle gegenüberstellt.
Alte und neue Befehle | ||
Traditionell | Neu | Zweck |
ifconfig SCHNITTSTELLE | ip addr show SCHNITTSTELLE | IP-Adresse anzeigen |
ifconfig SCHNITTSTELLE hw ether MAC-ADRESSE | ip link set dev SCHNITTSTELLE address MAC-ADDRESSE | MAC-Adresse ändern |
ifconfig SCHNITTSTELLE IP-ADRESSE netmask NETMASK broadcast BROADCAST | ip addr change IP-ADRESSE/CIDR broadcast BROADCAST dev SCHNITTSTELLE | IP-Adresse setzen |
ip addr add IP-ADRESSE/CIDR broadcast BROADCAST dev SCHNITTSTELLE | IP-Adresse hinzufügen | |
ifconfig SCHNITTSTELLE:1 IP-ADRESSE/CIDR | ip addr add IP-ADRESSE/CIDR dev SCHNITTSTELLE label SCHNITTSTELLE:1 | Alias anlegen |
- | ip addr del IP-ADRESSE/CIDR dev SCHNITTSTELLE | IP-Adresse löschen |
ifconfig SCHNITTSTELLE up | ip link set SCHNITTSTELLE up | Schnittstelle aktivieren |
ifconfig SCHNITTSTELLE down | ip link set SCHNITTSTELLE down | Schnittstelle deaktivieren |
route, route -6 | ip route, ip -6 route | Routen (für IPv6) anzeigen |
route add default gw IP-ADRESSE | ip route add default via IP-ADRESSE dev SCHNITTSTELLE | Gateway setzen |
arp -a | ip neighbour | ARP |
netstat | ss | Sockets anzeigen |
Die Optionen für ip kann man auch in Kurzschreibweise als Anfangsbuchstaben der Option angeben.
- Wenn man z.B.
- für alle Netzwerkschnittstellen des Systems die IP-Adressen ausgeben möchte, benötigt man den Befehl ip addr show.
- Die Kurzform ip a s liefert das gleiche Ergebnis.
Alt vs Neu
Veralteter Linux-Befehl und deren Ersetzung:
Alter Befehl | Neuer Befehl |
---|---|
ifconfig -a | ip a |
ifconfig enp6s0 down | ip link set enp6s0 down |
ifconfig enp6s0 up | ip link set enp6s0 up |
ifconfig enp6s0 192.168.2.24 | ip addr add 192.168.2.24/24 dev enp6s0 |
ifconfig enp6s0 netmask 255.255.255.0 | ip addr add 192.168.1.1/24 dev enp6s0 |
ifconfig enp6s0 mtu 9000 | ip link set enp6s0 mtu 9000 |
ifconfig enp6s0:0 192.168.2.25 | ip addr add 192.168.2.25/24 dev enp6s0 |
netstat | ss |
netstat -tulpn | ss -tulpn |
netstat -neopa | ss -neopa |
netstat -g | ip maddr |
route | ip r |
route add -net 192.168.2.0 netmask 255.255.255.0 dev enp6s0 | ip route add 192.168.2.0/24 dev enp6s0 |
route add default gw 192.168.2.254 | ip route add default via 192.168.2.254 |
arp -a | ip neigh |
arp -v | ip -s neigh |
arp -s 192.168.2.33 1:2:3:4:5:6 | ip neigh add 192.168.3.33 lladdr 1:2:3:4:5:6 dev enp6s0 |
arp -i enp6s0 -d 192.168.2.254 | ip neigh del 192.168.2.254 dev wlp7s0 |
Parameter
Umgebungsvariablen
Exit-Status
Konfiguration
Dateien
Sicherheit
Dokumentation
RFC
Man-Pages
Info-Pages
Siehe auch
Links
Projekt-Homepage
Weblinks
- https://www.cyberciti.biz/faq/linux-ip-command-examples-usage-syntax/
- Start Practising Linux ip command and Avoid the Habit of Using ifconfig (linoxide.com, 02.05.2014)
- IProute2 fasst viele Befehle für die Netzkonfiguration zusammen (Linux Magazin 11/2006)
- Iproute2 - Wikipedia
- Dokumentation:
- ipset - administration tool for kernel IP sets
- Shell/Befehlsübersicht Übersicht über verschiedene Shell-Befehle
Einzelnachweise
Testfragen
Testfrage 1
Testfrage 2
Testfrage 3
Testfrage 4
Testfrage 5