OpenVPN einrichten unter Windows

 

Dieser Artikel bezieht sich auf Windows 2000, funktioniert aber genauso auf XP und sonstigen Windows-Systemen.

OpenVPN kann so eingerichtet werden, dass sich entweder nur die 2 PCs gegenseitig erreichen, oder aber auch
die kompletten Netzwerke untereinander.

Folgender Netzwerk-Aufbau:

LAN1 --- VPN-Server <------> VPN-Client --- LAN2

LAN1 IP-Bereich: 192.168.0.0

LAN2 IP-Bereich: 192.168.1.0

 

Schritte am OpenVPN-Server

 

- OpenVPN installieren (komplett)
- Das TAP-Interface installieren und am besten umbenennen, z.B. in OpenVPN
 

Zertifikate erstellen

1.) Eingabeaufforderung öffnen und zum Verzeichnis „C:\Programme\OpenVPN\easy-rsa" wechseln
     Wichitg: Eingabeaufforderung immer geöffnet lassen !


2.) init-config eingeben, dies wird nur beim erstenmal durchgeführt oder man will ganz von vorne anfangen.
init-config erstellt eine vars.bat und eine openssl.cnf


3.) Die Datei vars.bat folgendermaßen bearbeiten:

set HOME=c:\Programme\OpenVPN\easy-rsa
set KEY_CONFIG=openssl.cnf
set KEY_DIR=keys                                ;Unterverzeichnis unter easy-rsa wo alles
                                                              ;erstellte abgelegt wird, Zertifikate usw.
set KEY_SIZE=1024                              ;kann auf 2048 erhöht werden. soll
                                                              ;keinen Einfluss auf die Performance haben
                                                              ;das erstellen kann aber etwas länger dauern
set KEY_COUNTRY=DE                        ;frei wählbar, 2 Zeichen
set KEY_PROVINCE=Land                    ;frei wählbar
set KEY_CITY=Stadt                             ;frei wählbar
set KEY_ORG=HomeVPN                     ;frei wählbar
set KEY_EMAIL=Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!      ;frei wählbar

 darauf achten das hinter den Zeilen keine Leerstellen sind sonst kommt es beim aufrufen der vars.bat zu Fehlermeldungen

4.) vars <enter> in der Eingabeaufforderung eingeben.

5.) clean-all <enter> ausführen in der Eingabeaufforderung. Es kommt eine Fehlermeldung beim ersten mal, da das keys Verzeichnis noch nicht existiert. VORSICHT clean-all löscht alles im Verzeichnis keys und kopiert zwei Dateien in das Verzeichnis

6.) ca.crt erstellen mit build-ca.
Die ersten vier Meldungen mit Enter bestätigen damit die Vorgaben der vars.bat übernommen werden. Für die folgenden zwei Abfragen sinnvolle Werte ausdenken.
Tip: Organizational Unit Name und Common Name würde ich gleiche Bezeichnungen geben. Wichtig ist aber das sich diese bei jeder weiteren Abfrage die noch kommen beim erstellen weiterer Zertifikate müssen sie unterschiedlich sein (Organizational Unit Name1 = Common Name1 ungleich Organizational Unit Name2 = Common Name2 ungleich Organizational Unit Name3 = Common Name3 ....)
siebte und letzte Abfrage einfach wieder mit enter bestätigen

6.) dh-file erstellen mit build-dh <enter>

7.) Key/Zertifikat erstellen für den Server mit build-key-server ZertifikatName <enter>
Alles mit <enter> bestätigen bzw. Organizational Unit Name2 = Common Name2 eintragen und y/n Abfragen mit y bestätigen

10. key/Zertifikat erstellen für den Client mit build-key ZertifikatName <enter>

11. für jeden weiteren Client Punkt 10 wiederholen

 

Server-Konfigurationsdatei einrichten

 Die Datei „config.ovpn“ unter C:\Programme\OpenVPN\config abspeichern

Config.ovpn

port 1194
# Der gewünschte Port, auf dem der Server lauscht

proto udp
# Wahl des zu verwendenden Protokolls (UDP ist Standard)

mode server
# "Ich spiele den Server"

dev tap
# Verwende das TAP-Device, nicht das TUN

dev-node TAP
# Das zu verwendende Interface unter Netzwerkverbindungen, Name muss evtl. angepasst werden
# Groß-/Kleinschreibung beachten!

ifconfig 10.0.0.1 255.255.255.0
# legt die IP-Adresse und Subnetzmaske für den Server fest

ifconfig-pool 10.0.0.2 10.0.0.9
# legt einen IP-Adresspool für die Clients fest. Dieser Bereich muss an die Anzahl der benötigten Clients
# angepasst werden

client-to-client
# die Clients (falls mehrere) können sich untereinander sehen

tls-server
# schaltet TLS ein und die Rolle des Servers beim Handshake

dh c:\\Programme\\openvpn\\keys\\dh1024.pem
# Pfad zur dh1024.pem (Doppelte Backslashes beachten!

ca c:\\Programme\openvpn\\keys\\ca.crt
# Pfad zurca.crt

ca c:\\Programme\openvpn\\keys\\server.key
# Pfad zur server.key

ca c:\\Programme\openvpn\\keys\\server.key
# Pfad zur server.key

