Gateway Gatweway Datenverkehr
Gateways sind des öfterens über ein Tunnel miteinander verbunden. Damit alle Freifunk Geräte (GW, Node, clients) im gleicher Segment erscheinen werden die entsprechende Tunnel Interface im Batman-adv Switch eingebunden.
IPv6
Die Router Advertissement Nachrichten von alle radvd Server erreichen sämtliche Clients. Die Vorgabe Route für alle beteiligten wird entsprechend der zuletzt empfangenen Router Advertissement Nachrich eingestellt. Dies bedeutet, dass ein großer Teil des Verkehrs über der GW-GW Tunnel zum Ziel geleitet wird.
Die Lösung zu diese Problematik, ist es per ebtables die icmpv6 RA Nachricht aus den falschen Segment zu unterbinden. Damit kann sichergestellt werden, dass der IPv6 Verkehr ohne Umweg über ein weiteren GW im Internet gesendet wird.
IPv4
Alle DHCP Server sind von den clients erreichbar. Ein Client versucht bei eine neue Verbindung die vorgehende IP Adresse zu erhalten. Damit wird auch der Verkher unter umständen über ein weitere GR weitergeleitet. Bei Mobile Geräte die den Bereich eine Node verlassen und sich mit der nächste Node verbinden wäre es sinnvoll und erwünscht falls ein transparente Takeover vorhaden wäre.
Wenn ein Client außerhab des Freifunk Netzes kommt (oder abgeschaltet wird) und später sind wieder mit das Freifunk Netz sich verbindet, ist das Verhalten fehlerhaft. Der Client verlangt nach der zuvor zugeteilte IPV4 Adresse die nicht unbedingt auf der Gateway verwaltet wird mit den der FF-Router verbunden ist.
Batman-adv richtig einzusetzen ist die Lösung des Problems.
GW Beispiel
GW1 GW2_
/ \ / \[br0] [br0] | | +--[bat0]--+ +--[bat0]--+ | | | |
[fastd]-+ ±[gw2]-> <-[gw1]-+ ±[fastd]
IP4 DHCP Adresse,…
10.x.0.0-10.x.3.254 10.x.4.0-10.x.7.254IP6 default Gateway (Link-Locale Adresse), …
Vereinfachte Darstellung:
Mit diese Konfiguratuon ist ebtables leider nicht einsetzbar.
Das Routing innerhalb der Brücke br0 kann mit ebtables beeinflusst werden. Da wir lediglich ein einziger Interface in der Brücke haben kann diese Konfiguration nicht verwendet werden.
Wenn die 2 in bat0 eingebundene Schnittstellen in eigenen bat Gerät eingebunden erhalten wir nachstehendes:ſ
GW1 GW2_
/ \ / \[br0] [br0] | | | | [bat0]-+ +-[bat1] [bat1]-+ +-[bat0] | | | |
[fastd]-+ ±[gw2]-> <-[gw1]-+ ±[fastd]
IP4 DHCP Adresse,…
10.x.0.0-10.x.3.254 10.x.4.0-10.x.7.254IP6 default Gateway (Link-Locale Adresse), …
Vereinfachte Darstellung:
Die ebtables Rules sind auf der Bridge br0 anwendbar.
Die Segmente von GW1 und GW2 werden in diesem Fall über die Bridge
br0 und nicht mittels batman-adv verbunden. Batctl o listet nicht
die Node die über der Nachbar Gateway angeschlossen, es ist jedoch
weiterhin die Node zu erreichen.
DHCP Request usw. werden über die bat Geräte nicht "forrwarded". Damit sind Probleme micht vorhanden.
Für der Meshviewer stellt der neuen Aufbau kein Problem die Alfred Master Announcement werden über der Bridge auf alle bat Geräte der Bridge versendet.
Änderung der Dateien /etc/network/Interfaces
Die Änderungen sind nicht umfangreich, es müssen lediglich die Definition der bat1 Schnittstelle eingefügt (Eine angepasste Kopie von bat0) und ftun-q# leicht verändert werden.
auto tun-gw1 iface tun-gw1 inet manual pre-up ip link add tun-gw1 type gretap local <IP-Adresse eth0> remote <Ext. IP Adresse des remote GW> 64 dev eth0 key 111 pre-up ebtables -A INPUT -p ipv6 -i bat1 --ip6-proto ipv6-icmp --ip6-icmp-type router-advertisement -j DROP pre-up ebtables -A FORWARD -p ipv6 -i bat1 --ip6-proto ipv6-icmp --ip6-icmp-type router-advertisement -j DROP pre-up ip link set dev ftun-q0 address <Eindeutige MAC> up post-up batctl -m bat1 if add tun-gw1 post-up bactl -m bat1 it 10000 post-up batctl -m bat1 gw server 50000/50000 post-down ebtables -D INPUT -p ipv6 -i bat1 --ip6-proto ipv6-icmp --ip6-icmp-type router-advertisement -j DROP post-down ebtables -D FORWARD -p ipv6 -i bat1 --ip6-proto ipv6-icmp --ip6-icmp-type router-advertisement -j DROP post-down ip link del tun-gw1allow-hotplug bat0
…allow-hotplug bat1
iface bat1 inet6 manual
pre-up modprobe batman-adv
pre-up ip link set dev bat1 address <EIndeutige MAC-Adresse> up
post-up brctl addif br0 bat1
post-up batctl -m bat1 it 10000
post-up batctl -m bat1 gw server 50000/50000