momentan experimentiere ich mit einer Bridge über zwei Netzwerkkarten (als Vorbereitung zu Tests mit KVM). Nur will leider nichts so richtig funktionieren.
Fall 1:
24er-Subnetz, eth0 ist die 240.
eth0: xxx.xxx.xxx.240
Dann lege ich br0 an und füge eth1 hinzu und gebe ihr die 241.
br0: xxx.xxx.xxx.241
Das läuft so ganz gut, nur bricht nach gewisser Zeit (25 Minuten, 1 Stunde, ...) alles zusammen. Erst wenn ich die Bridge herunterfahre, tut eth0 wieder. Leider habe ich keine Ahnung, wie ich das debuggen soll. Das ist aber noch nicht mein eigentliches Problem.
Code: Select all
auto eth0
iface eth0 inet static
address xxx.xxx.xxx.240
netmask 255.255.255.0
network xxx.xxx.xxx.0
broadcast xxx.xxx.xxx.255
gateway xxx.xxx.xxx.1
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers yyy.yyy.yyy.126 yyy.yyy.yyy.127
dns-search aa.bbb.de
auto br0
iface br0 inet static
address xxx.xxx.xxx.241
netmask 255.255.255.0
network xxx.xxx.xxx.0
broadcast xxx.xxx.xxx.255
gateway xxx.xxx.xxx.1
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers yyy.yyy.yyy.126 yyy.yyy.yyy.127
dns-search aa.bbb.de
bridge_ports eth1
bridge_stp off
bridge_maxwait 5
Jetzt werden eth0 und eth1 zu br0 zusammengefasst, dann bekommt br0 die 240 (das ist genau das, was ich will). Jetzt gehen die Probleme erst richtig los. Die Bridge scheint zu funktionieren, nur ist dann das gesamte Subnetz hinüber. Nichts geht mehr. Fährt man die Bridge herunter, ist alles wieder gut.
Code: Select all
auto br0
iface br0 inet static
address xxx.xxx.xxx.240
netmask 255.255.255.0
network xxx.xxx.xxx.0
broadcast xxx.xxx.xxx.255
gateway xxx.xxx.xxx.1
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers yyy.yyy.yyy.126 yyy.yyy.yyy.127
dns-search aa.bbb.de
bridge_ports eth0 eth1
bridge_stp off
bridge_maxwait 5
Code: Select all
Jan 29 09:30:56 xxx kernel: eth0: received packet with own address as source address
...
Jan 29 09:37:56 xxx kernel: eth1: received packet with own address as source address
Der Kernel ist ein 2.6.28.2er mit allen nötigen Treibern. Unter Networking support -> Networking options -> Netfilter habe ich Advanced netfilter configuration -> Bridged IP/ARP packets filtering aktiviert. Sorgt das vielleicht für Probleme? Support für ebtables ist nicht einkompiliert. Der Kernel ist monolithisch, also müssen keine Module nachgeladen werden.
Kann mir jemand bei diesem Problem weiterhelfen? Iptables usw. sind kein Problem, nur weiß ich hier einfach nicht mehr weiter. Wie kann ich das debuggen?
:google: habe ich in den letzten Tagen bereits zum Glühen gebracht.
insopitus
EDIT (2 Stunden später):
Langsam dämmert mir, was ich da verbrochen habe. Da ich nicht zwei Netzwerke über die Bridge verbunden habe, sondern beide Netzwerkkarten an ein Netz gehängt habe, habe ich die Pakete in einen Loop geschickt. Daher ist alles zum Erliegen gekommen. ](*,)
Die Lösung wäre wohl, STP zu aktivieren, dann sollten die Pakete wieder flutschen. Wenn man in gefühlten 50 Howtos aber liest, dass man das erst mit mehreren Bridges benötigt, kommt man leider zu spät darauf. Eine Alternative wäre natürlich Bonding.
Merke: Nicht tagelang alle möglichen Howtos durchkämmen, sondern öfters mal selbst denken.
Und jetzt alle: :lol: :lol: :lol:
EDIT2:
Meine Annahmen waren richtig. Jetzt habe ich mich für Bonding entschieden, weil diese Lösung einfach optimal läuft. Das anlegen einer Bridge für KVM schließt das ja nicht aus.
hier meine e/n/i:
Code: Select all
auto bond0
iface bond0 inet static
address xxx.xxx.xxx.240
netmask 255.255.255.0
network xxx.xxx.xxx.0
broadcast xxx.xxx.xxx.255
gateway xxx.xxx.xxx.1
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers yyy.yyy.yyy.126 yyy.yyy.yyy.127
dns-search aa.bbb.de
pre-up modprobe -q bonding; echo -n
slaves eth0 eth1
bond_mode balance-rr
bond_miimon 100
bond_updelay 4000
bond_downdelay 4000
Code: Select all
pre-up modprobe -q bonding; echo -nMarcus