You are here

Nic bonding in Linux

In Linux wordt voor het teamen van netwerkkaarten de term 'bonding' gebruikt, dus laten we het vanaf hier ook maar zo noemen.
In deze how-to beschrijf ik hoe ik 2 nic's aan elkaar bond op Mandriva 2007.0, echter vermoedt ik dat dit op een andere distro niet anders zal gaan.

Eerste controle

In de Mandriva kernel zat de 'bonding' driver al ingebakken.
Met het volgende commando controleer je of dat op jouw machine ook het geval is.

lsmod | grep bonding

Als je hierop geen output krijgt, is de driver nog niet geladen. Het is wel mogelijk dat de driver als module bij de kernel zit, in dat geval is de driver te laden met het commando:

modprobe bonding

Als hierop vervolgens geen foutmelding verschijnt, is de bonding module ook op jouw systeem aanwezig. Krijg je de melding dat deze module niet gevonden is, raak je helaas aan het compileren. Hier ga ik verder niet op in.

De bonding module is de eerste vereiste voor het aan de praat krijgen van bonding, omdat dit de virtuele netwerkdriver is waaraan we de nics gaan verbinden

De module activeren

Vervolgens gaan we de bonding module activeren.
Hiervoor moet het bestand /etc/modprobe.conf worden aangepast.

Als het goed is heb je de volgende regels al in dit bestand staan:

alias eth0 e1000
alias eth1 e1000

In bovenstaand voorbeeld is e1000 de module die als driver wordt geladen voor de beide netwerkkaarten.

Voeg nu de volgende regels daaraan toe:

alias bond0 bonding
options bond0 max_bonds=2 miimon=100 mode=1

Waarin bond0 de naam van de virtuele adapter is en bonding de kernel module die als driver voor bond0 geladen wordt.

De adapters configureren

Vervolgens nemen we een kijkje in de directory /etc/sysconfig/network-scripts/
Hierin heb je als het goed is al de bestanden 'ifcfg-eth0', en 'ifcfg-eth1' staan.
Dit zijn de configuratie-bestanden van de beide netwerkkaarten.

Ikzelf heb deze bestanden hernoemd, naar old.ifcfg-eth0 en old.ifcfg-eth1.
Vervolgens heb ik deze bestanden opnieuw aangemaakt, met daarin de volgende inhoud:

DEVICE=eth0
USERCTL=no
ONBOOT=yes
MASTER=bond0
SLAVE=yes
BOOTPROTO=none
MII_NOT_SUPPORTED=yes

Het hierboven genoemde 'DEVICE=' moet overeen komen met de naam van de netwerk interface.

Nu maken we nog een bestand aan, genaamd 'ifcfg-bond0', met daarin de volgende inhoud:

DEVICE=bond0
IPADDR=192.168.1.1
NETMASK=255.255.255.0
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
MII_NOT_SUPPORTED=yes

Nu wilde ik graag de interface een ip-adres via DHCP laten toewijzen.
Hiervoor verwijderde ik de IPADDR en NETMASK regels, en wijzigde ik de regel

BOOTPROTO=none

naar

BOOTPROTO=dhcp

De verbinding activeren

Nu alles goed is ingesteld, kunnen we de verbinding gaan activeren.

Volgens de how-to waar ik mijn informatie uit heb, is de verbinding nu te activeren door simpelweg 'service network restart' in te tikken. Echter was in mijn geval toch een reboot noodzakelijk.

Bron en andere links

Mijn bron was deze how-to

Bonding SF.net project pagina - De thuisbasis van de bonding module
Bonding (Port Trunking) - Informatie over de diverse bonding modes.
Linux Ethernet Bonding Driver mini-howto - Een korte how-to.