Monthly Archives: Oktober 2012

Erstellen eines OpenVPN Tunnels inc. Forwarding

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.

Leave a Comment

Filed under Allgemein