ifup und ifdown versus ifconfig
in Linux, Netzwerk | Tags: eth0, ifconfig, ifdown, ifup, IP, Linux, NetzwerkManchmal fragt man sich schon, wieviele Wege nach Rom führen mögen. Zum Beispiel kann man unter Linux eine Netzwerk-Karte (hier genannt eth0), unter zig Varianten konfigurieren und aktivieren.
Zum einen gibt es
1 | # ifconfig eth0 up |
# ifconfig eth0 up
zum anderen aber auch
1 | # ifup eth0 |
# ifup eth0
wie auch
1 | # ip link set eth0 up |
# ip link set eth0 up
Ich habe mich schon immer gefragt: “Was ist da der Unterschied?” Nun, zu ifconfig konnte ich folgendes herausfinden:
- ifconfig nimmt Netzwerk-Parameter aus der Kommandozeile entgegen
- ifconfig kann mehrere Schnittstellen konfigurieren: ifconfig eth0 eth5 eth6 up/down
- ifconfig lädt bzw. entlädt die Treiber zur Karte – dies führte zum Beispiel bei den e1000-Karten zu Problemen
ifup und ifdown dagegen verhalten sich ein wenig anders:
- ifup und ifdown lesen die Netzwerk-Konfiguration aus /etc/network/interfaces aus
- ifup und ifdown können mit dem Parameter -a alle in /etc/network/interfaces aufgelisteten Netzwerk-Geräte konfigurieren
- ifup und ifdown laden oder entladen keine Treiber
- ifup und ifdown rufen ihrerseits ifconfig auf – das kann man in den binaries sogar nachlesen!
Das Märchen, ifup und ifdown seien nur Skripte, ist Unfug. Es sind kompilierte, binäre ELF-Programme.
Ebenso ein Märchen: Das Kommando ip sei ganz neu. Es ist ist seit Kernel 1.2 vorhanden, bietet auch ähnliche Parameter wie ifconfig und arbeitet ebenso wie ifconfig auf direkter Kommandozeilen-Ebene und direkt mit dem Kernel. ip möchte eigentlich soviel wie möglich nach außen sichtbar machen, was der Linux–Kernel alles mit IP-Adressen und Routing anstellen kann. Und das ist wirklich eine ganze Menge! Insofern sei nur ans Herz gelegt, auch mal ip eine Chance zu geben.
PS: Ich glaube, das if aus ifxxx steht immer für interface, was eigentlich mächtig ungenau ist…
PS2: Eine einfache Adress-Konfiguration erreicht man als Root mit:
1 2 | # ifconfig eth0 <IP-Adresse> netmask <Netzwerk-Maske> # route add default gw <Gateway-Adresse> |
# ifconfig eth0 <IP-Adresse> netmask <Netzwerk-Maske> # route add default gw <Gateway-Adresse>