[Debian] Ethernet channel bonding.

Pagina: 1
Acties:

  • Tatsu
  • Registratie: Augustus 2000
  • Niet online

Tatsu

Paradigm shift

Topicstarter
Ik heb mij eens op het terrein begeven om een tweetal 3Com 3c905B NIC's te gaan trunken, oftewel bonden. Met Windows was dit nogal redelijk simpel met een tweetal RTLK1839 NIC's. Alleen is het onder Debian Sarge wat moeilijker.

Mijn eerste stap was een kernel compilen, 2.6.9 met de mogelijkheid om NIC's te bonden. Mijn tweede stap was het uitzoeken hoe dat bonden in elkaar steekt, de derde was de uitvoer.
Ifenslave heb ik door middel van apt-get geinstalleerd. Aan /etc/modutils/aliases heb ik dit toegevoegd:

code:
1
2
alias bond0 bonding
options     miimon=100 mode=1 primary=eth0


Deze toepassing doorgevoerd door middel van update-modules.

Daarna heb ik /etc/network/interfaces aangepast en deze regels erin gezet:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.1.12
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.10

# The secondary network interface
auto eth1
iface eth0 inet static
address 192.168.1.13
netmask 255.255.255.0

# The bonding interface
auto bond0
iface bond0 inet static
address 192.168.1.11
netmask 255.255.255.0
ifenslave bond0 eth0 eth1


Daarna door middel van /etc/init.d/networking restart deze service opnieuw gestart. Met deze ifconfig tot resultaat:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
bond0     Link encap:Ethernet  HWaddr 00:00:00:00:00:00
          inet addr:192.168.1.11  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::200:ff:fe00:0/64 Scope:Link
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

eth0      Link encap:Ethernet  HWaddr 00:10:4B:63:3B:DB
          inet addr:192.168.1.12  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::210:4bff:fe63:3bdb/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:538 errors:0 dropped:0 overruns:0 frame:0
          TX packets:348 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:53324 (52.0 KiB)  TX bytes:32973 (32.2 KiB)
          Interrupt:12 Base address:0xb400

eth1      Link encap:Ethernet  HWaddr 00:10:5A:2F:DA:F5
          inet addr:192.168.1.13  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::210:5aff:fe2f:daf5/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:259 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:23466 (22.9 KiB)  TX bytes:378 (378.0 b)
          Interrupt:5 Base address:0xb000


Alles werkt nu wel naar behoren tot nu toe. Maar ik kwam een .PDF document tegen die een andere manier heeft. De bron: http://security.zhwin.ch/ha_security_gateway.pdf (pagina 22 t/m 24)

Deze insinueert dat ik eerst in /etc/modutils/aliases eth0 en eth1 moet specificeren:

code:
1
2
alias eth0 gt3
alias eth1 gt3

Waarbij gt3 voor de desbetreffende modulenaam staat, volgens mij.

Dan moet ik naar gelang dat document dus in /etc/network/interfaces de bond0 interface specificeren, zoiets als dit in mijn geval:

code:
1
2
3
4
5
6
7
8
9
# The bonding interface
auto bond0
iface bond0 inet static
address 192.168.1.11
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.10
ifenslave bond0 eth0 eth1


Ik heb dit dus geprobeerd, wat resulteerde tot een niet werkend bond0 array. Wat zie ik hier over het hoofd, wat moet ik voor gt3 invullen? :)

Edit: Let niet op mijn ifenslave code, deze moet nog gefinetuned worden. :P

If someone begins with uncertainty, experience will eventually lead to certainty. But what defines certainty?


  • SambalBij
  • Registratie: September 2000
  • Laatst online: 14-02 17:54

SambalBij

We're all MAD here

Als je netwerkkaarten al werken als eth0 en eth1 dan hoef je op zich die aliassen niet te gebruiken. Als je ze toch wel wil gebruiken dan moet je daar de naam van de module voor jouw netwerkkaarten opgeven. Voor de 3com 3C905 kaarten is dat 3c59x.

Sometimes you just have to sit back, relax, and let the train wreck itself


  • Tatsu
  • Registratie: Augustus 2000
  • Niet online

Tatsu

Paradigm shift

Topicstarter
Operations schreef op maandag 29 november 2004 @ 10:55:
Als je netwerkkaarten al werken als eth0 en eth1 dan hoef je op zich die aliassen niet te gebruiken. Als je ze toch wel wil gebruiken dan moet je daar de naam van de module voor jouw netwerkkaarten opgeven. Voor de 3com 3C905 kaarten is dat 3c59x.
Al geprobeerd, dit leidde tot een niet werkende bond0. :)

If someone begins with uncertainty, experience will eventually lead to certainty. But what defines certainty?


  • Tatsu
  • Registratie: Augustus 2000
  • Niet online

Tatsu

Paradigm shift

Topicstarter
Iemand verder nog een idee? :)

If someone begins with uncertainty, experience will eventually lead to certainty. But what defines certainty?


Verwijderd