ca c:\\Programme\openvpn\\keys\\server.crt
# Pfad zur server.crt

comp-lzo
# Einschalten der Komprimierung

tun-mtu
tun-mtu-extra 32
# Speziell für DSL geeignet

verb 3
mute 50
persist-key
persist-tun

push "route-gateway 10.0.0.1"
# Legt beim Client das Gateway für Verbindungen in das Netz des Servers fest. Der Gateway ist hierbei der
# VPN-Server, bei dem man sich einwählt.

# push "redirect-gateway"
# Sämtlicher Verkehr wird über ads oben genannte Gateway geleitet (nicht zwingend nötig!)

push "route 192.168.0.0 255.255.255.0
# legt beim Client einen Routingeintrag zum internen Netz im Server-LAN fest
# hier ist das interne Netz auf der Serverseite anzugeben

auth-user-pass-verify c:\\Programme\\OpenVPN\\config\\checkpsw.exe via-env
# Hiermit wird zusätzlich ein Benutzername+Passwort verlangt, die Benutzer+Passwörter kann in der password.txt eintragen

keepalive 30 60
# alle 30 Sekunden wird der Server angepingt, wenn nach 60 Sek. keine Antwort zurück kommt, wir die Verbindung getrennt

push "keepalive 30 60"
# das gleiche wird an den Client weiter gegeben.


IP-Forwarding am VPN-Server aktivieren

Das ist dafür, dass die Anfragen vom VPN-Netz auch ins LAN gelangen können.

Nach Eintragung in die Registry den PC neustarten!

IP-Forwarding aktiveren.reg 

Windows Registry Editor Version 5.00

 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]

"IPEnableRouter"=dword:00000001


Routen ins VPN-Netz eintragen

Damit die Rechner aus dem LAN auch auf Anfragen aus dem VPN antworten können, ist es zwingend Nötig, statische Routen ins VPN-Netz einzutragen.

Dies geschieht entweder direkt am Router, wenn er’s unterstützt. Ansonsten muss es an jedem einzelnen Client im LAN, mit „route add –p 10.0.0.0 mask 255.255.255.0 192.168.0.10“ hinzugefügt werden.

Denn die Antwort an eine Anfrage aus dem VPN-Netz soll ja nicht an den Router gelangen, sondern an den PC der als VPN-Server dient…. Da er in diesem Fall den Router darstellt.

Soll vom LAN1 aus auch auf Rechner aus LAN2 zugegriffen werden, muss dieser Schritt dort selbstverständlich wiederholt werden. 

Firewall einrichten am Server, am Beispiel von ZoneAlarm (bei Kerio wird der Gateway-Modus benötigt… diesen gibt es allerdings nur in der Pro-Version)

 


Konfiguration des VPN-Clients

 

1.) Am Client-PC ebenfalls OpenVPN installieren, jedoch ohne den Serverdienst.


Konfigurationsdatei anpassen

Client.ovpn (C:\Programme\OpenVPN\config)

remote meinedomain.dyndns.org
# die öffentliche IP (oder dyndns-Name) des Routers auf der Server-Seite

port 1194
# legt den zu verwendenen Port fest (muß gleich dem Port beim Server sein)

dev tap
# TAP oder TUN?

dev-node openvpn
# Name des Netzwerk-Adapters im System - Achtung: Groß-/Kleinschreibung beachten

tls-client
# "ich bin der Client"

ca C:\\Programme\\OpenVPN\\keys\\ca.crt
# vollständige Pfadangabe ergänzen, doppelte "\\" beachten

key C:\\Programme\\OpenVPN\\keys\\Client.key
cert C:\\Programme\\OpenVPN\\keys\\Client.crt

ns-cert-type server
# der Server überprüft die Zertifikate auf Gültigkeit

comp-lzo

pull
# "pull" muß in der Client-config stehen, damit die push-Anweisungen (Gateway, Routen)
# vom Server geholt werden

tun-mtu 1500
tun-mtu-extra 32
# siehe Hinweis oben: wenn "tun-mtu" und "tun-mtu-extra",
#dann in beiden configs (Server + Client)
verb 3
mute 50
persist-key
persist-tun

auth-user-pass
# Username+Passwort werden abgefragt


Konfigurationsdatei per Batch starten

Die Einwahl ins VPN habe ich mit einer Batch-Datei realisiert. Es gibt auch ein kleines Tool namens OpenVPN GUI, mit dem man sich dann auch verbinden kann.

OpenVPN starten.bat

@ECHO OFF
ECHO.
ECHO VPN-Zugang wird initialisiert...
ECHO ========================================
ECHO.
openvpn --config C:\Programme\OpenVPN\config\client.ovpn

Sobald die Verbindung steht, könnt ihr euer VPN nutzen. Um die Verbindung zu schließen, schließt ihr einfach das Befehlszeilenfenster.

 

Hosts-Datei anpassen

Damit der Client die Rechner im LAN1 auch mit dem Namen ansprechen kann, ist es nötig die Hosts-Datei anzupassen. Diese findet man unter C:\WINDOWS\system32\drivers\etc.

Die Datei muss nun folgendermaßen angepasst werden:

192.168.0.2        PCName1
192.168.0.3        PCName2