Hier eine sehr kurz und mit absicht einfach gehaltene Anleitung wie man B.A.T.M.A.N. und fastd auf einen aktuellen Raspbian zum laufen bekommt.Darauf aufbauent ist auch auch ein Offloader möglich. Dazu ist entweder ein VLAN-fähiger Switch oder eine zusätzliche USB-Netzwerkkarte nötig.
Grundkonfiguration
sudo usermod -aGadm,staff pi sudo reboot sudo apt-get install cmake doxygen bison libcap-dev libsodium-dev libjson-c-dev batctl bridge-utils xz-utils wget pkg-config
fastd
cd /usr/local/src wget --no-check-certificate https://git.universe-factory.net/libuecc/snapshot/libuecc-5.tar.gz tar -xzf libuecc-5.tar.gz cd libuecc-5/ cmake . make sudo make install sudo ldconfig -v{{{ cd /usr/local/src
wget --no-check-certificate https://projects.universe-factory.net/attachments/download/81/fastd-17.tar.xz tar -xf fastd-17.tar.xz cd fastd-17/ cmake . make sudo make install
sudo mkdir /etc/fastd/
}}}
Schlüssel generieren ...
fastd --generate-key
... und in folgender Konfiguration anpassen:
/etc/fastd/fastd.conf
log level debug; log to syslog level warn; interface "mesh-vpn"; method "salsa2012+umac"; #method "null+salsa2012+umac"; #method "null"; secret "FFF1415dd15eb858eac8104d8c98a5a384cd9ea1da7c5a23cd643b05734d6269"; #Public: FFF4a0ec3742f9e199d21191034c30499ac9b57b2f495a82ce8995ef6d3fa41c mtu 1406; mode tap; status socket "/var/run/fastd.mesh_vpn.socket"; peer group "backbone" { peer limit 1; peer "gw1" { key "e087d1deefc6ba6f7fe4ba293d0358d6f8fb8a3eef53f4133d82b4faa9717c46"; remote ipv4 "gw1.freifunk-gera-greiz.de" port 10181; } peer "gw2" { key "1026c1a0a79817084af1724571b7689ad94eb3f5934e3bd8c6041c3708554c6b"; remote ipv4 "gw2.freifunk-gera-greiz.de" port 10181; } peer "gw3" { key "e5fe5ec0e7d7a1fb125a02c06b8cee8b06405752027e346d85d81ff48f350746"; remote ipv4 "gw3.freifunk-gera-greiz.de" port 10181; } } on up " modprobe batman-adv ip link set up dev $INTERFACE batctl if add $INTERFACE sysctl net.ipv6.conf.bat0.disable_ipv6=1 sysctl net.ipv6.conf.mesh-vpn.disable_ipv6=1 ip l set bat0 up batctl gw client 45 batctl orig_interval 5000 batctl multicast_mode 0 echo 15 > /sys/class/net/bat0/mesh/hop_penalty echo 1 > /sys/class/net/bat0/mesh/bridge_loop_avoidance echo 1 > /sys/class/net/$INTERFACE/batman_adv/no_rebroadcast ifup br-client brctl addif br-client bat0 "; on down " brctl delif br-client bat0 ip link set down dev bat0 ifdown br-client ";
B.A.T.M.A.N. und Interfaces
modinfo batman-adv filename: /lib/modules/4.1.7+/kernel/net/batman-adv/batman-adv.ko version: 2015.0 description: B.A.T.M.A.N. advanced author: Marek Lindner, Simon Wunderlich license: GPL srcversion: E9D015FA50D13B3188D4869 depends: intree: Y vermagic: 4.1.7+ preempt mod_unload modversions ARMv6
Es sollte mindestens die Version 2015.0 verwendet werden, ansonsten muss dieses Kernelmodul selbst übersetzt werden.
Optional falls batman zu alt ist:
cd /usr/local/src sudo apt-get install linux-headers-$(uname --kernel-release) build-essential wget https://downloads.open-mesh.org/batman/stable/sources/batman-adv/batman-adv-2016.3.tar.gz tar -xzf batman-adv-2016.3.tar.gz cd batman-adv-2016.3/ wget https://raw.githubusercontent.com/ffggrz/ff-overlay/master/net-misc/batman-adv/files/decrease-maximum-fragment-size-2016.3.patch patch -p1 -i decrease-maximum-fragment-size-2016.3.patch make sudo make install reboot sudo apt-get install pkg-config libnl-genl-3-dev libnl-3-200 libnl-3-dev wget https://downloads.open-mesh.org/batman/releases/batman-adv-2016.3/batctl-2016.3.tar.gz tar -xzf batctl-2016.3.tar.gz cd batctl-2016.3/ make sudo make install
Hier bitte eigene IP anpassen und nicht vergessen im github eintragen!
/etc/network/interfaces
auto br-client iface br-client inet static bridge-stp no bridge-fd 0 bridge-hello 10 bridge_ports none address 10.181.0.123 netmask 255.255.192.0 dns-nameservers 10.181.0.12 dns-search ffggrz post-up start-stop-daemon -b --start --exec /usr/local/bin/fastd -- --config /etc/fastd/fastd.conf; post-down start-stop-daemon --stop --exec /usr/local/bin/fastd; iface br-client inet6 static address fdb5:78b:64cc::123 netmask 64
Damit der Raspberry Pi nicht an das neuen Interfaces den dhcp-Client startet brauchen wir folgende zusätzliche Zeile:
/etc/dhcpcd.conf
denyinterfaces br-client bat0 mesh-vpn
Und neustarten:
sudo service dhcpcd restart
Test
Zum Test kann der fastd manuell gestartet werden:
sudo fastd --config /etc/fastd/fastd.conf
ALFRED
cd /usr/local/src wget http://downloads.open-mesh.org/batman/releases/batman-adv-2015.1/alfred-2015.1.tar.gz tar -xzf alfred-2015.1.tar.gz cd alfred-2015.1/ make CONFIG_ALFRED_GPSD=n sudo make CONFIG_ALFRED_GPSD=n install
Zum "on up" in der fastd.conf kommt noch am Schluss folgendes dazu:
/sbin/start-stop-daemon -b --start --exec /usr/local/sbin/batadv-vis -- -si bat0 /sbin/start-stop-daemon -b --start --exec /usr/local/sbin/alfred -- -i br-client -b bat0
ALFRED-Announce:
sudo apt-get install ethtool python3-pip python3-netifaces lsb-release sudo pip3 install py-cpuinfo cd /usr/local/src git clone https://github.com/ffggrz/ffnord-alfred-announce
Die "config.json" anpassen !
crontab:
* * * * * root /usr/local/src/ffnord-alfred-announce/announce.sh -u /var/run/alfred.sock
Hinweis
Es dauert mindestens 1 Minute bis der Client im Mesh-Netzwerk verfügbar ist.Zur Geschwindigkeit muss gesagt werden dass es nicht besonders schnell ist. Im Vergleich zu OpenVPN ist kaum ein Unterschied zu messen.