[Gelöst] Gateway mit L2TP: Mac sauber setzen?

Moin,

wir haben eine reine L2TP-Konfiguration. Gegen die Batman-Abstürze sind die Tunnel zu den Knoten in einer Brücke gebündelt.

Jetzt ist das Problem, dass diese Brücke immer die kleinste Mac ihrer Teilnehmer, also eine von irgendeinem Knoten annimmt. Diese wechselt auch noch, wenn der Knoten ausgeschaltet wird. Das führt dazu, dass das Gateway in der Karte nicht sauber erfasst wird und es zu kurzen Rucklern im Netz kommt, wenn sich die Gateway-Mac ändert.

Daher würde ich die Mac gerne setzen. Da man der Brücke keine Mac beibringen kann, hatte ich die Idee, das Batman in die Brücke zu hängen, wie es auch unter Gluon geschieht.

Das klappt auch soweit erstmal. Aber es findet keine Kommunikation darüber statt. Der Knoten sieht unter batctl o nichts und das Gateway sieht auch den Knoten nicht.

Ich habe diese drei ebtables-Regeln probiert, jeweils mit einem Neustart dazwischen um die Konfiguration sauber zurückzusetzen:

post-up ebtables -A FORWARD --logical-in $IFACE -j DROP
post-up ebtables -A FORWARD --logical-in $IFACE -j DROP ! -i batXX
post-up ebtables -A FORWARD --logical-in $IFACE -j DROP -o batXX

Leider habe ich zu wenig logisches Verständnis von Netzwerkbrücken. Hatte mir das nur aus Gluon abgeschaut. Kann mir jemand einen Tipp geben, wie das funktionieren könnte?

Grüße
Matthias

Eine Brücke bekommt bei der Erzeugung eine eigene MAC, diese kann auch verändert werden. Der Anschein, dass die Brücke die MAC-Adresse einen Slave annimmt ist ein Trugschluss der leicht begangen werden kann.

Die MAC Adresse der Bridge setzen wir auch auf ein GW den wir als Test Server betreiben. In der Datei /etc/network/interface haben wir nachstehendes:

Tunneldigger VPN Interface

auto tunneldigger
iface tunneldigger inet manual

Bring up interface

pre-up modprobe batman-adv
pre-up brctl addbr $IFACE
pre-up ip link set address aa:ff:ca:ca:fb:06 dev $IFACE
pre-up ip link set $IFACE promisc on
up ip link set dev $IFACE up
post-up ip link set dev $IFACE mtu 1364
post-up ebtables -A FORWARD --logical-in $IFACE -j DROP
post-up batctl if add $IFACE

Shutdown interface

pre-down batctl if del $IFACE
pre-down ebtables -D FORWARD --logical-in $IFACE -j DROP
down ip link set dev $IFACE down
post-down brctl delbr $IFACE

1 Like

wir verwenden zwar kein gluon aber auch den tunneldigger und machen das nach der anleitung

https://wiki.freifunk-franken.de/w/L2TP_und_Tunneldigger

Skripte in scripts/
bridge_functions-has.sh:
ensure_policy()
{
ip rule del $
ip rule add $
}

ensure_bridge()
{
#MAC aus MTU generieren (auf jedem GW eine Stelle ändern)
mac=$(echo $MTU | sed -E „s/^(…)/0a:00:03:01:\1:/“)
local brname="$1"
brctl addbr $brname 2>/dev/null

if [[ „$?“ == „0“ ]]; then
# Bridge did not exist before, we have to initialize it
ip link set dev $brname address $mac
ip link set dev $brname up
# Neue Bridge batman hinzufügen
batctl -m $BATDEV if add $brname
# Disable forwarding between bridge ports
ebtables -A FORWARD --logical-in $brname -j DROP
fi
}

in skripts erzeugt uns eine mac pro mtu

Geil, das funktioniert. Danke! Ich hatte es mal genau so probiert, keine Ahnung, warum es dann nicht ging. Jetzt geht’s.