Neues Entdecken

Ihr Internet-Partner seit 1997.

Installation von OpenVPN Server in Windows Server 2012 R2 und Client unter Windows 10 (und abwärts).
Das HOWTO beschreibt das Setup des Servers, die Erstellung von Keys und die Integration von Clients.

Revision, 26.05.2017:
– Gilt für OpenVPN 2.4.2 Setup
– Windows Server 2016 kompatibel


Download & Installation

Download des Installers (“Installer, Windows Vista and later”) unter www.openvpn.net – OpenVPN Community Software, bzw. Community Downloads.

Unter Choose Components wählen wir sämtliche Komponenten aus, explizit auch die OpenVPM RSA Certificate Management Scripts.

Danach kann OpenVPN installiert werden – Wir bestätigen die Sicherheitsfrage bezüglich TAP-Windows Provider V9. Danach ist der Server schon fast einsatzbereit.


Vorbereitungen

Wir wechseln ins Verzeichnis easy-rsa (Meistens unter C:\Programme\OpenVPN) und benennen folgende Datei um:

vars.bat.sample in vars.bat

Danach editieren wir vars.bat und passen folgende Zeilen unseren Bedürfnissen an:

set KEY_COUNTRY=CH
set KEY_PROVINCE=ZH
set KEY_CITY=Zuerich
set KEY_ORG=MeineFirma AG
set KEY_EMAIL=support@meinefirmag.ch
set KEY_CN=server01.meinefirma.ch
set KEY_NAME="Meine Firma OpenVPN Key"
set KEY_OU="IT & Networking"
set PKCS11_MODULE_PATH=changeme
set PKCS11_PIN=1234

Es darf kein Wert leer bleiben. Die PKCS11_MODULE_PATH sowie PKCS11_PIN kann so belassen werden.

 

Weiter passen wir die Keysize auf mindestens 2048 an, empfehlenswert wäre 4096.

set KEY_SIZE=4096

 

Wir legen den Pfad zur openssl.cnf fest. Andernfalls könnten wir folgende Warnmeldung beim Generieren der Zertifikate erhalten:

WARNING: can't open config file: /etc/ssl/openssl.cnf

 

Hierzu ergänzen wir das vars.bat (am Ende der Datei) mit folgender Zeile (in unserem Fall ein englisches Windows 2012 R2 oder 2016, daher der Pfad C:\Program Files\OpenVPN\easy-rsa\openssl-1.0.0.cnf).

set OPENSSL_CONF=C:\Program Files\OpenVPN\easy-rsa\openssl-1.0.0.cnf

Nun setzen wir die Umgebungsvariablen mittels Ausführen (in der Kommandozeile) des vars.bat


Danach werden alle Files zurückgesetzt und die Zertifikationsinstallation vorbereitet mittels clean-all.bat
Achtung:
Dies überschreibt sämtliche zuvor erstellten Zertifikate! Die anfängliche Fehlermeldung kann ignoriert werden – das Verzeichnis “keys” wird erstmals erstellt.


Zertifikate erstellen

Nun beginnen wir mit der Erstellung der einzelnen Keys. Folgende Keys werden nun erstellt:

CA (build-ca.bat)
DH (build-dh.bat)
Server-Zertifikat (build-key-server.bat)

Client-Zertifikat(e) (build-key.bat)

 

Erstellen von CA und DH Keys via Konsole (einmalig).

Vor der Erstellung eines Keys muss immer vars.bat ausgeführt werden. Nun generieren wir den CA Key mittels build-ca.bat (mit den Eigenschaften, welche wir mittels vars.bat angegeben haben), indem wir einfach mit Enter bestätigen.


Als nächstes erstellen wir den DH Key mittels build-dh.bat

Achtung: Bei einer Schlüssellänge von 4096 kann das Generieren der DH-Parametern mehr als eine Stunde andauern. Dies je nach Systemleistung.


Nun generieren wir den Private Server Key mittels build-key-server.bat.

