und danUm einen Computer manuell mit dem Bielefelder Freifunk-Netz zu verbinden (also ohne die Firmware für WLAN-Router), muss zuerst batman-adv und fastd installiert sein.

Fastd konfigurieren

Fastd ist ein VPN Programm um einen Knoten mit einem der Server im Internet zu verbinden. Über diese Verbindung, bzw. den Server, sind alle anderen Router erreichbar.

Zuallerst werden ein paar Verzeichnisse und Dateien angelegt:

mkdir /etc/fastd
mkdir /etc/fastd/peers
mkdir /etc/fastd/backbone

/etc/fastd/fastd.conf

log to syslog level info;
bind any;
method "salsa2012+gmac";
log to syslog level info;
mode tap;
interface "fastd_mesh";
mtu 1406;
forward no;
secure handshakes yes;
include peers from "/etc/fastd/peers";
peer group "backbone" {
  peer limit 1;
  include peers from "/etc/fastd/backbone";
}

Es muss noch ein secret generiert werden:

secret=`fastd --generate-key --machine-readable`
echo "secret \"$secret\";" >> /etc/fastd/fastd.conf

Nun folgen die Schlüssel für die Server:

/etc/fastd/backbone/vpn1

key "d7822baec77e7f6572ae9298b5506191e00f9eeaac1db4aba6e3c280678cac3c";
float no;
remote "vpn1.freifunk-bielefeld.de" port 1244

/etc/fastd/backbone/vpn2

key "5369f843d41a89c107fe1839b1683e14869046252bb7af734f7d67b2711dd9cc";
float no;
remote "vpn2.freifunk-bielefeld.de" port 1244;

/etc/fastd/backbone/vpn3

key "c1f20f98bf22860aac43796c70387651c832c8e7c067761b262850567deab06e";
float no;
remote "vpn3.freifunk-bielefeld.de" port 1244;

/etc/fastd/backbone/vpn4

key "ac2eae2716aaa287f346cf0e1fa7043b2586a0c9655b769074ec1a8e83c49849";
float no;
remote "vpn4.freifunk-bielefeld.de" port 1244;

Nun kann fastd gestartet werden:

fastd --config /etc/fastd/fastd.conf --daemon

Fastd verbindet sich nun mit einem der drei VPN-Server. Das erstellte interface fastd_mesh empfängt nun Pakete des Mesh-Protokolls.

batman-adv Konfigurieren

Als erstes wird batman-adv als Kernel-Modul geladen:

modprobe batman-adv

.. und fastd_mesh hinzugefügt.

batctl if add fastd_mesh

Mit „batctl o“ können jetzt bereits die bekannten Knoten angezeigt werden. Sind viele Einträge zu sehen mesht der Knoten erfolgreich.

bat0 kapseln wir noch in einer bridge um eventuell in Zukunft noch ein AccessPoint-Interface hinzufügen zu könnnen:

brctl addbr br-public
brctl addif br-public bat0

Jetzt noch alle interfaces aktivieren:

ip link set fastd_mesh up
ip link set bat0 up
ip link set br-public up

br-public ist der Zugang zum Freifunk-Netz und bekommt noch eine zufällige IP-Adresse aus dem Bereich 10.29.0.0/16:

ip addr add 10.29.x.y dev bat0

IPv6 Adressen werden über Prefix-Announcements automatisch vergeben.

Jetzt noch das „Originator-Interval“ einstellen:

echo "5000" >  /sys/class/net/bat0/mesh/orig_interval

WLAN AccessPoint

Ein AccessPoint (AP) dient dazu, das z.B. Smartphones und Laptops mit dem Freifunknetz verbinden können. Dazu wird ein AP, ohne Verschlüsselung und Passwort (nennen wir es mal wlan_ap) , eingerichtet. Als SSID ist hier „bielefeld.freifunk.net“ geignet. Ein solcher AP kann mit hostapd konfiguriert werden. Wichtig ist nur darauf zu achten das der DHCP-Server auf br-public läuft, das AP-Interface jedoch zu br-public hinzugefügt wird:

brctl addif wlan_ap

WLAN Ad-Hoc

Ein Ad-Hoc Anschluss dient dazu, die Kommunikation zwischen Knoten, oftmals WLAN-Routern, herzustellen. Über diese Verbindung läuft das Mesh-Routing-Protokoll von batman-adv. Die Einrichtung kann hier wieder mit hostapd geschehen. Die SSID ist hier weniger wichtig, in Bielefeld wird mesh_v14 verwendet (14 ist die Kompatibiltätsversion des Routingprotokolls). Die BSSID muss dagegen auf „12:C0:FF:EE:C0:DE“ gesetzt werden. Sonst ist kein meshen möglich. Das Ad-Hoc interface wird ebenso wie fastd_mesh zu batman-adv/bat0 hinzugefügt:

batctl if add fastd_mesh

Bitte beachen. Firewall!

Der DHCP-Server auf br-public darf keine IP-Adressen im Freifunk-Netz verteilen - sondern nur über dem lokalen AP. Daher wird empfohlen per Firewall eine Reihe von Multicast- und Broadcast-Paketen auf bat0 zu filtern, so dass die Pakete nicht erst bis zum Server gelangen. Ansonsten schadet dies dem Netz und verursacht unnötig viel Datenaufkommen. Hier sind unsere Filterregeln aus unserer OpenWrt-Fimware zu finden: https://github.com/freifunk-bielefeld/firmware/blob/master/files/etc/firewall.user

Zusätzlich muss das forwarding für br-public ausgestellt werden. Ansonsten kann der Knoten als Gateway missbraucht werden.

Gateways empfangen

Der Mechanismus, mit dem die Adressen der Gateways für den Internetzugang empfangen werden basiert auf Alfred. Der Einfachheit halber kann eine Gateway manuell gesetzt werden:

route add default gw 10.29.132.192

TODO: Einrichtung von Alfred