Ip/Befehl

Aus Foxwiki


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.
  • Statistik

(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
  1. STALE – Der Nachbar ist gültig, aber wahrscheinlich schon nicht erreichbar.
  2. DELAY – Ein Paket wurde an den veralteten Nachbarn gesendet und der Kernel wartet auf Bestätigung.
  3. 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.
  • Es werden keine Versuche unternommen, diesen Eintrag zu validieren.
  • Er kann jedoch nach Ablauf seiner Lebensdauer entfernt werden
stale Der Nachbareintrag ist gültig, aber verdächtig.
  • Diese Option zum IP-Nachbarn ändert den Nachbarstatus nicht, wenn er gültig war und die Adresse durch diesen Befehl nicht geändert wird
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

  1. ping

Links

Projekt-Homepage

Weblinks

  1. https://www.cyberciti.biz/faq/linux-ip-command-examples-usage-syntax/
  2. Start Practising Linux ip command and Avoid the Habit of Using ifconfig (linoxide.com, 02.05.2014)
  3. IProute2 fasst viele Befehle für die Netzkonfiguration zusammen (Linux Magazin 11/2006)

Einzelnachweise

Testfragen

Testfrage 1

Antwort1

Testfrage 2

Antwort2

Testfrage 3

Antwort3

Testfrage 4

Antwort4

Testfrage 5

Antwort5