Wir bestätigen zweimal mit Yes, damit das Zertifikat signiert und erstellt wird. Das Passwort wird leer gelassen.

Mittels folgendem Befehl wird der Server-Key erstellt:

build-key-server.bat <Servername>

Gemäss unseres Beispiels lautet der Befehl:

build-key-server.bat Server01

Zusammengefasst sollte die komplette Erstellung folgendermassen aussehen:


Nun generieren wir den Client Key mittels build-key.bat. Wir geben beim “Common Name” den Clientnamen an, um später mehrere Clients im Logfile des Servers unterscheiden zu können.

Wir bestätigen zweimal mit Yes, damit das Zertifikat signiert und erstellt wird.

Optional kann ein Passwort angegeben werden. Dieses wird der OpenVPN Client beim Verbindungsaufbau mit dem Server abfragen. Somit können wir sicherstellen, dass unser Zertifikat in falschen Händen nicht missbraucht werden kann.

Mittels folgendem Befehl wird der Client-Key erstellt:

build-key.bat <Clientname>

In unserem Beispiel lautet der Befehl:

 build-key.bat Client01

Eine komplette Erstellung sollte folgendermassen aussehen:


Nun sind die notwendigen Keys erstellt. Bei einer Client-Installation sind immer folgende Keys notwendig:

ca.crt
client.crt
client.key

Die restlichen Keys sind privat und werden den Clients nicht mitgegeben.


Konfiguration Server

Wir erstellen folgende Verzeichnisse (wie erwähnt, könnte OpenVPN auch unter C:\Program Files\OpenVPN\ installiert worden sein – abhängig von der Windows-Version):

C:\Programme\OpenVPN\server-keys
C:\Programme\OpenVPN\log
(meistens schon vorhanden)
C:\Programme\OpenVPN\ccd

Wir kopieren die Dateien dh4096.pem, ca.crt, Server01.crt und Server01.key, welche in C:\Programme\OpenVPN\easy-rsa\keys zu finden sind, in das Verzeichnis C:\Programme\OpenVPN\server-keys.

Unser server.ovpn für eine Roadwarrior-Konfiguration sieht in etwa folgendermassen aus (ein Backslash muss jeweils mit einem weiterem Backslash escaped werden) – das Configfile legen wir unter C:\Programme\OpenVPN\config ab.

#################################################
# OpenVPN (MvA-Networks Conf)
# VPN Server Configuration
#
# Copyright 2006-2018 (03.01.2018) www.mva.ch
# MvA Internet Services GmbH
#################################################

local 192.168.1.100
port 1194
proto udp
dev tun

# ----------------------------------------------
# Zertifikate
# ----------------------------------------------

dh "C:\\Programme\\OpenVPN\\server-keys\\dh4096.pem"
ca "C:\\Programme\\OpenVPN\\server-keys\\ca.crt"
cert "C:\\Programme\\OpenVPN\\server-keys\\Server01.crt"
key "C:\\Programme\\OpenVPN\\server-keys\\Server01.key"

# ----------------------------------------------
# Server-Setup
# ----------------------------------------------

server 10.19.15.0 255.255.255.0
ifconfig-pool-persist "C:\\Programme\\OpenVPN\\ipp.txt"
client-to-client

# ----------------------------------------------
# Client-Settings (inkl Special Dir)Files
# ----------------------------------------------

client-config-dir "C:\\Programme\\OpenVPN\\ccd"
push "route 192.168.1.0 255.255.255.0"
push "dhcp-option DNS 192.168.1.10"

# ----------------------------------------------
# Defaults
# ----------------------------------------------

keepalive 10 120
comp-lzo
persist-key
persist-tun

# ----------------------------------------------
# Logging
# ----------------------------------------------

status "C:\\Programme\\OpenVPN\\log\\openvpn-status.log"
log "C:\\Programme\\OpenVPN\\log\\openvpn.log"
log-append "C:\\Programme\\OpenVPN\\log\\openvpn.log"
verb 3

