openVPN - Virtual Private Network

Die Konfiguration des Dienstes openVPN unter Linux ist nicht so kompliziert wie einige vermuten. Im Internet findet man viele Konfigurationsbeispiele die auch sehr oft funktionieren. Wenn es dennoch nicht funktioniert, dann meistens nur aus diesem Grund, dass die Routing nicht gesetzt ist, falsch gesetzt ist oder auf falschem Gerät gesetzt ist. Auf diesen Seiten findet man drei Szenarien. Abhängig von der Struktur der Netzes und der Anforderungen findet man möglicherweise hier eine Lösung.
Hier werden drei Lösungen vorgestellt.

  • openVPN-Server und mehrere Clients
  • Zwei Subnetze werden miteinander Verbunden
  • Zwei Standorte werden miteinander Verbunden und alle sind im einem Netz.

Wie die Konfigurationen im einzelnen aussieht, kommen wir später dazu. Zuerst müssen wir die Standard Aufgaben ausführen, die Erstellung von Zertifikaten.

Als Betriebssystem für den Server nehmen wir openSuSE 13.2, hier werden auch die Zertifikate erstellt.
Für den Client nehmen wir Windows 7

Wir installieren openSuSE 13.2 von der DVD und danach aktualisieren wir das ganze System mit dem Befehl im shell Fenster zypper up.

openVPNzl: # zypper up

Jetzt müssen wir die Scriptsammlung EasyRSA für die Erstellung von Zertifikaten aus dem Internet runterladen. Wir erstellen ein Order /install und laden das Paket runter. Danach entpacken wir es und kopieren in den Order /etc/openvpn

openVPNzl: # mkdir /install
openVPNzl: # cd /install
openVPNzl: # wget -O easy-rsa-2.x.tar.gz https://github.com/OpenVPN/easy-rsa/archive/release/2.x.tar.gz
openVPNzl: # tar xvf easy-rsa-2.x.tar.gz
openVPNzl: # cp -r easy-rsa-release-2.x/easy-rsa /etc/openvpn/
openVPNzl: # cd /etc/openvpn/easy-rsa/2.0/

Die Datei /etc/openvpn/easy-rsa/2.0/vars könnten wir für unsere Bedürfnisse anpassen.
Hier ein Beispiel

export KEY_COUNTRY="DE"
export KEY_PROVINCE="Bayern"
export KEY_CITY="Stein (Mittelfranken)"
export KEY_ORG="Mechanical"
export KEY_EMAIL="info@test.com"
export KEY_OU="IT"

Wir beginnen mit der Erstellung von Zertifikaten.

 

openVPNzl: # source ./vars

 

 
Die Ausgabe sieht ungefähr so aus
  NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/2.0/keys

 

 

openVPNzl: # ./clean-all

 

 
Diesen Befehl nur verwenden, wenn Sie alle alte Zertifikate löschen wollen, sonnst nicht.
Ein ca Zertifikat wird erstellt.

 

openVPNzl: # ./build-ca

 

Server Zertifikat mit dem Namen server wird erstellt. Immer mit Enter weiter bis Frage nach Common Name
kommt. Bei Common Name bitte den Servername eintragen. Bei Passwort kein Passwort eintragen und weiter mit Enter-Taste. Letztendlich mit "Yes" abschließen.

 

openVPNzl: # ./build-key-server server

Es wird ein Diffie Hellman Key generiert.

 

openVPNzl: # ./build-dh

 

Zum Schluss erstellen wir ein oder mehrere Client Zertifikate. In unserem Beispiel ist das ein Zertifikat für den client1.

 

openVPNzl: # ./build-key client1

 

IP-Forwarding auf dem OpenVPN-Server (Linux) aktivieren. In unserem Fall können wir Yast verwenden und bequem den Forwarding aktivieren oder im shell - Fenster mit dem folgendem Befehl setzen.

 

openVPNzl: # echo 1 > /proc/sys/net/ipv4/ip_forward

 

IP-Forwarding auf dem openVPN-Client Computer. In unserem Fall ist das ein Windows PC. Wir müssen ein Eintrag in Registry ändern.
Dazu muss man folgenden Schlüssel in der Windows Registry bearbeiten:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters

Hier finden Sie den Eintrag "IPEnableRouter" als Datentyp REG_DWORD. Setzen Sie den Wert auf 1.
PC muss man neu starten.

 

An der Firewall bzw. Router mit Firewall müssen wir noch ein Port öffnen. In unserem Fall ist das der Port 1194. Wir setzen eine NAT. Was bedeutet das? Alle Anfragen aus dem Internet die an unsere Firewall des Firmennetzes an Port 1194 geschickt werden, sollten an die IP Adresse unseres openVPN Servers weitergeleitet werden.
Bei einfachen Router z.B. Fritzbox könnte es heißen Freigabe bzw. Portfreigabe.

 

Wir wollen selbstverständlich nicht nur einen sondern mehrere Server bzw. Client erreichen, deshalb müssen wir noch eine statische Route setzten. Wie wir die Route setzen, erfahren Sie bei den entsprechenden Konfigurationen.