Freifunk-Gateway aufsetzen/babeld

Aus Freifunk Franken
Wechseln zu:Navigation, Suche

Diese Seite befindet sich noch im Entwurfsstadium.
Hilf mit sie zu verbessern!


(Erhoffte) Vorteile

  • Metriken Anhand von Pings berechnen
  • stabiler als Olsr
  • kann ipv4 und ipv6 gleichzeitig

Was es leider nicht kann

  • Anhand von Bandbreite/vorhandener Bandbreite die Metrik berechnen

Hier mal eben ein paar grundlegene Sachen für Babel.

Achtung

Das ganze ist komplett ungetestet und nur mal eben zusammen geschrieben, teils aus den Kopf, teils aus bestehenden Configs. Kann div. Fehler enthalten!

IP Adressen für Peering

Es sollte für jeden Server nur eine Adresse verwendet werden auf jedem Interface. Sinnvollerweise aus dem 10.83.252.X Netz: https://wiki.freifunk-franken.de/w/Portal:Netz#10.83.252.0.2F22_.28Master_IPs.29

GRE

Interface anlegen

muss etwa so aussehen (ungetestet! Werte anpassen! Routingtables fehlt evtl.):

auto DEVICENAME
iface DEVICENAME inet static
 address 10.83.252.X
 pre-up ip -4 tunnel add $IFACE mode gre local EIGENEPUBLICIP remote REMOTEPUBLICIP ttl 255

 up ifconfig $IFACE multicast
 pointopoint 10.83.252.X
 post-up ip rule add iif $IFACE table fff
 post-up ip -6 addr flush dev $IFACE
 post-up ip -6 addr add fe80::IRGENDWAS dev $IFACE
 post-down ip rule del iif $IFACE table fff
 post-down iptunnel del $IFACE

Multicast Probleme bei GRE

http://wiki.hwmn.org/w/GRE_Tunnel#Babel_support ist im oberen Teil schon mit eingebaut

WebUI

Für Babel gibt es ein WebUI: https://github.com/kerneis/babelweb

aptitude install nodejs-legacy npm
npm install -g babelweb

/etc/systemd/system/babelweb.service:

[Unit]
Description=babelweb

[Service]
ExecStart=/usr/local/bin/babelweb
Type=simple

[Install]
WantedBy=multi-user.target
systemctl enable babelweb
systemctl start babelweb


Beispiel config

/etc/babeld.conf

# For more information about this configuration file, refer to
# babeld(8)

interface IF1 wired true max-rtt-penalty 128
interface IF2 wired true max-rtt-penalty 128
#... einfach weiterführen für mehr Interfaces.
export-table 10
import-table 10

#redistribute ip 0.0.0.0/0 le 0 #diese Zeile mit reinnehmen wenn man Internet Uplink hat
# Route muss glaub ich manuell gesetzt werden!

redistribute metric 128 #grad nicht ganz sicher ob so richtig

local-port 33123
#local-port-readwrite 34567 #funktioniert anscheinend nicht!

Routen werden automatisch announced, es gibt hier kein HNA wie bei Olsr! Am WebUI ist alles gut zu sehen.

Die Interfaces, die babel verwenden soll (bei uns die GRE-Tunnel) müssen auch in der /etc/default/babeld eingetragen werden - durch Leerschläge getrennt.

Batman Interface muss auch leicht angepasst werden:

...
post-up ip route add 10.X.X.X/XX dev $IFACE proto static table fff
...

wichtig ist proto static sonst announced Babel die Route nicht