Bonding – Gentoo

Bonding 2×2 Ethernet ( Active / Standby )

Wir gehen davon aus, dass wir bereits ein lauffähiges Gentto Linux unser eigen nennen.
Nun müssen wir ein Kenrelmodul aktivieren, welches standardmüsig nicht aktiviert ist.
Es handelt sich hierbei um das Modul “bonding”

Wozu benötigen wir Bonding überhaupt? Bonding ist ne feine Sache in Hochverfügbaren umgebungen. Man schleist zwei Ethernetadapter zu einem Virtuellen zusammen, wovon aber immer nur einer aktiv ist. Sollte dieser ausfallen (Master), (kein Link, Harwaredefekt, … was weiss ich) wird automatisch auf den anderen (Slave) umgeschaltet ohne dass die Aussenwelt einen Ausfall bemerkt!

Diese Modul auf gar keinen Fall fest in den Kernel einkompilieren sondern nur als Modul, da wir später diesem einige Parameter übergeben müssen.
Dies würde uns im fest einkompilierten Zustand leider nicht gelingen.

Bonding Support aktivieren

[*] Device Driver
[*] Network Device Support
[M] Bonding Driver Support

Zusätzlich aktivieren wir noch 802.1Q (Vlan Support)

Den brauche wir zwar jetzt noch nicht aber evtl. später, wenn wir über die gebondeten Adapter noch
einzelne Vlans legen wollen! Sehr nötzlich bei Firewalls oder sehr grossen DHCP-Servern

[*] Networking Support
Networking Options
(M) 802.1Q Vlan Support

Aber weiter zum Bonding.
Nun benötigen wir einige Ergänzungen in einigen Dateien!

cat /etc/modules.autoload.d/kernel-2.6

# /etc/modules.autoload.d/kernel-2.6: kernel modules to load when system boots.
#
# Note that this file is for 2.6 kernels.
#
# Add the names of modules that you'd like to load when the system
# starts into this file, one per line. Comments begin with # and
# are ignored. Read man modules.autoload for additional details.

## VLAN MODUL
8021q
## BONDING MODUL (ALIAS) für BOND0 (eth0 + eth1)
bond0
## BONDING MODUL (ALIAS) für BOND1 (eth2 + eth3)
bond1

Wir installieren mit

emerge ifenslave

Die Unterstützung für Bonding. Dabei wird folgende Datei angelegt, die wir allerdings noch weiter ergänzen müssen!

cat /etc/modules.d/bond

## read /usr/src/linux/Documentation/networking/bonding.txt for help!
## DEFINITION DER ALIASE
alias bond0 bonding
alias bond1 bonding
## PARAMETER FÜR DAS BONDING MODULE
## mode=1 STEHT HIER FÜR DEN MASTER/SLAVE BETRIEB, DEN ICH EMPFEHLE
options bond0 mode=1 max_bonds=2 miimon=100
options bond1 mode=1 max_bonds=2 miimon=100

Zu guter letzt müssen wir noch das Netzwerk einrichten.
Hierfür editieren Wir die Datei /etc/conf.d/net und ändern diese so ab, dass sie der folgenden entspricht!

cat /etc/conf.d/net

#####################################################################################################
##
## PACKAGES WE NEED: vconfig, ifenslave, ethtool, iproue2
##
##
=================================================================================================
## Interface Layout
## =================================================================================================
##
## eth0/1 = bond0 | eth2/3 = bond1 |
##
## =================================================================================================
## Port Assignment / Cabling
## =================================================================================================
##
## NIC | BackBone - SWITCH | Port
## ---------------------------------------
## bond0 | A + B | 1/x
## bond1 | A + B | 1/x
##
## =================================================================================================
## Internal VLAN Table
## =================================================================================================
##
## VLAN-ID | Firewalled | Routed | Subnet | Description
## ------------------------------------------------------------------------
## 100 | Y | Y | 10.1.10.xxx | UNUSED
## 110 | Y | Y | 10.1.11.xxx | 4LORDS_SERVER
## 120 | Y | Y | 10.1.12.xxx | 4LORDS_MONITORING
## 130 | Y | Y | 10.1.13.xxx | 4LORDS_VPN

## 200 | Y | Y | 10.1.20.xxx | 4LORDS_DMZ
## 201 | Y | Y | 10.1.21.xxx | 4LORDS_MANAGEMENT
## 202 | Y | Y | 10.1.22.xxx | 4LORDS_DB

#####################################################################################################
modules="ifconfig"

slaves_bond0="eth0 eth1"
slaves_bond1="eth2 eth3"

#######################################################
## VLAN Interface naming scheme
#######################################################
#vconfig_bond0="set_name_type VLAN_PLUS_VID_NO_PAD"
#vconfig_bond1="set_name_type VLAN_PLUS_VID_NO_PAD"

#vconfig_vlan100="set_flag 1" "set_egress_map 2 6"
#vconfig_vlan200="set_flag 1" "set_egress_map 2 6"

#######################################################
## Disable interfaces for "normal" use
#######################################################
ifconfig_bond0="0.0.0.0"
ifconfig_bond1="0.0.0.0"
ifconfig_eth0="0.0.0.0"
ifconfig_eth1="0.0.0.0"
ifconfig_eth3="0.0.0.0"
ifconfig_eth4="0.0.0.0"

config_bond0="null"
config_bond1="null"
config_eth0="null"
config_eth1="null"
config_eth2="null"
config_eth3="null"

#######################################################
## bond0: ( EXTERNAL NETWORK )
## HERE WE USE ONLY VIRTUAL NIC'S
#######################################################
config_bond0="81.169.145.194/28"

## BSP FUER MEHRERE IP'S AUF EINEM BOND
#config_bond0="81.169.145.194/28" "81.169.145.2/28"

config_bond1="null"

#######################################################
## Routing Table(s)
#######################################################

## Default Route
routes_bond0="default via 81.169.206"

Nun ist es nur noch nötig /etc/init.d/ anzupassen.
cd /etc/init.d/

Nun Löschen wir die Links net.eth0 – net.eth3 und legen folgende neue an:

ln -s net.lo net.bond0
ln -s net.lo net.bond1

Im Runlevel boot registieren:

update-rc add net.bond0 boot
update-rc add net.bond1 boot

Jetzt werden die Apater nach einem Reboot automatisch gestartet!
Achtung … FÜR diese Config benötigt Ihr mindestens zwei Ethernetadpater für Bond0.
Bond1 ist ist per Config auf “null” gesetzt!