Nach einiger Zeit hab ich mir nun auch mal OpenVPN angeguckt. Ich benoetige von meinem Netbook unter Linux (und leider auch manchmal Windows) eine VPN-Einwahl in zwei Netze. Einmal das Wohnheimnetz in dem Studentenwohnheim in dem ich lebe (ATW) und einmal das Subnetz in der Uni wo ich arbeite. In beiden Netzen laufen Server 24/7 mit festen IPs die ich entsprechen erreichen kann. Vorab gesagt: Eine VPN-Verbindung fuer einen PC einzurichten ist sehr einfach. Doch von Anfang an…:
Auf dem Server und dem Client:
Anschliessend auf dem Server als root in /etc/openvpn/ mit dem folgenden Befehl einen statischen Schluessel erzeugen:
openvpn --genkey --secret mykey.txt |
openvpn --genkey --secret mykey.txt
Diesen Schluessel dann auf einem sicheren Weg (z.B. scp) auf den Client transportieren. Mit einem
sollte er gegen unbefugtes Lesen gesichert werden. Nun sind die Konfigurationsdateien /etc/openvpn/myvpn.conf anzulegen. Auf dem Server wie folgt:
dev tun
ifconfig 10.10.100.41 10.10.100.42
secret mykey.txt
port 5000 |
dev tun
ifconfig 10.10.100.41 10.10.100.42
secret mykey.txt
port 5000
und auf dem Client folgende:
remote 123.123.123.123
dev tun
ifconfig 10.10.100.41 10.10.100.42
secret mykey.txt
port 5000
route-gateway 10.10.100.41
redirect-gateway |
remote 123.123.123.123
dev tun
ifconfig 10.10.100.41 10.10.100.42
secret mykey.txt
port 5000
route-gateway 10.10.100.41
redirect-gateway
Auf dem Server muss Port 5000 UDP erreichbar sein. Wenn beide Dateien angelegt sind, kann man den Server starten mit dem Befehl:
openvpn --config /etc/openvpn/myvpn.conf |
openvpn --config /etc/openvpn/myvpn.conf
mit dem selben Befehl kann man anschliessend auf dem Client die Verbindung zum VPN-Server herstellen. Das das erfolgreich war kann man anhand der Statusmeldung „Initialization Sequence Completed“ erkennen.
Das die Verbindung funktioniert kann man mit entsprechendem hin- und hergepinge ueberpruefen.
Auf dem Server fehlen nun noch zwei kleine Einstellungen damit auch das routen ins Netzwerk/Internet funktioniert. Zueinem muss ip_forward aktiviert sein und man muss eine iptables NAT Regel hinzufuegen:
echo "1" >> /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -s 10.10.100.41/24 -j SNAT --to 123.123.123.123 |
echo "1" >> /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -s 10.10.100.41/24 -j SNAT --to 123.123.123.123
Damit die Einstellungen nicht bei einem Neustart verloren gehen, kann man sie z.B. in die /etc/rc.local eintragen. Ob alles funktioniert kann man dann erkennen, indem man z.B. www.heise.de/ip aufruft um seine IP rauszufinden, dann den VPN-Tunnel aufbauen und die Seite refreshen…
Unter Windows gestaltet es sich aehnlich einfach. Man muss OpenVPN fuer Windows installieren. Das Konfigurationsverzeichnis ist dann C:\Programme\OpenVPN\config. Dort wieder die mykey.txt ablegen (WinSCP) und eine VPN Konfigurationsdatei erstellen wie bereits oben beschrieben. Es ist nur wichtig, dass sie die Endung *.ovpn erhaelt. Bei der Vergabe der IP-Adressen fuer den VPN Tunnel ist weiter zu beachten, dass nur IP-Adressen aus dem Subnetz 255.255.255.252 benutzt werden koennen. Welche das sind, kann man sich unter Windows mit dem Befehl
openvpn --show-valid-subnets |
openvpn --show-valid-subnets
anzeigen lassen.
Die hier beschriebenen Infos habe ich von da und von da.