Archive for Juli 30th, 2009

DD-WRT als OpenVPN-Server

Donnerstag, Juli 30th, 2009

Die aktuellen Preise der Energieversorger drängen zum Umdenken – irgendwie.

Es ist zwar sehr angenehm einen Server zuhause stehen zu haben, auf den man sich rund um die Uhr connecten kann. Dumm nur, wenn er 95% des Tages idlet.

Eine neue Lösung musste her um sich von unterwegs daheim einzuloggen und z.B. den LinVDR zu starten.

Ein WRT54GL verrichtet seit Jahren klaglos seinen Dienst mit DD-WRT. Das hatte ich mir ausgesucht, weil ich mal mit HotSpot-Funktionalitäten herumspielen wollte. Hatte damals auch prima geklappt. Der WRT stand im LAN, ein Radius-Server und die Splashseite waren auf meinem Server im Netz.

Geschickterweise gibt es auch ein Firmware-Image mit integriertem OpenVPN sowohl Client als auch Server.

Hier meine Einstellungen (Klick aufs Bild für Originalgröße):

dd-wrt-vpn-1

In die Felder:

Public Server Cert
Public Client Cert
Private Client Key
DH PEM
trägt man die generierten Keys bzw. Zertifikate ein. Prinzipiell kann man nach der Anleitung im DD-WRT-Wiki vorgehen.
Hier noch meine openvpn.conf auf dem WRT:
server 10.9.0.0 255.255.255.0
port 1195
proto udp
tls-server
dev tun
ca ca.crt
cert cert.pem
key key.pem
dh dh.pem
client-to-client
push "route 192.168.178.0 255.255.255.0"
comp-lzo
ping-timer-rem
keepalive 20 180
verb 3

Abweichend zum Default hört das OpenVPN auf dem WRT auf Port 1195. Ich habe das lieber sauber in der Fritz!Box die die DSL-Leitung handlet getrennt. Ausserdem verwende ich intern wie extern bei solchen Sachen gerne dieselben Portnummern.

Nun muss man dem WRT noch mitteilen, dass beim Booten auch das OpenVPN mitstarten soll:

dd-wrt-vpn2

Das Ganze nochmal für Copy&Paste, die beiden Skripte sind jeweils in die Inputbox bei Kommandos einzutragen:

cd /tmp/openvpn
/usr/sbin/openvpn --daemon --config /tmp/openvpn/openvpn.conf
sleep 5

und die Firewall, damit auch sauber ins Netz geroutet wird:

/usr/sbin/iptables -I INPUT -p udp --dport 1195 -j ACCEPT
/usr/sbin/iptables -I INPUT -i tun+ -j ACCEPT
/usr/sbin/iptables -I FORWARD -i tun+ -j ACCEPT

Jetzt kann ich auch von unterwegs schnell mal den Videorekorder per WOL anwerfen und Timer erstellen o.ä.