Tipp: Netzwerk mit ip
Geschichtsstunde: ifconfig
Vielen ist der Befehl ifconfig
ein Begriff, ist er doch
seit Jahrzehnten für die Konfiguration des Netzwerks unter Unix-
oder Linux-Systemen zuständig. So sehen beispielsweise Aufrufe zum
Setzen einer IP-Adresse und Anzeigen der Konfiguration aus:
root@linux:~# ifconfig eth0 192.168.1.1 netmask 255.255.255.0 up
root@linux:~# ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.1 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::225:90ff:fec0:ffee prefixlen 64 scopeid 0x20<link>
ether 00:25:90:c0:ff:ee txqueuelen 1000 (Ethernet)
RX packets 123346 bytes 120154576 (114.5 MiB)
RX errors 0 dropped 2571 overruns 0 frame 0
TX packets 126744 bytes 71491997 (68.1 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device memory 0xfe120000-fe13ffff
Auf die Details gehen wir an dieser Stelle nicht ein. Inzwischen
bietet der Linux Kernel neue Funktionen, die ifconfig
nicht mehr
bedient. Eine Anpassung hätte weitreichende Eingriffe erfordert
und eine Änderung oder Erweiterung der Syntax mit sich gebracht. So
hat man sich entschlossen, gleich ein neues Programm ins Leben zu
rufen. Das Resultat is der Befehl mit dem kurzen und prägnanten Namen
ip
. Dieser ersetzt nicht nur den Befehl ifconfig
, sondern auch
die Befehle route
und arp
.
Netzwerkkonfiguration mit ip
Das Befehl ip
bringt von sich aus eine einfache Hilfe mit. Ohne
Parameter aufgerufen, verrät es uns weitere Optionen:
root@linux:~# ip
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 | l2tp | tcp_metrics | token }
OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] |
-f[amily] { inet | inet6 | ipx | dnet | bridge | link } |
-4 | -6 | -I | -D | -B | -0 |
-l[oops] { maximum-addr-flush-attempts } |
-o[neline] | -t[imestamp] | -b[atch] [filename] |
-rc[vbuf] [size]}
So erfahren wir, dass ip
auf jeden Fall ein Objekt als Parameter
erwartet. Folgen kann diesem Objekt ein Kommando oder help
.
Um eine Adresse zu setzen, interessiert uns
im Speziellen das Objekt addr
, kurz für address
. Wir rufen einfach
die entsprechende Hilfe auf:
root@linux:~# ip addr help
Usage: ip addr {add|change|replace} IFADDR dev STRING [ LIFETIME ]
[ CONFFLAG-LIST ]
ip addr del IFADDR dev STRING [mngtmpaddr]
ip addr {show|save|flush} [ dev STRING ] [ scope SCOPE-ID ]
[ to PREFIX ] [ FLAG-LIST ] [ label PATTERN ] [up]
ip addr {showdump|restore}
[...]
Mit dem Kommando add
lassen sich also Adressen hinzufügen, die
zusätzlich notwendigen Parameter sind ebenfalls bekannt. Die Adresse
aus dem ifconfig
-Beispiel setzt ip
mit folgendem Befehl:
root@linux:~# ip addr add 192.168.1.1/24 dev eth0
Kehrt der Prompt ohne Fehlermeldung zurück, wurde ip
ohne Fehler
ausgeführt, die Adresse ist also gesetzt.
Netzwerkkommunikation ist jetzt allerdings noch nicht möglich.
ifconfig
konnte mit dem zusätzlichen Parameter up
die
Netzwerschnittstelle direkt aktivieren. Dafür ist nun ein zusätzlicher
ip
-Aufruf mit dem Objekt link
notwendig.
root@linux:~# ip link set up dev eth0
Mit dem Kommando show
zeigt ip
nun die gerade angewandten
Einstellungen an. Die Angabe des Interface ist nicht zwingend
notwendig. Fehlt sie, werden die Informationen zu allen
Netzwerschnittstellen angezeigt.
root@linux:~# ip addr show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:25:90:c0:ff:ee brd ff:ff:ff:ff:ff:ff
inet 192.168.1.1/24 brd 192.168.1.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::225:90ff:fec0:ffee/64 scope link
valid_lft forever preferred_lft forever
Die Menge der übertragenen Daten zeigt ip
nur mit der zusätzlichen
Option -s
an:
root@linux:~# ip -s link show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether 00:25:90:c0:ff:ee brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
124815731 132120 0 3820 0 0
TX: bytes packets errors dropped carrier collsns
72327039 134225 0 0 0 0
Das Setzen einer weiteren IP-Adresse auf ein Interface überschreibt übrigens nicht die erste, sondern würde lediglich eine zusätzliche hinzufügen. Soll die Adresse geändert werden, muss zunächst die alte Adresse entfernt werden.
root@linux:~# ip addr del 192.168.1.1/24 dev eth0
Alternativ lassen sich auch alle IP-Adressen auf einen Schlag mit dem
Kommando flush
löschen.
root@linux:~# ip addr flush dev eth0