B.A.T.M.A.N.: Unterschied zwischen den Versionen
Thomas (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Thomas (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
Zeile 1: | Zeile 1: | ||
B.A.T.M.A.N. (Abkürzung für Better Approach To Mobile Adhoc Networking) ist ein | B.A.T.M.A.N. (Abkürzung für Better Approach To Mobile Adhoc Networking) ist ein Routing-Protokoll für mobile Ad-hoc-Netze. Siehe [https://de.wikipedia.org/wiki/B.A.T.M.A.N. WikiPedia]. Im Freifunk wird unter anderem B.A.T.M.A.N. als Routing-Protokoll eingesetzt. | ||
== Abstrakt == | == Abstrakt == | ||
In diesem Artikel wird beschrieben, wie B.A.T.M.A.N. zusammen mit [[fastd]] auf einem Rechner mit Debian eingerichtet wird und der Rechner direkt an das Netz der Freifunk Rheinland angebunden wird. Als Beispiel dient die Freifunk Rheinbach Konfiguration. | |||
Die Verbindung der [[Nodes]] (Router) zu den Servern im Internet erfolgt über einen verschlüsselten Tunnel. Bei Freifunk Rheinbach wird für die Tunnel ''fastd'' verwendet. Nodes, die in WLAN Reichweite zueinander stehen, verbinden sich untereinander über ein MESH-Netzwerk. Auch über Kabel (LAN oder WAN-Port) können sich Nodes vermaschen. Auf all diesen Verbindungen wird das Routing-Protokoll B.A.T.M.A.N. verwendet. | |||
== Installation der Software == | == Installation der Software == |
Version vom 3. März 2017, 16:43 Uhr
B.A.T.M.A.N. (Abkürzung für Better Approach To Mobile Adhoc Networking) ist ein Routing-Protokoll für mobile Ad-hoc-Netze. Siehe WikiPedia. Im Freifunk wird unter anderem B.A.T.M.A.N. als Routing-Protokoll eingesetzt.
Abstrakt
In diesem Artikel wird beschrieben, wie B.A.T.M.A.N. zusammen mit fastd auf einem Rechner mit Debian eingerichtet wird und der Rechner direkt an das Netz der Freifunk Rheinland angebunden wird. Als Beispiel dient die Freifunk Rheinbach Konfiguration.
Die Verbindung der Nodes (Router) zu den Servern im Internet erfolgt über einen verschlüsselten Tunnel. Bei Freifunk Rheinbach wird für die Tunnel fastd verwendet. Nodes, die in WLAN Reichweite zueinander stehen, verbinden sich untereinander über ein MESH-Netzwerk. Auch über Kabel (LAN oder WAN-Port) können sich Nodes vermaschen. Auf all diesen Verbindungen wird das Routing-Protokoll B.A.T.M.A.N. verwendet.
Installation der Software
B.A.T.M.A.N. installieren
Die folgenden Befehle und Scripte wurden unter Debian 8.7.1 entwickelt und getestet.
Das folgende Script installiert auf einem Debian 8 die notwendige Software - einschließlich fastd. Je nach System kann es notwendig sein zusätzliche Pakete zu installieren. Das folgende Script wurde auf einem frischen Debian 8.7.1 getestet, auf dem nur ein Chipkartenleser unter Moneyplex vorher zum Laufen gebracht wurde.
#!/bin/bash VBAT="2016.5" grep 'http://repo.universe-factory.net/debian/' /etc/apt/sources.list || echo 'deb http://repo.universe-factory.net/debian/ sid main' >> /etc/apt/sources.list gpg --keyserver pgpkeys.mit.edu --recv-key 16EF3F64CB201D9C gpg -a --export 16EF3F64CB201D9C | apt-key add - apt install apt-transport-https apt update apt install build-essential bridge-utils pkg-config libnl-3-dev libnl-genl-3-dev linux-headers-amd64 fastd cd /usr/src/ wget http://downloads.open-mesh.org/batman/stable/sources/batctl/batctl-${VBAT}.tar.gz tar xzf batctl-${VBAT}.tar.gz cd batctl-${VBAT} make make install cd /usr/src/ wget http://downloads.open-mesh.org/batman/stable/sources/batman-adv/batman-adv-${VBAT}.tar.gz tar xzf batman-adv-${VBAT}.tar.gz cd batman-adv-${VBAT} make make install modprobe batman-adv grep '^batman-adv' /etc/modules || echo -e '#B.A.T.M.A.N für Freifunk'\nbatman-adv' >> /etc/modules mkdir -p /etc/fastd/ffrhb/peers
Konfiguration
fastd konfigurieren
In das Verzeichnis /etc/fastd/ffrhb muss jetzt die folgende Datei fastd.conf kopiert werden:
Datei /etc/fastd/ffrhb/fastd.conf
# Log warnings and errors to stderr log level warn; # Log everything to syslog log to syslog level warn; # Set the interface name interface "mesh-vpn"; # Support salsa2012+umac and null methods, prefer salsa2012+umac method "salsa2012+umac"; method "null"; mode tap; # Bind to a fixed port, IPv4 only bind 0.0.0.0:53757; # Secret key generated by `fastd --generate-key` secret "e0e07c1462748f4b0f36423c0ce5c4169e48354a07a3b908435f8ab128259c53"; # Secret: e0e07c1462748f4b0f36423c0ce5c4169e48354a07a3b908435f8ab128259c53 # Public: 72dc4c1aa15cfe4ae5d54caccd8efbd1af8848770843b26a58ed2fb8edb82d50 secure handshakes yes; # Set the interface MTU for TAP mode with xsalsa20/aes128 over IPv4 with a base MTU of 1492 (PPPoE) # (see MTU selection documentation) mtu 1364; peer limit 1; # Include peers from the directory 'peers' include peers from "/etc/fastd/ffrhb/peers"; ## IP v6 Adresse muss ggf. nach ip link set up dev bat0 gesetzt werden mit: ## ip addr add dev bat0 fda0:747e:ab29:2241:.../64 scope global on up " /etc/fastd/ffrhb/on-up.sh $INTERFACE ";
Die Schnittstelle mesh-vpn muss B.A.T.M.A.N. als Interface hinzugefügt werden und benötigt eine IPv6 Adresss mit scope global. Dies geschieht mit folgenden Script, dass unter /etc/fastd/ffrhb/on-up.sh gespeichert wird. Die MTU der Netzwerkschnittstelle bat0 muss auf die MTU der Freifunk Community gesetzt werden. Für Rheinbach (Domäne Wupper ist es zur Zeit 1364).
Datei /etc/fastd/ffrhb/on-up.sh
#!/bin/sh # Execute when fastd is up # Autor: Thomas Arend # (c) 2017 by Thomas Arend # Date: 03.03.2017 INTERFACE=${1:-mesh-vpn} # Start meshing on fastd tunnel ip link set up dev $INTERFACE || echo Error: Interface $INTERFACE not set up # Add tunnel interface to mesh batctl if add $INTERFACE || echo Error: Interface $INTERFACE not added to batman # Set mtu for bat0 # Change 1364 to your value in the site.conf for the FF firmware ip link set up dev bat0 mtu 1364 || echo Error when setting MTU to 1364 # Add ipv6 addr with scope global to bat0 NIP='fda0:747e:ab29:2241' GIP=`ip addr show dev bat0 | grep 'inet6 fe80::.* scope link' | sed 's#.*inet6 fe80::##; s# .*$##'` ip addr add ${NIP}:${GIP} dev bat0 scope global || echo Error: IPv6 ${NIP}:${GIP} not set
Schlüssel Dateien für die Peers
Jeder Peer besitzt wie unser Rechner ein Schlüsselpaar, anhand dessen er eindeutig identifiziert wird. Die öffentlichen Schlüssel der müssen Peers kommen in das Unterverzeichnis peers. Die Namen spielen dabei keine Rolle. Wir verwenden folgende Namenskonvention, um die Peer und öffentlichen Schlüssel zu erkennen: mesh_vpn_backbone_peer_wupper<n>. Diese Namen werden auch in der Firmware verwendet, <n> ist dabei die Nummer des Servers (0-9).
Beispiel für Wupper 0.
key "e52daa654abcf5c20c5b7a74b5145f70a7491435c6ef334ae352e4f19c00e8f5"; remote "0.wupper.ffrl.de" port 53757;
Starten und Aktivieren
Nun muss nur noch fastd gestartet werden mit:
service fastd start
Um fastd mit jedem Neustart automatisch zu starten, muss der folgende Befehl ausgeführt werden:
systemctl enable fastd
Test der Konfiguration
Ob alles richtig läuft, zeigen ifconfig, systemctl status fastd und batctl if bzw. batctl tg
root@medion:~# ifconfig bat0 bat0 Link encap:Ethernet Hardware Adresse 32:e7:53:24:17:5f inet6-Adresse: fda0:747e:ab29:2241:30e7:53ff:fe24:175f/64 Gültigkeitsbereich:Global inet6-Adresse: fe80::30e7:53ff:fe24:175f/64 Gültigkeitsbereich:Verbindung UP BROADCAST RUNNING MULTICAST MTU:1364 Metrik:1 RX packets:61804 errors:0 dropped:0 overruns:0 frame:0 TX packets:28 errors:0 dropped:24 overruns:0 carrier:0 Kollisionen:0 Sendewarteschlangenlänge:0 RX bytes:3708888 (3.5 MiB) TX bytes:3529 (3.4 KiB) mesh-vpn Link encap:Ethernet Hardware Adresse aa:53:8d:76:e2:fa inet6-Adresse: fe80::a853:8dff:fe76:e2fa/64 Gültigkeitsbereich:Verbindung UP BROADCAST RUNNING MULTICAST MTU:1364 Metrik:1 RX packets:66901 errors:0 dropped:0 overruns:0 frame:0 TX packets:23753 errors:0 dropped:0 overruns:0 carrier:0 Kollisionen:0 Sendewarteschlangenlänge:500 RX bytes:9241074 (8.8 MiB) TX bytes:5150504 (4.9 MiB) root@medion:~# systemctl -l status fastd ● fastd.service - LSB: Fast and Secure Tunneling Daemon Loaded: loaded (/etc/init.d/fastd) Active: active (running) since Fr 2017-03-03 16:54:08 CET; 26min ago Process: 2686 ExecStop=/etc/init.d/fastd stop (code=exited, status=0/SUCCESS) Process: 2697 ExecStart=/etc/init.d/fastd start (code=exited, status=0/SUCCESS) CGroup: /system.slice/fastd.service └─2710 /usr/bin/fastd --syslog-level info --config /etc/fastd/ffrhb/fastd.conf Mär 03 16:54:08 medion fastd[2697]: Starting Fast and Secure Tunneling Daemon... Autostarting fastd 'ffrhb':. Mär 03 16:54:08 medion systemd[1]: Started LSB: Fast and Secure Tunneling Daemon. root@x2:/etc/fastd/ffrhb/peers# batctl if mesh-vpn: active root@medion:~# batctl tl [B.A.T.M.A.N. adv 2016.5, MainIF/MAC: mesh-vpn/aa:53:8d:76:e2:fa (bat0/32:e7:53:24:17:5f BATMAN_IV), TTVN: 3] Client VID Flags Last seen (CRC ) 33:33:ff:24:17:5f -1 [.P....] 0.000 (0x2453b430) 33:33:00:00:00:fb -1 [.P....] 0.000 (0x2453b430) 01:00:5e:00:00:01 -1 [.P....] 0.000 (0x2453b430) 32:e7:53:24:17:5f -1 [.P....] 0.000 (0x2453b430) 33:33:00:00:00:01 -1 [.P....] 0.000 (0x2453b430)
Ergebnis und Siegerehrung
Über unseren fastd-Tunnel können wir auf die Nodes und die Clients des Freifunknetzes über IPv6 zugreifen.