fastd
Funktion
fastd ist eine Möglichkeit die Freifunk Knoten per VPN mit dem Gateway zu verbinden. Fastd ist ein PtMP VPN Tool, es wird am Server nur ein Interface erzeugt über das sich alle Knoten verbinden. Als alternative bietet sich das schnellere l2tp an welches bereits ebenfalls in der Firmware enthalten ist: https://wiki.freifunk-franken.de/w/Freifunk-Gateway_aufsetzen/VPN/l2tp
fastd wird komplett anders als früher konfiguriert. Das früher nötige Verwaltungsscript darf KEINESFALLS(!!) ausgeführt werden, auch der Cronjob ist nicht mehr nötig. Falls die IP noch im alten KeyXchange eingetragen ist, sollte sie hieraus unbedingt entfernt werden (KeyXchange Admin fragen)
Installation
fastd kann aus den Paketquellen installiert werden
Debian:
apt-get install fastd
Beispiel Konfiguation
In diesem Beispiel sind wir das Gateway "ffffuerthVPN".
Es ergibt Sinn für jede Hood einen eigenen Unterordner in /etc/fastd/[Deine Hood] anzulegen!
/etc/fastd/[ffffuerthVPN]/fastd.conf
# Log errors to stderr log level error; # Log warnings to a log file log to syslog as "ffffuerthVPN" level warn; # Set the interface name interface "ffffuerthVPN"; # Disable encryption method "null"; # Bind to a fixed port bind ipv6 any:10004; # fastd needs a key: generate by "fastd --generate-key" # private key: secret "c00a286249ef5dc5506945f8a3b413c0928850214661aab866715203b4f2e86a"; # to show the public key for the keyxchange Admin use: # fastd -c /etc/fastd/bla/bla.conf --show-key # Set the interface MTU for TAP mode with xsalsa20/aes128 over IPv4 with a base MTU of 1492 (PPPoE) # (see MTU selection documentation) mtu 1426; on up "/etc/fastd/[ffffuerthVPN]/up.sh"; on down "/etc/fastd/[ffffuerthVPN]/down.sh"; secure handshakes no; on verify "/etc/fastd/[ffffuerthVPN]/verify.sh";
/etc/fastd/[ffffuerthVPN]/down.sh
#!/bin/sh /sbin/ifdown $INTERFACE
/etc/fastd/[ffffuerthVPN]/up.sh
#!/bin/sh /sbin/ifup $INTERFACE
/etc/fastd/[ffffuerthVPN]/verify.sh
#!/bin/sh return 0
danach:
Scripte ausführbar machen:
chmod +x /etc/fastd/[Deine-Hood]/*.sh
Dienst aktivieren und starten (ohne ".service")
systemctl enable fastd@[Hood] systemctl start fastd@[Hood]
Router sperren
Folgende Variablen werden in die fastd config übertragen:
- LOCAL_ADDRESS: the local IP address
- LOCAL_PORT: the local UDP port
- PEER_ADDRESS: the peer’s IP address
- PEER_PORT: the peer’s UDP port
- PEER_NAME: the peer’s name in the local configuration
- PEER_KEY: the peer’s public key
Diese können am on-verify angehangen werden z.b.:
on verify "/etc/fastd/fff.bat3/fastd-blacklist.sh $PEER_KEY $PEER_ADDRESS";
das fastd-blacklist.sh kann dann z.b. so aussehen:
#!/bin/bash echo $1 >> /tmp/bla echo $2 >> /tmp/bla
Somit erhält man in /tmp/bla eine File mit fastd keys (die man leider zu gar nix zuordnen kann und daher auch keine bösen Router darüber finden kann) und eine Reihe IP Adressen die man leider auch zu keinen Router zu ordnen kann. Wenn man nun einen bösen Router im fastd sperren will, kann man nun einzeln die IPs per iptables vom Server sperren und im Batman gucken ob er weg ist. Alles unschön aber einen besseren Weg hab ich bisher nicht gefunden. $PEER_NAME ist leider leer und kann auch für nichts verwendet werden...
Testen der Konfiguration
nachdem der Service gestartet ist, sollte mit
ip -c link show
Sowohl das Batman als auch das VPN Interface zu sehen sein.