Freifunk-Gateway aufsetzen/Batman-adv

Aus Freifunk Franken
Wechseln zu:Navigation, Suche

Batman-adv

Funktion

B.A.T.M.A.N. wird bei uns als Layer-2-Routing-Protokoll (ja, klingt kaputt – ist es auch) eingesetzt, um WLAN-Mesh zu ermöglichen. Für Linux gibt es dafür das B.A.T.M.A.N.-Advanced-Kernel-Modul.


Installation

B.A.T.M.A.N. Advanced wird mit dem Tool batctl gesteuert. Das muss entsprechend installiert werden. Hier kann ebenfalls die Version aus den Debian Paketquellen oder die selbstkompilierte verwendet werden.

sudo apt-get install batctl

Die Version, die beim Kernel von Debian Stretch mit dabei ist (v2016.4) ist Compat15, was die aktuell verwendete Compat-Version ist. (siehe hier). Für unser KeyXchangeV2 Setup wird zum aktuellen Zeitpunkt ausschließlich Compat Version 15 verwendet.

Wenn man möchte, kann man sich die aktuellste Version aus dem Open-Mesh Git kompilieren und installieren.

Hinweis: Wird der Kernel aktualisiert, müssen alle selbstkompilierten Kernelmodule erneut gegen die aktualisierte Kernelversion gebaut und danach installiert werden! Folglich muss ein selbstkompiliertes batman_adv nach jedem Kernelupdate neu gebaut und installiert werden. Für den Anfang empfiehlt es sich, mit dem mitgelieferten batman_adv zu arbeiten.

Das Kernel-Modul kann testweise mit folgendem Befehl geladen werden: modprobe batman-adv

Im Kernel Log sollte das Laden protokolliert werden:

~# dmesg | grep batman_adv
batman_adv: B.A.T.M.A.N. advanced 2018.0 (compatibility version 15) loaded


Die aktuell eingesetzte Version erfährt man mit batctl -v


Das Kernelmodul von B.A.T.M.A.N. kann dann bei jedem Neustart des Systems geladen werden, indem in die Datei /etc/modules der Eintrag "batman-adv" hinzugefügt wird:

batman-adv

DKMS für batman-adv

Wenn man Batman-adv aus dem Quellen selbst kompiliert, wird bei einem Kernelupdate wieder eine alte Version installiert. Damit hier automatisch wieder die aktuelle Version gebaut wird, kann DKMS verwendet werden.

Unter /usr/src einen Ordner anlegen mit NAME-Version z.b. batman-adv-2018.2 (zum aktuellen Zeitpunkt die aktuelle Version). Hier hinein entpackt man nun die Batman-adv sourcen und legt eine dkms.conf ebenfalls in dem Ordner an:

PACKAGE_NAME=batman-adv
PACKAGE_VERSION=2018.2

DEST_MODULE_LOCATION=/extra
BUILT_MODULE_NAME=batman-adv
BUILT_MODULE_LOCATION=net/batman-adv

MAKE="'make'"
CLEAN="'make' clean"

AUTOINSTALL="yes"

danach kann man das ganze Testen mit

dkms add -m batman-adv -v 2018.2
dkms build -m batman-adv -v 2018.2
dkms install -m batman-adv -v 2018.2

Wenn dies erfolgreich durchläuft, sollte beim nächsten Kernelupdate automatisch die neue Version gebaut werden.

(Zum aktuellen Zeitpunkt noch ungetestet da noch kein Kernelupdate rein kam, wird dann hier wegeditiert sobald es soweit ist)

batctl

Wenn man eine sehr neue Batmanversion verwendet und nur ein altes batctl, scheitern u.U. manche batctl Kommandos. Daher ist es empfehlenswert batctl aus den Quellen selbst zu bauen:

Debian benötigt noch 2 Abhängigkeiten: libnl-genl-3-dev & libnl-3-dev

Danach das git clonen: https://github.com/open-mesh-mirror/batctl make && make install und evtl. Pfad anpassen