Gateway
Um einen Gateway Knoten zu betreiben müssen mehrere Dienste aufgesetzt werden.
Dies ist nur zu empfehlen, wenn das entsprechende Fachwissen vorhanden ist. Oder auch, tue dies nur wenn du weißt was du tust!
Man kann die Einrichtung eines Gateway Knotens faktisch in zwei Schritte unterteilen. Im ersten Schritt wird der Gateway Server zu einem DialIn Knoten ausgebaut und im zweiten Schritt die eigentliche funktionalität des Gateway Knotens.
DialIn Knoten
Wir bezeichnen einen Knoten als DialIn wenn er VPN-Verbindungen von außen akzeptiert und Mechanismen zum Austausch/Bezug von Knoten Schlüsseln verwendet. Die Konfigurationsbeispiele in diesem Artikel beziehen sich auf Debian.
Freifunk Netzwerkbrücke
Um den Freifunk Netzwerkverkehr konsistent zu verwalten legen wir eine Netzwerk Brücke an. Wir werden diese in dieser Anleitung ab jetzt als das Netzwerkgerät br-ffki bezeichnen. Es steht dir frei diesen Namen nach belieben zu ändern, beachte aber, dass du ihn überall änderst.
Da wir später in diesem Artikel den DialIn zu einem GateWay Knoten ausbauen wollen und dieses feste IPv(4/6) Adressen braucht solltest du dir jetzt IP-Adressen sichern. Im weiteren werden wir diese mit den Platzhaltern <ipv4> bzw. <ipv6> bezeichnen. Du musst dies aber nicht tun, wir gehen gleich ebenfalls auf eine Adresslose konfiguration ein.
Wir tragen nun in der /etc/network/interfaces folgendes ein:
auto br-ffki iface br-ffki inet6 static bridge-ports none address <ipv6> netmask 64 iface br-ffki inet static address <ipv4> netmask 255.255.0.0
Falls du nicht planst den DialIn Knoten zu einem Gateway Knoten auszubauen und dieser Knoten nicht explizit ansprechbar sein soll brauchst du der Netzwerkbrücke auch keine Adresse geben.
auto br-ffki iface br-ffki inet manual bridge-ports none
Wir geben hier keine bridge-ports an, da diese zu einem späteren Zeitpunkt automatisch hinzugefügt werden. Außerdem sind Sie während des Bootvorgangs und somit der initialen Netzwerk konfiguration, evtl. noch nicht vorhanden.
B.A.T.M.A.N. Interface
allow-hotplug bat0 iface bat0 inet6 manual up ip link set $IFACE up post-up brctl addif br-ffki $IFACE post-up batctl it 10000 pre-down brctl delif br-ffki $IFACE || true down ip link set $IFACE down
VPN Service mit FASTd einrichten
Um anderen Knoten im Freifunk eine direkte Verbindung zum neuen Dial-In-Server zu ermöglichen sind folgende Schritte nötig:
Dieses Script nach /etc/init.d/fastd kopieren: http://freifunk.in-kiel.de/debian/fastd
dieses Script in /etc/fastd/fastd.conf erstellen:
log to syslog level debug; interface "mesh-vpn"; method "xsalsa20-poly1305"; method "aes128-gcm"; bind 0.0.0.0:10000; include "secret.conf"; mtu 1426; include peers from "peers"; on up " ip link set dev $INTERFACE address de:66:c8:a0:df:04 ip link set up dev $INTERFACE batctl if add $INTERFACE batctl vm server ";
dieses script in /etc/fastd/secret.conf erstellen:
secret "<your-secret-fastd-key>";
wobei du den fastd-key generieren musst mit:
fastd --generate-key
dies generiert einen secret- und einen public-key, diese muss man sich beide gut für später notieren.
Dann noch das Starten des fastd-deamons beim bootvorgang einstellen mit:
update-rc.d fastd defaults
Public Keys der anderen Knoten runterladen:
cd /etc/fastd git clone git://freifunk.in-kiel.de/fastd-peer-keys.git peers
Damit die Peers immer up-to-date bleiben kann man mit Hilfe dieses Scripts:
cd /etc/fastd wget http://freifunk.in-kiel.de/debian/fastd-update
Und als cronjob einrichten einmal am Tag einrichten
Gateway Knoten
Ein Gateway Knoten ist ein Knoten welcher anderen Teilnehmern des Freifunk ein Route ins Internet anbietet.
DHCP Dienst
Siehe auch DHCP.
babeld
Beispiel für eine babeld.conf:
# allow babeld to communicate on interface br-ffki interface br-ffki wired false # refuse default gateway routes in ip 0.0.0.0/32 le 0 deny # allow private v6 and v4 networks in ip fc00::/7 ge 7 allow in ip 10.0.0.0/8 ge 16 allow # refuse other routes in deny # Redistribute private v4 and v6 networks redistribute ip fc00::/7 metric 256 redistribute ip 10.0.0.0/16 ge 16 metric 256 redistribute local if br-ffki # refuse anything else not explicitely allowed redistribute local deny redistribute deny