OpenVPN
Aus Machackers
OpenVPN ist ein einfach benutzbares, robustes und stark anpassbares VPN Protokoll und eine Implementation dieses Protokolls für UNIX-Systeme. Es ist daher auch unter Mac OS X einsetzbar.
Bei der Installation von OpenVPN unter Mac OS X sollte das aktuelle .tar.gz Release von der OpenVPN Projekt Home Page geladen und neu übersetzt werden. Die LZO Librarys sind ebenfalls zu empfehlen. Die tun Kernel Extension ist der schwierigere Teil, man kann sich den Quelltext und fertig übersetzte Paket von [1] laden. Will man das Paket selbst übersetzen, braucht man die Darwin-Quellen von Apple via CVS-Checkout.
OpenVPN kann auch via DarwinPorts installiert werden.
Ausserdem gibt es jetzt auch eine grafische Oberfläche für OpenVPN. Sie nennt sich OpenVPN-GUI für Mac OS X und kann als Komplettdistribution mit allen nötigen Binarys oder im Quelltext auf der OpenVPN-GUI Webseite heruntergeladen werden. Die Kompilierung oder manuelle Konfiguration ist hierbei nicht nötig.
Shell Script zur Aktivierung
Beim kextunload - also dem Entfernen des Moduls - kann das System abstürzen. Man sollte dies daher so selten wie möglich machen. Wenn es doch nötig ist, sollte man wie unten im Shell Script beschrieben vorgehen.
- OpenVPN beenden
- MTU neu setzen
- deletetunnel, down und dann unloaden.
Dann entlädt es sich meist prima. Auf der sicheren Seite ist man jedoch, wenn man es gar nicht erst entlädt.
#!/bin/bash
VPNHOST=vpnserver.ath.cx
if [ "$1" = "off" ]
then
echo "Stopping VPN"
# XXX TODO XXX
# ifconfig down / killall openvpn -> crashes?
killall -11 openvpn
sudo ifconfig tun0 mtu 1500 # more than tun0 ?
sudo ifconfig tun0 deletetunnel
sudo ifconfig tun0 down
sudo kextunload /System/Library/Extensions/tunnel.kext
elif [ "$1" = "reset" ]
then
echo "reseting routes"
sudo route flush
elif [ "$1" = "on" ]
then
echo "vpn: Starting"
if kextstat | grep -q "tunnel"
then
echo "vpn: tunnel device already loaded"
else
sudo kextload /System/Library/Extensions/tunnel.kext
kextstat | egrep 'tunnel'
fi
sudo killall openvpn
sudo killall openvpn
# ROUTES
sudo route add -net 192.168.1.0 192.168.1.101
sudo route add -net 192.168.0.0 192.168.1.101
# keep vpn alive
echo -n "sticking with normal route for our vpnserver... "
route -n get $VPNHOST | grep gateway | awk '{print $2}'
sudo route add $VPNHOST \
`route -n get $VPNHOST | grep gateway | awk '{print $2}'`
# tunnel everything (muhar)
sudo route delete default
sudo route add default 192.168.1.101
# Open VPN
sudo openvpn --dev tun --remote $VPNHOST --rport 53 \
--ifconfig 192.168.1.102 192.168.1.101 \
--secret /Volumes/sec1/secure/vpn/statickey \
--user nobody --group nogroup \
--comp-lzo --ping 10 --verb 5
else
# TODO
echo "VPN Status"
fi
