Kaum einer kennt es, obwohl das Kommando schon seit Kernel 2.2 existiert: »ip« gelangt mit den Paketen »iproute2« oder »iproute« auf den Linux-PC. Alexey Kuznetsov hat dieses Tool für Linux 2.2 entwickelt, als er auch den IPv4- und IPv6-Routing-Code für den Kernel schrieb. Linux erhielt damals erstmals Fähigkeiten, die heute Advanced Routing oder Policy Routing heißen.
Um die beste Route eines IP-Pakets zu ermitteln, analysiert ein herkömmlicher Router nur die Ziel-IP-Adresse und schlägt in seiner Routing-Tabelle nach. Policy Routing erlaubt dagegen vielfältige Anpassungen. Dazu verwaltet der Linux-Kernel bei Bedarf bis zu 256 Routing-Tabellen. Vom Admin vorgegebene Regeln definieren danach, für welche Pakete das System welche Routing-Tabellen zu Rate zieht.
Alles vereint
Vor diesen eher anspruchsvollen »ip«-Aufgaben gilt es, sich mit den einfacheren Fähigkeiten des Befehls vertraut zu machen. Die 60-seitige "IP Command Reference" [2], die die meisten Pakete unter dem Namen »ip-cref.ps« enthalten, dient als Anleitung und Nachschlagewerk. Debian speichert die Datei beispielsweise komprimiert unter »/usr/share/doc/iproute/ip-cref.ps.gz«, Suse Linux 10.1 verstaut sie als PDF-Version unter »/usr/share/doc/packages/iproute2/ip-cref.pdf«.
Guter Überblick
Der »ip«-Aufruf zeigt zunächst wie »ifconfig«, »route« und »arp« den aktuellen Zustand an. Der Befehl horcht auf folgende Syntax:
ip [Optionen] Objekt [Kommando [Argumente]]
Alle vorhandenen Netzwerkkarten zeigt das Tool mit dem Befehl »ip link show« oder kurz »ip link« an, wofür keine Administrator-Rechte nötig sind. Hier ist »link« das Objekt und »show« das Kommando. Fehlt ein Kommando, nimmt Ip an, dass »show« gemeint ist. Das Kommando erlaubt auch Abkürzungen und Synonyme, etwa »ip link ls«. Abbildung 1 zeigt die Ausgabe.
Abbildung 1: Der Aufruf »ip link show« listet alle Netzwerkkarten, inklusive der virtuellen und nicht aktiven Interfaces. Letztere sind daran zu erkennen, dass das Schlüsselwort »UP« fehlt (»wlan0« und »sit0«).
In der Ausgabe ist erkennbar, dass die Karten »wlan0« und »sit0« nicht aktiv sind: Es fehlt das Flag »UP«. Die Karten »vmnet*« sind virtuelle Netzwerk-Schnittstellen von VMware. Um auch die Netzwerkadressen anzuzeigen, genügt es, als Objekt »addr« anzugeben statt »link«. Das Beispiel in Listing 1, Zeile 1, schränkt die Ausgabe zusätzlich auf das Device »eth0« ein.
01 # ip addr show dev eth0
02 2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000
03 link/ether 00:0f:1f:1c:bd:15 brd ff:ff:ff:ff:ff:ff
04 inet 192.168.255.100/24 brd 192.168.255.255 scope global eth0
05 inet6 fe80::20f:1fff:fe1c:bd15/64 scope link
06 valid_lft forever preferred_lft forever
07
08 # ip -s link show dev eth0
09 2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000
10 link/ether 00:0f:1f:1c:bd:15 brd ff:ff:ff:ff:ff:ff
11 RX: bytes packets errors dropped overrun mcast
12 440168179 10300520 0 0 0 123
13 TX: bytes packets errors dropped carrier collsns
14 808302790 13835300 0 0 0 0
|
Die Ausgabe in den Zeilen 2 bis 6 zeigt sowohl die IPv4- (»inet«) als auch die IPv6-Adresse (»inet6«) dieses Interface. Die Ethernet-Adresse (»link/ether«) erscheint auch schon bei »ip link«. Das alte Ifconfig zeigt per Default noch statistische Informationen an, die für die Fehlersuche hilfreich sind - Ip kann das auch, wenn der Aufruf die Option »-s« enthält (Listing 1, Zeile 8). Wer sich für die Routen oder den ARP-Cache interessiert (Address Resolution Protocol), erhält diese Informationen über »ip route show« beziehungsweise »ip neighbour show« (Abbildung 2).
Abbildung 2: Das »ip«-Programm zeigt die Routen (»ip route show«) und den Inhalt des ARP-Cache an, Zweiteres per »ip neigh show«. Hier dient »neigh« als bequeme Abkürzung für »neighbour« (Nachbar).
Alle bisher gezeigten Beispiele funktionieren ohne Root-Rechte. Administratoren zeigen mit Ip aber nicht nur die Informationen an, sondern verändern sie auch. Als Beispiel dient im Folgenden die Netzwerkkarte »dummy0«, die eine virtuelle Schnittstelle darstellt. Um diese Netzwerkkarte zu aktivieren, genügt der Befehl »ip link set dummy0 up« (Abbildung 3). Beim Aufruf dieses Befehls sollte das System automatisch das entsprechende Kernelmodul nachladen. Ist dies nicht der Fall, sorgt der manuelle Aufruf »modprobe dummy« für Nachhilfe in Sachen Dummy-Interface.
Abbildung 3: Der Befehl »ip link« aktiviert Netzwerkkarten, hier das virtuelle Interface »dummy0«. Die weiteren Kommandos verpassen ihm eine primäre und eine sekundäre IP-Adresse sowie ein Label.
Wer einer Netzwerkkarte mehrere IP-Adressen zuordnet, erzeugt mit dem klassischen Ifconfig neue Devices mit Namen »eth0:0«, »eth0:1« und so weiter. Ip arbeitet mit dem gleichen Gerätenamen und vergibt über den »label«-Parameter die Aliasnamen:
ip addr add 192.168.20.1 dev eth0 label eth0:0
Dieser Name darf später zum Beispiel in IPtables-Skripten auftauchen, was die Verwaltung von Firewall-Regeln deutlich vereinfacht. Das Label muss auch nicht die Form »eth0:0« haben. Es ist lediglich erforderlich, dass der Name mit dem Namen der Netzwerkkarte beginnt, gefolgt von einem Doppelpunkt und einer Zeichenkette.