OpenVPN mit Source NAT auf VServer

In vielen Ländern ist mittlerweile „free wifi“ in Hotels bzw. Cafes Standard, nur leider in Deutschland noch nicht. Der Vorteil im Urlaub liegt insbesondere mit modernen Smartphones darin, über Skype kostenlos nach Hause zu telefonieren, Emails abholen und und und …

Man sollte sich aber über seine Sicherheit Gedanken machen, da jeder den Traffic mitlesen kann. Deshalb ist auf meinem Android Smartphone der Emailverkehr generell verschlüsselt, genau wie bei Skype (systembedingt). Die Internetseiten wurden aber noch unverschlüsselt abgerufen und jeder kann sehen, wo man hinsurft. Deshalb habe ich auf meinem Androidphone OpenVPN installiert und leite darüber jede Verbindung zum OpenVPN Server, der auf einem VServer läuft. Die Einrichtung wurde dabei in vielen Tutorials bereits beschrieben, weshalb ich hierzu nichts schreibe. Um den Traffic komplett (ausser dem lokalen IP-Bereich) umzuleiten, dient folgende Zeile in der server.conf:

push "redirect-gateway def1"

Auf dem Server muss noch das Forwarding erlaubt werden, und es sollte eine Firewall installiert bzw. konfiguriert werden. Um eine korrekte Kommunikation aufzubauen, muss auf dem OpenVPN Server NAT durchgeführt werden. Dabei ist auf einem VServer venet0 die erste virtuelle Netzwerkkarte. NAT muss dabei auf dem richtigen Device gemacht werden, und nicht auf einem Subdevice wie venet0:0.

iptables -t nat -A POSTROUTING -s 172.16.0.0/24 -o venet0 -j MASQUERADE

Das iptables-Ziel „MASQUERADE“ ist aber meist (wie bei mir auch) nicht im Kernel enthalten. Hier gibt es eine Aushilfe. Man „fälscht“ den Absender des Paketes über Source NAT (SNAT) und der Server gibt vor, selber Absender zu sein. Kommt ein Antwortpaket zurück, weiss der Server, dass das Paket zum Smartphone gehört und schreibt die entsprechenden privaten Zieladressen ins entsprechende Paket und leitet es weiter.

iptables -t nat -A POSTROUTING -s 172.16.0.0/24 -o venet0 -j SNAT --to-source IP_DES_SERVERS

Anmerkung: Ich verwende als VPN Netz das B-Klasse Netz 172.16.0.x. Möglich sind aber auch A-Klasse (10.x.y.z) bzw. C-Klasse (192.168.x.y) Netze.

Comments (3)

AlexJuni 9th, 2012 at 6:02 pm

Danke für diese kurze Zusammenfassung, wie man einen vServer zum VPN Gateway macht. Hat mir sehr geholfen!

MasterQFebruar 26th, 2013 at 10:12 pm

Voll gut!

Vielen dank

Dejan S.August 4th, 2015 at 6:58 pm

Ooo man, bin schon die ganze Tag auf suche nach eine Lösung… und endlich bei dir habe es gefunden.
Danke man :)

Leave a comment

Your comment


Warning: Undefined variable $user_ID in /home/www/public/dev-tec/wp-content/themes/devart/comments.php on line 67