Hmmm, even een wellicht ietwat off-topic vraagje dan: zit je nu ook vast aan die bond0 om netwerkverbinding te krijgen of werkt je netwerk ook gewoon als je nu alleen eth0 of alleen eth1 gebruikt? Ik zit er zelf ook over te denken om bonding toe te passen op een servertje van me namelijk :)

Edit:
Ho, bijna vergeten te vragen wat ik eigenlijk wilde vragen: waarom zou je die andere manier proberen (die kennelijk niet werkt) als je al een werkende bond0 config hebt?

[ Voor 24% gewijzigd door Verwijderd op 01-12-2004 16:43 ]


  • Tatsu
  • Registratie: Augustus 2000
  • Niet online

Tatsu

Paradigm shift

Topicstarter
Verwijderd schreef op woensdag 01 december 2004 @ 16:42:
Hmmm, even een wellicht ietwat off-topic vraagje dan: zit je nu ook vast aan die bond0 om netwerkverbinding te krijgen of werkt je netwerk ook gewoon als je nu alleen eth0 of alleen eth1 gebruikt? Ik zit er zelf ook over te denken om bonding toe te passen op een servertje van me namelijk :)

Edit:
Ho, bijna vergeten te vragen wat ik eigenlijk wilde vragen: waarom zou je die andere manier proberen (die kennelijk niet werkt) als je al een werkende bond0 config hebt?
Ik zit nu niet vast aan bond0, als de array niet gemaakt kan worden valt deze met de huidige /etc/network/interfaces gewoon weer terug naar eth0 en eth1. Alleen niet zo netjes als beschreven staat in dat .PDF document. Bond0 werkt nu tezamen met eth0 en eth1, wat inhoudt dat de server 3 IP adressen gebruikt. Op de manier waarop het document het beschrijft hoeft er alleen maar 1 IP adres gebruikt te worden. En met het juiste gebruik van ifenslave kan er weer terug worden gevallen op eth0 of eth1 indien de bond0 array niet gemaakt kan worden.

If someone begins with uncertainty, experience will eventually lead to certainty. But what defines certainty?


  • 0siris
  • Registratie: Augustus 2000
  • Laatst online: 07-02 23:33
woah...even wennen aan de nieuwe GoT layout :)
Nog afgezien van het hele Linux verhaal, moet je aan de hardware kant ook geen bonding / trunking support hebben? (M.a.w. gaat zoiets wel werken op een elcheapo sweex-switch van een paar tientejs?)

ach...in een volgend leven lach je er om!


  • FatalError
  • Registratie: Juni 1999
  • Laatst online: 21:46
Dat hangt van de bonding mode af.
Er zijn modes die prima op n el-cheapo switch of zelfs hub (heeft uiteraard geen zin) werken.
Als het mogelijk is zou ik uiteraard liever voor 802.3ad dynamic of static kiezen, aangezien dat tegenwoordig de standaard is.

If it ain't broken, tweak it! | gasloos sinds oktober 2025, hoekwoning 1978 | 10kWp PV, Panasonic K serie 7kW, Atlantic Explorer V5 270L | Tesla Model Y


  • Tatsu
  • Registratie: Augustus 2000
  • Niet online

Tatsu

Paradigm shift

Topicstarter
Ik heb een Soho 10/100mbit switch, werkt gewoon. :)

If someone begins with uncertainty, experience will eventually lead to certainty. But what defines certainty?


  • Tatsu
  • Registratie: Augustus 2000
  • Niet online

Tatsu

Paradigm shift

Topicstarter
Ik heb zelf nog steeds niks gevonden. Iemand anders die hier wel het een en ander aan licht op kan schijnen? :)

If someone begins with uncertainty, experience will eventually lead to certainty. But what defines certainty?


Verwijderd

Als ik thuis ben zal ik mijn scriptje wel eens even posten, ik heb 3 netwerkkaarten via deze weg aan elkaar gekoppeld. Bij mij werd alles netjes verdeeld over de 3 netwerkkaarten alleen kon de hardware het niet aan, bij een elcheapo switchje heb je meestal een te kleine backplane om het maximale te trekken.

  • Kippenijzer
  • Registratie: Juni 2001
  • Laatst online: 11-02 20:53

Kippenijzer

McFallafel, nu met paardevlees

Ik werk hier met een trunk van 2 Intel Gigabit NIC's op een 3Com 4400. Heb alle shit in de kernel gebouwd (heb iets tegen modules :P). Ik heb ruk verstand van Debian's init scripts, dus daar buig ik me dan ook niet over, maar het echte bonding dat linux dmv deze bond0 interface kan doen houd in dat je systeem maar 1 IP heeft. eth0 en eth1 moet je niet toewijzen aan een ip, enkel aan de bonding interface.
1) Bonding modules laden
2) met ifconfig bond0 een ip geven (en netmask en broadcast)
3) /sbin/ifenslave bond0 eth0
4) /sbin/ifenslave bond0 eth1

Als je nu ipv op een "echte" trunked switch slecht 1 link legt zal hij het nog altijd prima doen, onder het IP van bond0, alleen dan dus slechts over 1 link (ik heb zelf bij het testen die 4400 er soms tussenuit gehad en gewoon hem rechtstreeks in mijn router geplugt met 1 kabel).
Pagina: 1