Redirect network traffic through OpenVPN tunnel

Saturday, 6. November 2010

  • Der Server auf dem openVPN läuft hat die IP 88.88.88.88
  • Das lokale Subnet ist ein 10.0.0.0 und der Client der zum openVPN Server die Verbindung aufbauen wird hat die IP 10.0.0.1
  • Beim Start des openVPN Servers wird das virtuelle Device “tap0” am Server erstellt und erhält die IP 10.10.10.250
  • Beim Start des openVPN Clients am Rechner mit der IP 10.0.0.1 wird ebenfalls ein virtuelles Device “tap0” erstellt und erhält die IP 10.10.10.1

Wir haben also zwei verschiedene Netze 10.0.0.0 und 10.10.10.0 die von OpenVPN durch Routing automatisch verbunden werden. (Somit ist keine bridge und kein anpassen der beiden Netze aneinander nötig)

Die Konfigurationsdateien für Server und Client sehen wie folgt aus:

~# cat /etc/openvpn/Server.conf

####### OpenVPN Server Config #########

port 1100
mode server
dev tap0
client-to-client
tls-server
proto tcp-server

server-bridge 10.10.10.250  255.255.255.0 10.10.10.1 10.10.10.199
ifconfig 10.10.10.250 255.255.255.0

chroot /etc/openvpn

ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key
dh /etc/openvpn/keys/dh1024.pem

keepalive 10 60
verb 5
tun-mtu 1500
tun-mtu-extra 32
mssfix 1450
persist-tun
persist-key
comp-lzo
comp-noadapt

~$ cat /etc/openvpn/client.conf

####### OpenVPN Client Config #########

port 1100
remote 88.88.88.88
ifconfig 10.10.10.1 255.255.255.0

dev tap
tls-client
proto tcp-client
redirect-gateway
route-gateway 10.10.10.250

ca /etc/openvpn/keys/ca.crt
key /etc/openvpn/keys/client1.key
cert /etc/openvpn/keys/client1.crt

ns-cert-type server
keepalive 10 60

tun-mtu 1500
tun-mtu-extra 32
mssfix 1450
persist-tun
persist-key
comp-lzo
comp-noadapt
route-delay 10

Die Zertifikate müssen im Vorraus erstellt und ausgetauscht worden sein. Hierbei helfen die Skripte im Verz.: /usr/share/doc/openvpn/examples/easy-rsa/2.0/

(Anleitungen zur Erstellung und dem Umgang mit den Zertifikaten findet man über die Suchmschine seiner Wahl (HowTo folgt eventuell noch^^)

Nach dem erfolgreichen Start des VPN wird mit dieser Konfiguration sämtlicher Traffic des VPN Clients über den VPN Tunnel geleitet und kommt erst bei der IP 88.88.88.88 im Netz zum Vorschein. (Dies könnte auch dazu genutzt werden um Internet TV und andere Dienste zu nutzen die mit der eigenen IP nicht zugängig sind. Diesen Trick erlauben uns die Optionen

redirect-gateway
route-gateway 10.10.10.250

welche dafür sorgen, dass sämtliche Vorkehrungen automatisch getroffen werden um das Tunneln zu ermöglichen.  Möchte man nun das gesamte Netz des VPN Client über diesen Gateway schleifen so muss auf diesem Internetforwarding aktivert werden und die IP 10.0.0.1 bei allen anderen Clients im Netz als Default Gateway eingetragen werden.

Siehe auch > Internet Forwarding aus der Konsole aktivieren

Am OpenVPN Client:

sudo iptables -A POSTROUTING -t nat -j MASQUERADE
sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"

Auf den übrigen Clients im Netz:

sudo route add default gw 10.0.0.1

glhf 🙂

2 Responses to “Redirect network traffic through OpenVPN tunnel”



  1. xapient Says:

    PS: Wer jetzt am Server

    dsniff -i tap0

    laufen lässt fängt sich alle Passwörter die im Netz über dieses Interface ziehen. mail, ftp, etc.

    Die Macht des Administrators sollte nicht unterschätzt werden und auch von diesem selbst mit viel Ehrfurcht betrachtet und nicht ausgenutzt werden.



  2. Agata Brown Says:

    Thank you for teaching me on how to Redirect network traffic through OpenVPN tunnel 🙂 Love your post.