Im obigen Fall gehen wir davon aus, dass der Server in einem internen LAN: 192.168.1.0/24 steht und der Client auf alle Hosts in dem Lan Zugriff haben wird (als Bridge). Der Server selbst hat die interne IP-Adresse 192.168.1.100. Zudem weisen wir dem Client den internen DNS Server 192.168.1.10 zu.

Zusammenfassung:
Netzwerk: 192.168.1.0
IP des Servers: 192.168.1.100
DNS-Server: 192.168.1.10

Nach der erfolgreichen Erstellung der Verzeichnisse und Implementation der Konfiguration kann OpenVPN via Services in der Windows-Systemumgebung gestartet werden. Dazu geben wir in der Konsole folgendes ein:

net start OpenVPNService

Somit sollte (sofern auf der Firewall auch die richtigen Ports geöffnet sind, in unserem Falle UDP Port 1194) ein Client eine VPN Verbindung zum Server aufnehmen können.


Konfiguration Clients

Download des Installers (je nach Client-Version,bei Windows 10: “Installer, Windows Vista and later”) unter www.openvpn.net – OpenVPN Community Software, bzw. Community Downloads.

Die Auswahl der Komponenten muss nicht angepasst werden, wir wählen die Standard-Installation. Wir bestätigen die Sicherheitsfrage bezüglich “TAP-Windows Provider V9” (Installieren).

OpenVPN Installation Windows 2012


Nach erfolgreicher Installation kopieren wir die oben vorbereiteten Client Keys:

ca.crt
Client01.crt
Client01.key

ins dafür vorgesehene Verzeichnis, beispielsweise C:\Program Files\OpenVPN\config. Danach erstellen wir eine Config in demselben Verzeichnis (Bsp. client.ovpn), wobei x.x.x.x der externen IP (des Routers, wenn Portforwarding vorhanden) des VPN Servers entspricht. Das Verbose tag (verb) kann nach erfolgreichen Tests auf 1 oder 0 gesetzt werden, damit nicht sämtliche Informationen den Benutzer verwirren, wenn das VPN startet.

##############################################
# MvA-Networks Connect. OpenVPN ClientScript #
##############################################

client
dev tun

proto udp
remote xxx.xxx.xxx.xxx 1194
resolv-retry infinite
nobind
persist-key
persist-tun

ca "C:\\Program Files\\OpenVPN\\config\\ca.crt"
cert "C:\\Program Files\\OpenVPN\\config\\Client01.crt"
key "C:\\Program Files\\OpenVPN\\config\\Client01.key"

comp-lzo
verb 3

Das OpenVPN GUI zum manuellen Start des OpenVPN Clients muss als Administrator ausgeführt werden.

Nun kann in der Taskliste das VPN via Icon gestartet werden.
Achtung: Der OpenVPN Client benötigt zum konfigurieren der Netzwerkeinstellungen Administrator-Rechte!

Nach erfolgreicher Verbindung sollte der Clientcomputer ins Remotenetzwerk integriert worden sein.

OpenVPN Installation Windows 2012

37 Kommentare

  • Hi,

    Danke für das tolle How To. Funktioniert soweit einwandfrei. Der Client kann sich ohne Fehler einwählen und alle Server hinter dem OpenVPN ansteuern. Für mich wäre jetzt nur Interessant, wie ich es schaffe, dass ich z. B. den Client vom Servernetz anpingen/ansteuern kann, denn das schaffe ich irgendwie nicht. Fehlt irgendeine Einstellung bei dir hier noch? Wäre über Tipps dankbar.

  • Das Problem des pings auf das “interne” Netzwerk lässt sich mit
    netsh interface ipv4 set int “LAN-Verbindung” forwarding=enabled
    netsh interface ipv4 set int “LAN-Verbindung 2” forwarding=enabled

    lösen.
    Dadurch werden anfragen an das Netzwerk über den TAP Adapter weitergeleitet.
    Solange das Forwarding nicht aktiv ist werden zwar die Ping pakete zum Server geschickt, der jedoch weiß den “Rückweg” nicht und lässt daher die Pakete dann fallen.

Kommentieren