Twee netwerk interfaces, één IP adres: network bonding!

Reeds langere tijd was ik op zoek naar iets. Dat “iets” was iets dat ik niet wist hoe het noemde. Met tips en info van hulpvaardige lieden op ubuntu-nl.org kreeg dat iets de naam “Network bonding”.

Network bonding zorgt ervoor dat twee fysieke netwerkkaarten als één kaart gebruikt worden. In een huis-tuin-en-keuken- opstelling is dit echter geen dagelijkse kost, maar denk hierbij aan servers die een High Availability moeten waarmaken. Deze server zou door middel van twee UTP kabels met twee afzonderlijke switchen verbonden worden, stel dat één switch of één netwerkkabel stuk zou gaan, dan blijft de server verbonden met het internet. Schematisch:

Network Bonding

Nu stelt het probleem zich. Het is niet mogelijk dat twee netwerk interfaces hetzelfde IP adres geconfigureerd hebben. Op welk IP adres is de server dan toegankelijk, het IP van eth0 of het adres van eth1?

Door middel van network bonding is het mogelijk om één IP adres te delen over twee netwerk interfaces. Dit was de oplossing voor mijn probleem.

Hoe kan je dit realiseren? Volgende punten zijn getest op Ubuntu 8.04 32-bit server editie.

Allereerst voor de nieuwsgierige VMWare testers onder ons: VMWare ondersteunt dit spijtig genoeg niet. Ik weet niet of het onder VirtualBox wel werkt. Ikzelf heb alles getest op een vaste PC met twee netwerkkaarten.

1. Uitvoeren:
mii-tool

Dit zal aantonen of je netwerkkaarten network bonding ondersteunen of niet. De meest gangbare kaarten doen dit, de virtuele kaarten van VMWare dus helaas niet.

Wanner je het volgende op je scherm ziet verschijnen wrijf je enkele malen in je handen alvorens naar punt 2 te gaan.
eth0: negotiated 100baseTx-HD, link ok
eth1: negotiated 100baseTx-HD, link ok

2. Nu gaan we het programma dat voor de bonding zal zorgen installeren:
sudo apt-get install ifenslave

3. Na de installatie van ifenslave gaan we de configuratie induiken:
sudo nano /etc/modprob.d/aliases

Scroll helemaal naar onderen en voeg toe:
alias bond0 bonding
alias eth0 e100
alias eth1 e100
options bonding mode=0 miimon=100

Korte bespreking van de opties:
- mode = er zijn verschillende modes waarin bonding kan draaien. Zie hier voor overzicht van alle modes en verander desgewenst de mode.
- miimon = het aantal miliseconden wanneer de interface gecontroleerd wordt.

4. Het volgende bestand bewerken:
sudo nano /etc/modprob.d/arch/i386

Onderaan voegen we toe:
alias bond0 bonding
options bonding mode=0 miimon=100 downdelay=200 updelay=200

Korte bespreking van de opties:
- mode = opnieuw de mode.
- miimon = opnieuw het aantal miliseconden wanneer de interface gecontroleerd wordt.
- downdelay = het aantal miliseconden dat voorbij gaat voordat een interface als offline wordt bekeken.
- updelay = het aantal miliseconden dat voorbij gaat voordat een interface als online wordt bekeken.

5. Als laatste punt gaan we de interfaces zelf bewerken:
sudo nano /etc/network/interfaces

Verwijder alles betreffende eth0 en eth1 en voeg toe:
auto bond0
iface bond0 inet static
address 192.168.0.5
netmask 255.255.255.0
gateway 192.168.0.1
network 192.168.0.0
post-up ifenslave bond0 eth0 eth1

Waarbij “address” het IP adres is wat gebruikt zal worden.

Voor de zekerheid nog even de volledige server herstarten:
sudo shutdown -r now

Wanneer je nu een ifconfig doet zal je de bond0, eth0 en eth1 interfaces zien staan.

Klaar :-)

Bookmark and Share

About the Author