infrastruktur:gateway:babel-gateway

Dies ist eine alte Version des Dokuments!


Gateways für das Freifunk-Babel-Netz orientieren sich am Setup für Batman-Gateways. Der Server nimmt fastd-Verbindungen von Freifunk-Routern mit der Babel-Firmware an und verteilt Informationen zur Infrastruktur des Netzes (früher: IP-Adressen & Routen, mittlerweile lediglich Routen, wobei das streng genommen optional ist), damit das Gesamtnetz funktionieren kann.

Es gibt ein paar Unterschiede zu Batman-Gateways:

  • es ist kein dhcp-Server erforderlich
  • es ist kein radvd erforderlich
  • Batman wird nicht installiert
  • Es müssen zusätzliche Komponenten (mmfd, l3roamd) ausgeführt werden
  • Über fastd wird das babel mesh-Protokoll gesprochen. Dadurch ist eine theoretische minimale MTU von 1288 möglich (1280 minimale IPv6-Größe + ein UDP-Header für mmfd-Pakete, die weiterhin Encapsulation-Technologie nutzen)

Hier wird lediglich die Einrichtung beschrieben. Für einen Überblick der Komponenten, bitte hier schauen: http://l3-freifunk.readthedocs.io/de/latest/components.html

apt-key adv --keyserver hkp://keys.gnupg.net --recv-keys 390BF305
apt-get install apt-transport-https
echo "deb https://dl.ffm.freifunk.net/debian-packages/ sid main" >/etc/apt/sources.list.d/ff-ffm.list
apt-get update
apt-get install babeld l3roamd mmfd fastd

/etc/fastd/mesh-vpn-1374/fastd.conf:

log level error;
log to syslog level error;
interface "mesh-vpn-1374";
method "salsa2012+umac";
method "salsa2012+gmac";
method "null";
secure handshakes no;
bind any:10001;
secret "30ca8b19e7f215dc7a3f45cb95b0ae2b1cbf8d706f9991a2ff121ae7c7184e6b";
mtu 1374;
peer limit 220;
include peers from "peers";
on verify "./verify $PEER_KEY";
on up "/sbin/ip link set dev mesh-vpn-1374 up";
status socket "/var/run/fastd-mesh-vpn-1374.sock";

l3roamd bringt bereits ein script zur INitialisierung via systemd mit. Das ist seiner Zeit etwas voraus - der l3roamd erfordert leider noch obligatorisch ein client-bridge. Aus diesem Grund ist das Script anzupassen: in /etc/systemd/system/l3roamd.service in Zeile 8 sollte so etwas stehen:

[Unit]
Description=l3roamd
Wants=basic.target
After=basic.target network.target fastd.service babeld.service

[Service]
Type=simple
ExecStart=/usr/local/bin/l3roamd -p 2a06:8187:fbab:2::/64 -m gre_gw01 -m mesh-vpn-1374 -m babel-vpn-1374  -i dummyl3roamd -t 11 -a 2a06:8187:fbab:1::9000:2 -4 0:0:0:0:0:ffff::/96 -b br-client
KillMode=process
ExecStartPost=/sbin/ip link set dev l3roam0 up
ExecStartPost=/sbin/ip -6 r add 2a06:8187:fbab:2::/64 dev l3roam0 table 10
Restart=always
RestartSec=3

[Install]
WantedBy=multi-user.target

Die Bridge br-client muss per /etc/network/interfaces eingerichtet sein. Was da drin hängt ist egal, sie muss nur automatisch da sein beim Start. Ich mach das aktuell mit /etc/network/interfaces.d/br-client mit dem Inhalt

iface br-client inet static
	address 192.0.2.1
	netmask 255.255.255.0
	bridge_ports none

Die hinzugefügte Route macht, dass Pakete mit einem Ziel im Freifunk-Client-Netz aber mit unbekannter echter Route an den l3roamd übergeben werden. Dieser kann dann die Route ermitteln. Der l3roamd wird angepasst, sodass br-client nicht mehr zwingend erforderlich sein wird, denn auf Gateways ist sie nicht vorhanden und auch nicht sinnvoll.

Der Dienst wird installiert und muss laufen. Den Rest macht das service-file. Er wird für die Weiterleitung von Anfragen an die respondd-Instanzen auf den Nodes genutzt.

Auf dem Host mit dem yanic, muss der mmfd laufen. Dessen mmfd0-Interface ist als Interface für die queries anzugeben, wobei eine broadcast-Adresse eingesetzt werden muss: ff05::was-auch-immer-respondd-hier-verlangt.

  • infrastruktur/gateway/babel-gateway.1511308689.txt.gz
  • Zuletzt geändert: 21.11.2017 23:58
  • von christf