OpenVPN

Aus Machackers

Wechseln zu: Navigation, Suche

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.

  1. OpenVPN beenden
  2. MTU neu setzen
  3. 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

Weblinks

Persönliche Werkzeuge