Netzwerkkarten-Bündelung unter Linux
Das Bündeln von Netzwerkkarten unter Linux bringt vor allem zwei Vorteile: Bandbreite und Ausfallsicherheit. Mit dem "Bonding" Modul können Sie die zweite Karte vollständig übernehmen lassen, sollte die erste Netzwerkkarte versagen. Benötigen Sie mehr Bandbreite, bietet Ihnen dieses Modul die Möglichkeit, Daten von zwei verschiedenen Karten mit nur einer Adresse zu senden und zu empfangen (Linux - Linux gekreuzt direkt verbunden oder der Switch muss die Bündelung verstehen, z.B. mit "Trunks" bei HP Procurve).
Die Konfiguration ist simpel, wenn Sie den richtigen Ablauf einhalten. Zuerst Modul laden:
# modprobe bonding miimon=100 mode=1 (resp. mode=0)
Miimon=100 bedeutet 100ms Fail-over-Zeit. "mode=1" sorgt dafür, dass eine Leitung "aktiv", die andere im "backup" Zustand ist. Mit "mode=0" bündeln Sie die beiden Netzwerkkarten zur doppelten Bandbreite zusammen.
Dann das virtuelle Interface rauffahren:
# ifconfig bond0 1.2.3.4/24 up
Die IP Addresse des "virtuellen Interfaces" wird gemäss Ihren Angaben gesetzt, die neue Schnittstelle heisst in unserem Beispiel "bond0". Die richtige Konfiguration können Sie mit "ifconfig bond0" nachprüfen.
Danach binden Sie die normalen Karten an dieses neu erstellte Interface:
# ifenslave bond0 eth0 eth1
eth0 und eth1 werden dem bond0 Interface als "Sklaven" zugewiesen.
Das Packet "ifenslave" kann unter Debian mit "aptitude install ifenslave" oder unter Redhat mit "yum install ifenslave" aktiviert werden. Das "bonding" Modul hingegen sollte beim Kernel der Distibution bereits vorhanden sein. Falls Sie mehr als zwei Netzwerkkarten bündeln wollen, müssen Sie den Kernel anpassen.
Einen Tipp zur statischen Konfiguration unter RedHat ähnlichen Systemen will ich Ihnen nicht vorenthalten. In der Datei modprobe.conf oder modules.conf sollte bond0 erwähnt sein:
alias bond0 bonding
options bond0 miimon=100 mode=1
Falls Sie den "Interface bündeln"-Modus wählen, müssen Sie mode=0 setzen.
Hier ein Beispiel für die Konfiguration für eth0 (ifcfg-eth0, anzupassen im Verzeichnis /etc/sysconfig/network-scripts):
DEVICE=eth0
USERCTL=no
ONBOOT=yes
MASTER=bond0
SLAVE=yes
BOOTPROTO=none
MII_NOT_SUPPORTED=yes
Für das zweite Interface sieht die Config-Datei identisch aus (ifcfg-eth1), ausser, dass DEVICE=eth1 stehen muss.
Was jetzt noch fehlt, ist die korrekte Config für ifcfg-bond0:
DEVICE=bond0
IPADDR=1.2.3.4
NETMASK=255.255.255.0
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
MII_NOT_SUPPORTED=yes