Wollte ich schon lange mal machen, nun bin ich auch tatsächlich dazu gekommen. Ziel ist es einen OpenVPN Tunnel zu einem Server aufzubauen und diesen als Ausgangspunkt für jede Art von Internet Traffic zu nutzen.
Der OpenVPN Server läuft bei mir unter einem Ubuntu 12.04 LTS. Als Client kommt ein Windows 7/8 64bit vor. Die Konfiguration erfolgt so:
Server
Als erstes installieren wir OpenVPN und kopieren die Konfigurationsbeispieldateien nach /etc/openvpn:
apt-get install openvpn cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/ gunzip /etc/openvpn/server.conf.gz cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0 /etc/openvpn/easy-rsa2 cd /etc/openvpn/easy-rsa2/ mkdir keys
Hier editiert man nun die Zeilen und passt die Werte an seinen eigenen an:
export KEY_COUNTRY=DE export KEY_PROVINCE=NRW export KEY_CITY=Düsseldorf export KEY_ORG=”Vpntest” export KEY_EMAIL=”onlyspam [at] myhomepage.net”
Danach gehts in der Command Line weiter:
source ./vars ./clean-all ./build-ca ./build-key-server server ./build-dh ./build-key MeinRechnerName
Da der OpenVPN User am besten unter einem eigenen User läuft, legen wir diesen schnell an:
adduser --system --no-create-home --disabled-login openvpn addgroup --system --no-create-home --disabled-login openvpn
In der Datei /etc/openvpn/server.conf müssen einige Zeilen wie folgt angepasst werden:
... ca ./easy-rsa2/keys/ca.crt cert ./easy-rsa2/keys/server.crt key ./easy-rsa2/keys/server.key # Diese Datei geheim halten. dh ./easy-rsa2/keys/dh1024.pem # Diffie-Hellman-Parameter ... push "redirect-gateway def1 bypass-dhcp" #Aktiviert den OpenVPN Server als Standard Gateway auf den Clients push "dhcp-option DNS 208.67.222.222" #Setz den OpenDNS Server als DNS Server auf den Clients push "dhcp-option DNS 208.67.220.220" #Setz den OpenDNS Server als DNS Server auf den Clients ... user openvpn group openvpn
Zum Abschluss der Server Konfiguration müssen wir noch ein paar ipTables Regeln definieren:
iptables -A FORWARD -o eth0 -i tun0 -s 10.8.0.0/24 -m conntrack --ctstate NEW -j ACCEPT iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 1194 -j ACCEPT
Client
Als erstes besorgen wir die Client Software, dieses gibts hier. Nun brauchen wir vom Server noch das Client Zertifikat + Private Key, außerdem noch das CA Zertifikat.
Da es bei der Übertragung vom Server öfters zu Encoding Fehlern kommt, packen wir das schnell in ein zip Archiv:
zip -r zipped.zip MeinRechnerName.crt MeinRechnerName.key ca.crt
Die 3 Dateien packen wir dann nach „C:\Program Files (x86)\OpenVPN\config“ und benennen diese wie folgt:
MeinRechnerName.crt --> client.crt MeinRechnerName.key --> client.key ca.crt --> Muss nicht umbenannt werden
Zum Abschluss kopieren noch aus dem Ordner „C:\Program Files (x86)\OpenVPN\sample-config“ die Datei „client.ovpn“ nach „C:\Program Files (x86)\OpenVPN\config“ und editieren dort folgende Zeile.
Hier muss my-server-1 durch den Hostname/IP des OpenVPN Servers ersetzt werden:
remove my-server-1 11194
Nun startet man nur noch das Programm „OpenVPN GUI“ und klickt auf „Connect“.
Dieses HowTo passiert im auf der Anleitung von Ubuntu Users Wiki. Für ausführliche Erklärungen was was macht, bitte dort schauen.