Privates VPN mit fastd
Um aus dem Freifunk auf dein privates Netzwerk zugreifen zu können ist nicht besonders viel Arbeit notwendig.
Zu erst installieren wir auf unserem Desktop fastd und gehen wir folgt vor.
Vorbereitung
Wir erstellen uns zwei asymetrische Schlüssel für fastd. Ob wir dies auf unserem Desktop oder Router machen ist vollkommen egal. Gespeichert wird hier noch nichts.
# fastd --generate-key 2013-08-27 09:46:23 +0200 --- Info: Reading 32 bytes from /dev/random... Secret: 18a8020a5a14f730d035cb692bce1972ff9bec29fa33286c8a60e9f420ff3251 Public: 2846f379829d8008686ed65b7592619cf8adc50872d0db09afe92108e38623a2
# fastd --generate-key 2013-08-27 09:47:09 +0200 --- Info: Reading 32 bytes from /dev/random... Secret: e016583533920f5633df2b0fc8dba4666392c93c43bf009d96c70eb7d7da986d Public: 4d81ecb7563d85062572e40403f39dd1cbd511c516d8fc77466ef8f630f178c7
Danach muss die IPv6-Adresse des Freifunk Routers notiert werden. Dafür müssen wir uns auf dem Freifunkrouter einloggen.
# ifconfig br-freifunk br-freifunk Link encap:Ethernet HWaddr 64:70:02:F7:3E:F6 inet6 addr: fda1:384a:74de:4242:6670:2ff:fef7:3ef6/64 Scope:Global inet6 addr: fe80::6670:2ff:fef7:3ef6/64 Scope:Link ...
Erstellen der configs
Mithilfe dieser 2 Schlüssel und der IPv6 legen wir nun folgende Configs an.
ACHTUNG!: Werden die Keys aus diesem Beispiel 1 zu 1 übernommen, kann sich jeder in eurer privates Netzwerk einloggen! Also bitte erst den Punkt "Vorbereitung" durchgehen und ausschließlich die selbst generierten Keys verwenden!
Die 192.168.178.1 in der Config für den Desktop stellt mein privates Fritzbox Lan Gateway dar. Je nach Netzwerk muss hier 192.168.0.1, 192.168.1.1 oder evtl. etwas ganz anderes rein.
Config für den Desktop:
/etc/fastd/priv_vpn_desktop.conf
interface "privatesVPN"; mode tap; method "xsalsa20-poly1305"; mtu 1280; secret "18a8020a5a14f730d035cb692bce1972ff9bec29fa33286c8a60e9f420ff3251"; #Private Key 1 peer "FreifunkRouter" { remote [fda1:384a:74de:4242:6670:2ff:fef7:3ef6]:13337; #IPv6 d. Routers key "4d81ecb7563d85062572e40403f39dd1cbd511c516d8fc77466ef8f630f178c7"; #Puplic Key 2 } on up " ip link set up $INTERFACE "; on establish " dhclient privatesVPN ip route add default via 192.168.178.1 #Privates GW ";
Config auf dem Router:
/etc/fastd/priv_vpn_router.conf
interface "privatesVPN"; bind any:13337; mode tap; method "xsalsa20-poly1305"; mtu 1280; secret "e016583533920f5633df2b0fc8dba4666392c93c43bf009d96c70eb7d7da986d"; #Private Key 2 peer "Desktop" { key "2846f379829d8008686ed65b7592619cf8adc50872d0db09afe92108e38623a2"; #Puplic Key 1 } on up " ip link set up $INTERFACE brctl addif br-wan privatesVPN ";
Starten von fastd
Dazu loggen wir uns per SSH auf dem Router ein.
fastd -c /etc/fastd/priv_vpn_router.conf -d
Fastd wird nun im Hintergrund ausgeführt.
Auf dem Desktop:
fastd -c /etc/fastd/priv_vpn_desktop.conf
Ab jetzt können wir im gesamten Freifunk Netzwerk über unsere eigene DSL-Leitung surfen.
Autostart
Soll fastd automatisch beim booten gestartet werden, ist ein init script erforderlich.
Dafür erstellen wir auf dem Router unter /etc/init.d/fastd_priv eine neue Datei mit folgendem Inhalt.
START=99 start() { echo start fastd -c /etc/fastd/priv_vpn_router.conf -d }
Und vergeben die nötigen Rechte.
# chmod 755 /etc/init.d/fastd_priv # ls -l /etc/init.d/fastd_priv -rwxr-xr-x 1 root root 280 Aug 27 13:06 /etc/init.d/fastd_priv
Nun muss nur noch die init-Datei aktiviert werden.
# /etc/init.d/fastd_priv enable
Weiterführendes
Erklärung der configs
Desktop
interface "privatesVPN";
Name des neuen Interfaces. Wird hier nichts definiert, erstellt fastd einfach eines mit dem Namen "tap0".
mode tap;
tap: VPN auf Layer 2. (MAC Adressen)
tun: VPN auf Layer 3. (IP-Adressen)
method "xsalsa20-poly1305";
Verschlüsselungsalgorithmus.
mtu 1280;
Maximum Transfer Unit.
secret "18a8020a5a14f730d035cb692bce1972ff9bec29fa33286c8a60e9f420ff3251"; #Private Key 1
Privater Schlüssel.
peer "FreifunkRouter" { remote ipv6 [fda1:384a:74de:4242:6670:2ff:fef7:3ef6]:13337; #IPv6 d. Routers key "4d81ecb7563d85062572e40403f39dd1cbd511c516d8fc77466ef8f630f178c7"; #Puplic Key 2 }
Server des fastd VPN. In der config gibt es keine richtige definition, welcher Teilnehmer Server oder Client ist.
Der Einzige unterschied besteht darin, dass auf der Clientseite die IP-Adresse und der Port des fastd Servers definiert werden müssen.
on up " ip link set up $INTERFACE ";
Hier können Befehle definiert werden, die nach start von fastd ausgeführt werden sollen.
on establish " dhclient privatesVPN ip route add default via 192.168.178.1 #Privates GW ";
Die hier definierten Befehle werden erst nach dem Aufbau der VPN Verbindung ausgeführt.
Hier holt sich der Desktop über das aufgebaute Interface eine IP-Adresse und definiert deinen Lan-Gateway zum Standard.
Server
Die config ist ziemlich gleich aufgebaut.
on up " ip link set up $INTERFACE brctl addif br-wan privatesVPN ";
Der einzige große unterschied besteht darin, dass beim starten von fastd das neue Interface mit dem WAN-Interface des Freifunk Routers gebridged wird.
D.h. alle Pakete, die eurer Desktop an das "privatesVPN" Interface schickt, landen bei euch zuhause im Lan.
Wurde fastd gestartet?
netstat -tulpen
Lauscht hier ein fastd auf Port 13337, kann davon ausgegangen werden das fastd noch läuft.
Vorteile
1. Dein Traffic wird verschlüsselt bis zu dir nach Hause übertragen.
Weder die Betreiber der Freifunk Gateways noch die anonymisierungs Provider, durch die wir den Traffic leiten, kann nun in deinen Traffic schauen.
2. Du entlastest die Gateways der Freifunk Community.
Wenn du dich im Funkgebiet deiner eigenen Freifunkwolke aufhältst, wird der Traffic nicht mehr durch die Gateways geleitet.
Damit entlastet du sowohl unsere Server, als auch die anonymisierungs Provider, für die wir finanziell aufkommen müssen.
3. Kein eigenes Wlan mehr nötig
Theoretisch kannst du nun dein eigenes Wlan abschalten.
Sobald du dich in deiner Freifunkwolke befindest und den fastd Tunnel anschaltest, routet dein Freifunkrouter den Traffic in dein Lan, als würdest du dich in deinem alten Wlan Netzwerk befinden.