OpenVPN openWRT
OpenVPN auf Freifunk Firmware
Info
Das VPN, das von den Freifunk Knoten an Uplinks (bspw. DSL) konfiguriert wird, verbindet im Ernstfall, ueber einen Link mit schlechter Metrik, voneinander getrennte Wolken im Weimarnetz. Momentan arbeiten wir mit VPN Zertifikaten / Schluesseln, die individuell fuer jeden Knoten ausgestellt werden.
Installation
Software
Per ssh auf den Router verbinden, um zuallererst die openvpn Software zu installieren.
ssh root@104.63.Knotennummer.1
ipkg update ipkg install openvpn ipkg install freifunk-openwrt-compat mkdir /etc/openvpn
Keys
Nun ist die Software installiert, jetzt noch die vom VPN-Admin bezogenen Keys auf den Router spielen: scp benutzen um das Tar-Archiv auf den Router zu uebertragen.
scp keys-[knotenname].tar.gz root@104.63.knotennummer.1:/etc/openvpn
Nun in der ssh Konsole die Keys auspacken:
cd /etc/openvpn/ tar xfvz keys-[knotenname].tar.gz rm keys-[knotenname].tar.gz
Konfiguration
Client konfigurieren
cd /etc/openvpn vi bongbong.conf
Im vi muss man fuer den Editier-Modus i druecken und nun kanns losgehen. Die folgenden Eintraege in der Datei bongbong.conf sollten ueberprueft werden.
remote l18a.de client dev tap proto tcp port 1195 ca ca.crt cert [knotenname].crt key [knotenname].key cipher AES-128-CBC #nach der kommenden Zertifikatumstellung dann #cipher none ns-cert-type server #tun-mtu 1500 #bei Tunnelung ueber internet, z.b. DSL braucht man folgende Zeile #mssfix 1397 tun-mtu 1472 mssfix
Wobei natuerlich [Knotenname] durch den Knotennamen erzetzt werden muss. Mit Esc wird der Editier-Modus im vi beendet. Mit : gelangt man in den Datei-Modus. Im Datei-Modus noch ein w und ein q eigeben (fuer write und quit) und Enter.
OLSR Konfiguration
cd /etc rm local.olsrd.conf cp /rom/etc/local.olsrd.conf . vi local.olsrd.conf
Mit i in den Editier-Modus.
# Add your addons (e.g. plugins) to olsrd.conf here, # addons for interfaces in /etc/local.olsrd.conf.eth1 Interface "tap0" "tap1" { HelloInterval 5.0 HelloValidityTime 90.0 TcInterval 2.0 TcValidityTime 270.0 MidInterval 15.0 MidValidityTime 90.0 HnaInterval 15.0 HnaValidityTime 90.0 Ip4Broadcast 104.255.255.255 LinkQualityMult 104.63.[Knotennummer].1 0.1 }
Esq :wq zum speichern und schliessen.
Firewall konfigurieren
cd /etc rm local.fw cp /rom/etc/local.fw /etc/local.fw vi local.fw
Mit dem Cursor vor diesen Eintrag gehen
;; stop) ;;
Folgendes eintragen: (i druecken)
iptables -I INPUT -i tap0 -j ACCEPT iptables -I OUTPUT -o tap0 -j ACCEPT iptables -t nat -A POSTROUTING -o tap0 -s 104.63.knotennummer.1/255.255.255.224 -j MASQUERADE iptables -I FORWARD -i tap0 -o eth1 -j ACCEPT iptables -I FORWARD -i eth1 -o tap0 -j ACCEPT
Esq :wq zum speichern und schliessen.
Automatischer VPN Start beim Booten
Wir editieren das initscript S99done.
cd /etc/init.d rm S99done cp /rom/etc/init.d/S99done /etc/S99done vi S99done
Am Ende der Datei folgendes eintragen (i).
modprobe tun /etc/init.d/openvpn restart
Konfiguration testen
Nun einen Neustart. Das sollte eigendlich alles gewesen sein.
Wenn das Gerät wieder erreichbar ist, könnt ihr euch einloggen und die Log-Datei anzeigen lassen.
logread -f
das VPN startet etwas später, d.h. ihr habt noch 1-2 Minuten Zeit bis zur ersten Meldung...
Wenn probleme auftauchen
Wenn ihr nicht ins VPN kommt. SSH auf den Router und eingeben:
killall openvpn cd /etc/openvpn openvpn --config bongbong.conf
Das gibt erstmal recht viel aus, aber zeigt auch woran es hängt.
Checkliste
- openvpn installiert?
- compat installiert?
- /etc/local.fw verändert?
- /etc/local.olsrd.conf verändert?
- /etc/init.d/S99done verändert?
- keys in /etc/openvpn?
- conf-datei in /etc/openvpn?
- neugestartet und lange gewartet?
als letzter hinweis: falls die Uhrzeit auf dem Gerät noch auf 2000 steht, dann gehts nicht, weil das Zertifikat damals noch gar nicht gültig war :-)
date -s 20060710 (auf das heutige Datum anpassen!)