openVPN Verbindung zwischen Win2003 und WinXP Pro, aber wie ?
Hallo zusammen,
ich würde gerne von überall (mit meinem Laptop) in mein privates Netzwerk reinkommen, damit ich auf die Freigeben zugreifen kann und meine Projekte mittels einen Subversion Server abgleichen kann. Eine funktionierende DynDNS Lösung habe ich ja schon. Mein Problem ist es das openVPN sicher und funktionsfähig zu machen.
Im Netz sind die meisten Anleitungen für Linux, bei den für Windows komme ich leider nicht zurecht.
Habe openVPN 2.1 installiert und dann wenn es um die Zertifikat-Erstellung geht bzw. die confings zu bearbeiten (im Ordner "easy-rsa"), verstehe ich nur Bahnhof.
gibt es jemanden der mir eine "Schritt für Schritt" Hilfestellung geben könnte.
ich würde gerne von überall (mit meinem Laptop) in mein privates Netzwerk reinkommen, damit ich auf die Freigeben zugreifen kann und meine Projekte mittels einen Subversion Server abgleichen kann. Eine funktionierende DynDNS Lösung habe ich ja schon. Mein Problem ist es das openVPN sicher und funktionsfähig zu machen.
Im Netz sind die meisten Anleitungen für Linux, bei den für Windows komme ich leider nicht zurecht.
Habe openVPN 2.1 installiert und dann wenn es um die Zertifikat-Erstellung geht bzw. die confings zu bearbeiten (im Ordner "easy-rsa"), verstehe ich nur Bahnhof.
gibt es jemanden der mir eine "Schritt für Schritt" Hilfestellung geben könnte.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 73834
Url: https://administrator.de/contentid/73834
Ausgedruckt am: 08.11.2024 um 07:11 Uhr
14 Kommentare
Neuester Kommentar
Das ist eigentlich nichts besonderes. Eine Step-by-Step Anleitung? Ok, mal sehen ob ich sowas zusammenbekomme.
Du benötigst ein Netz indem du die OpenVPN Tunnel "organisierst". Jeder Client bekommt auf seinem OpenVPN Interface eine IP aus diesem Netz. Nennen wir es mal VPN-Netz und geben ihm den Bereich 192.168.254.0/24. Der OpenVPN Server selbst benötigt eine IP in diesem Netz. Um nicht alles so komplex zu gestallten nehmen wir einmal die 192.168.254.1. Komprimierung im Tunnel sollte man bei einem Windows-Server lassen, hat bei mir früher oder später immer Probleme verursacht. Dürfen die Clients untereinander daten austauschen? Falls ja benötigen wir noch eine Option. Dazu später. Was brauchen wir auch noch? Ein Protokoll (TCP oder UDP) und einen passenden Port. Ich sage einfach mal nehmen wir 20088 UDP. Welches Netzwerk befindet sich auf der "anderen Seite"? Ich gehe mal davon aus das dein Internes LAN im Bereich 192.168.0.0/24 liegt. Was benötigen wir noch? Einen Router(server). Das MUSS Windows Server sein, da du sonst probleme mit dem IP-Forwarding bekommst (Theoretisch kannst du das auch unter XP freischalten oder Bridge-Tunnel verwenden, aber das werde ich hier nicht beschreiben.) Ok, alle Daten noch einmal im Überblick:
- VPN 192.168.264.0/24
- LAN 192.168.0.0/24
- Router-IP (VPN): 192.168.254.1
- Router-IP (LAN): 192.168.0.1
- Protokoll: UDP, Port 20088
- Client2Client soll möglich sein
- mehrfachverwendung der Zertifikate soll nicht möglich sein
- Windows Server mit aktivem LAN-Router (Routing&RAS im LAN-Routing Modus)
Nun die Server-Config:
openvpn.conf:
; der Port
port 20088
; das L4 Protokoll
proto udp
; interface-typ
dev tun
; MTU des tunnels Automatisch bestimmen
mtu-test
; wir haben einen tls-Server
tls-server
mode server
; der Server bekommt die 192.168.254.1/24
ifconfig 192.168.254.1 255.255.255.0
; verschlüsselung mit 256bit AES CBC
cipher AES-256-CBC
; keepalive-intervall
keepalive 15 30
; verbosity (debug-level)
verb 1
; Clients dürfen untereinander kommunizieren
client-to-client
; Zertifikate dürfen doppelt verwendet werden
duplicate-cn
; clients-IP´s merken und wieder vergeben
ifconfig-pool-persist pool.txt
; einige Options mitgeben
push "route 192.168.0.0 255.255.255.0"
push "dhcp-option DNS 192.168.0.10"
push "dhcp-option WINS 192.168.0.10"
; soll der default-GW des clients umgebogen werden?
push "redirect-gateway"
; Zertifikate
; Zertifizierungsstellen-Zertifikat
ca ca.crt
; Server-Certifikat
cert server.crt
; DER GEHEIME SCHLÜSSEL DES SERVER ZERTIFIKATS
key server.key
; DH-Parameter zum aushandeln des Schlüsselmaterials
dh dh-2048.pem
So, nun erstellen wir schnell noch eine CA und ein Server-Cert.
Öffne eine konsole, wechsle in das Easy-RSA Verzeichniss und starte init-config.bat
Nun sollte eine vars.bat irgendwo rumliegen. Öffne diese Datei in Notepad und gib deine Werte für KEY_COUNTRY, PROVINCE, CITY, ORG usw. ein. Bitte hier sorgfältig vorgehen, das steht später in deinen Zertifikaten.
Irgendwo steht auch etwas von KEY_SIZE. Setze diese bitte auf 2048. Hast du alle Variabeln mit werten gefüllt, starte in der konsole (die hoffentlich noch geöffnet ist) folgendes:
Bitte auch in dieser folge
Aso, falls dich das Script nach einem CN (Common Name) fragt, verwende bitte einen eindeutigen Namen für die Zertifizierungsstelle. Dieser Name darf in KEINEM Cert doppelt vergeben werden.
Anschließend kannst du das Zertifikat für den Server erstellen, der von der eben erstellten CA signiert wird. Wieder in der hoffentlich noch geöffneten Konsole gibst du folgendes ein:
und zum Abschluss noch ein Client-Zertifikat. Das geht wieder in der Konsole mit folgendem Befehl:
oder was auch immer. PASS BITTE IMMER AUF DEN CN AUF!!!
Nun brauchen wir noch die DH Parameter. Der folgende Befehl erledigt auch das.
Zertifikate:
Auf dem Server:
ca.crt
dh-2048.pem
server.crt
server.key
Auf dem Client:
ca.crt
user1.crt
user1.key
Ich benenne die user1-2000000.crt(.key) immer in user.crt und user.key um, um am client immer die selbe config verwenden zu können. Habe ein script das das client-package erstellt und zipp´t.
Fehlt noch etwas? Aso, die client-config. Werde ich morgen nachholen. Ist schon zu spät. probier erstmal nur den Zertifikat-Teil mit deiner Config.
Du benötigst ein Netz indem du die OpenVPN Tunnel "organisierst". Jeder Client bekommt auf seinem OpenVPN Interface eine IP aus diesem Netz. Nennen wir es mal VPN-Netz und geben ihm den Bereich 192.168.254.0/24. Der OpenVPN Server selbst benötigt eine IP in diesem Netz. Um nicht alles so komplex zu gestallten nehmen wir einmal die 192.168.254.1. Komprimierung im Tunnel sollte man bei einem Windows-Server lassen, hat bei mir früher oder später immer Probleme verursacht. Dürfen die Clients untereinander daten austauschen? Falls ja benötigen wir noch eine Option. Dazu später. Was brauchen wir auch noch? Ein Protokoll (TCP oder UDP) und einen passenden Port. Ich sage einfach mal nehmen wir 20088 UDP. Welches Netzwerk befindet sich auf der "anderen Seite"? Ich gehe mal davon aus das dein Internes LAN im Bereich 192.168.0.0/24 liegt. Was benötigen wir noch? Einen Router(server). Das MUSS Windows Server sein, da du sonst probleme mit dem IP-Forwarding bekommst (Theoretisch kannst du das auch unter XP freischalten oder Bridge-Tunnel verwenden, aber das werde ich hier nicht beschreiben.) Ok, alle Daten noch einmal im Überblick:
- VPN 192.168.264.0/24
- LAN 192.168.0.0/24
- Router-IP (VPN): 192.168.254.1
- Router-IP (LAN): 192.168.0.1
- Protokoll: UDP, Port 20088
- Client2Client soll möglich sein
- mehrfachverwendung der Zertifikate soll nicht möglich sein
- Windows Server mit aktivem LAN-Router (Routing&RAS im LAN-Routing Modus)
Nun die Server-Config:
openvpn.conf:
; der Port
port 20088
; das L4 Protokoll
proto udp
; interface-typ
dev tun
; MTU des tunnels Automatisch bestimmen
mtu-test
; wir haben einen tls-Server
tls-server
mode server
; der Server bekommt die 192.168.254.1/24
ifconfig 192.168.254.1 255.255.255.0
; verschlüsselung mit 256bit AES CBC
cipher AES-256-CBC
; keepalive-intervall
keepalive 15 30
; verbosity (debug-level)
verb 1
; Clients dürfen untereinander kommunizieren
client-to-client
; Zertifikate dürfen doppelt verwendet werden
duplicate-cn
; clients-IP´s merken und wieder vergeben
ifconfig-pool-persist pool.txt
; einige Options mitgeben
push "route 192.168.0.0 255.255.255.0"
push "dhcp-option DNS 192.168.0.10"
push "dhcp-option WINS 192.168.0.10"
; soll der default-GW des clients umgebogen werden?
push "redirect-gateway"
; Zertifikate
; Zertifizierungsstellen-Zertifikat
ca ca.crt
; Server-Certifikat
cert server.crt
; DER GEHEIME SCHLÜSSEL DES SERVER ZERTIFIKATS
key server.key
; DH-Parameter zum aushandeln des Schlüsselmaterials
dh dh-2048.pem
So, nun erstellen wir schnell noch eine CA und ein Server-Cert.
Öffne eine konsole, wechsle in das Easy-RSA Verzeichniss und starte init-config.bat
Nun sollte eine vars.bat irgendwo rumliegen. Öffne diese Datei in Notepad und gib deine Werte für KEY_COUNTRY, PROVINCE, CITY, ORG usw. ein. Bitte hier sorgfältig vorgehen, das steht später in deinen Zertifikaten.
Irgendwo steht auch etwas von KEY_SIZE. Setze diese bitte auf 2048. Hast du alle Variabeln mit werten gefüllt, starte in der konsole (die hoffentlich noch geöffnet ist) folgendes:
vars.batclean-all.batbuild-ca.bat
Bitte auch in dieser folge
Aso, falls dich das Script nach einem CN (Common Name) fragt, verwende bitte einen eindeutigen Namen für die Zertifizierungsstelle. Dieser Name darf in KEINEM Cert doppelt vergeben werden.
Anschließend kannst du das Zertifikat für den Server erstellen, der von der eben erstellten CA signiert wird. Wieder in der hoffentlich noch geöffneten Konsole gibst du folgendes ein:
build-key-server.bat vpn-server
und zum Abschluss noch ein Client-Zertifikat. Das geht wieder in der Konsole mit folgendem Befehl:
build-key user1
oder was auch immer. PASS BITTE IMMER AUF DEN CN AUF!!!
Nun brauchen wir noch die DH Parameter. Der folgende Befehl erledigt auch das.
build-dh.bat
Zertifikate:
Auf dem Server:
ca.crt
dh-2048.pem
server.crt
server.key
Auf dem Client:
ca.crt
user1.crt
user1.key
Ich benenne die user1-2000000.crt(.key) immer in user.crt und user.key um, um am client immer die selbe config verwenden zu können. Habe ein script das das client-package erstellt und zipp´t.
Fehlt noch etwas? Aso, die client-config. Werde ich morgen nachholen. Ist schon zu spät. probier erstmal nur den Zertifikat-Teil mit deiner Config.
- Wenn ich mir das standard-example
anschaue (von openVPN 2.1), dann ist es 3 Mal
so groß.
Reicht dein Beispiel (Server-Config) aus ?
anschaue (von openVPN 2.1), dann ist es 3 Mal
so groß.
Reicht dein Beispiel (Server-Config) aus ?
Das sind die minimal erforderlichen Optionen. Du kannst natürlich die Original config nehmen und die Parameter einfach nur anpassen. Mir sind jetzt auf die schnelle nicht alle Parameter eingefallen die da default vorhanden sind.
Die config soll dir ja auch nur zeigen welcher Parameter was macht.
- Ich benutze den Server nicht als Router.
Dafür habe ich einen anderen normalen
WlanRouter von Netgear. Dieser kann zwar kein
VPN aber ich habe an dem ein Port-Forwarding
eingestellt mit dem Verweis auf die ServerIP
(hat eine statische 192.168.1.2).
Dafür habe ich einen anderen normalen
WlanRouter von Netgear. Dieser kann zwar kein
VPN aber ich habe an dem ein Port-Forwarding
eingestellt mit dem Verweis auf die ServerIP
(hat eine statische 192.168.1.2).
Alles kein Problem. Du musst eben nur den Port und das Protokoll das du in deiner Config angibst (hier UDP 20088) im Netgear forwarden. Ich bin auch davon ausgegangen das du das so machst. Alles andere währe nicht gut.
Desweiteren
habe ich in der Regiswie den Schlüssel
HKEY_LOCAL_MACHINE/System/Services/TcpIP/Parameters/IPEnableRouter von "0" auf "1"
gestellt.
Ist das dann noch möglich ?
habe ich in der Regiswie den Schlüssel
HKEY_LOCAL_MACHINE/System/Services/TcpIP/Parameters/IPEnableRouter von "0" auf "1"
gestellt.
Ist das dann noch möglich ?
Jepp. Das geht auch. Du kannst den router auch mit netsh oder sonst einem Tool aktivieren. Alle diese Tools setzen sowieso nur diesen RegKey.
ABER...wie gesagt. Es ist komplizierter zu verwalten da du keine GUI für das Routing hast.
Hast du denn keinen WindowsServer der für diese Dinge abgestellt werden kann? Kann auch W2Ksrv sein.
- Habe ich das richtig verstanden, dass mein
lokales Netz 192.168.1.0 bestehen bleibt und
mein VPN ein zweites bekommt. Um es besser
auseinander zu halten würde ich dann
10.10.10.10 nehmen.
Geht das in Ordnung ?
lokales Netz 192.168.1.0 bestehen bleibt und
mein VPN ein zweites bekommt. Um es besser
auseinander zu halten würde ich dann
10.10.10.10 nehmen.
Geht das in Ordnung ?
Sind alles Beispiele da oben. OpenVPN nutzt ja TUN/TAP Interfaces. Diese bekommen bei erfolgreicher Verbindungsherstellung eine IP (entweder statisch oder per DHCP vom openVPN server). Damit du das auch Routen kannst, musst du für diesen Netz ein extra "subnetz" angeben. Welches das ist ist wurscht, es darf sich eben nur nicht mit dem internem LAN überschneiden. 10.10.10.0/24 ist auch OK 10.10.10.1 würde ich ehr für den Router nehmen.
- Ich meine was ist , wenn ich einen
bestimmten Client nicht mehr erlauben
möchte sich einzuwählen. Dann
müsste ich doch ein neues Zertifikat
erstellen und an die restlichen verteilen.
Deswegen würde ich gerne verschiedene
Zertifikate an die Clients vergeben. Aber wie?
bestimmten Client nicht mehr erlauben
möchte sich einzuwählen. Dann
müsste ich doch ein neues Zertifikat
erstellen und an die restlichen verteilen.
Deswegen würde ich gerne verschiedene
Zertifikate an die Clients vergeben. Aber wie?
Schau doch einmal oben. Im dritten Schritt bei der Zertifikaterstellung erstellen wir ein Zertifikat mit dem Namen client1.crt und dem Schlüssel client1.key.
Du müsstest in deiner openvpn.conf noch den folgenden Parameter hinzufügen:
crl-verify revoke.pem
ein Zertifikat sperrst du in der easy-RSA mit folgendem Befehl:
WICHTIG! starte immer zuerst die vars.bat wenn du Zertifikate erstellst/sperrst.
start -> ausführen -> cmdcd EASYRSA-PFAD!varsrevoke-full client1
Anschließend die crl.pem in den openvpn config-ordner schieben ODER in der konfig den absoluten Pfad zur CRL angeben.
Ist ein Zertifikat einmal gesperrt, ist Feierabend für den Client. Du musst ein neues ausstellen.
Wie du ein weiteres erstellst? Ok, das geht wieder genauso.
start -> ausführen -> cmdcd EASY-RSA PFADvarsbuild-key user2 BEI DEM CN AUFPASSEN! build-key user3...
Du musst dann client2.crt, client2.key ca.crt MÖGLICHST SICHER an den Client weitergeben.
easyRSA erstellt immer 3 Dateien pro Request. Eine Zertifikatanforderung, einen Privaten Schlüssel und ein Zertifikat. Wenn du in deiner Domäne einen Windows Zertifikatserver hast, kannst du den request auch dort einreichen. Die .crt und die .key sind für dich die wichtigen. Alles andere einfach liegen lassen. Ich bin mir jetzt auch nicht sicher ob du bei dem revoke die serial des Zertifikates oder den Namen angeben musst (ich mache das über die Windows Zertifizierungsstelle). Er sollte aber einen Fehler melden falls du das falsche angegeben hast.
Ich habe da mal ein kleines Howto zusammengebastelt. Kannst es ja mal anschauen. Ich habe im erstem Teil die Grundlagen sowie die zertifikaterstellung beschrieben.
OpenVPN - Teil 1 - Installation, Konfiguration und erstellung der Zertifikate
OpenVPN - Teil 1 - Installation, Konfiguration und erstellung der Zertifikate
okokokok sry, kommt ja schon.
OpenVPN Client-Konfiguration:
Dateien:
Das ist zwar etwas sehr kurz, ich bin gerade dabei den zweiten Teil für mein openVPN HowTO vorzubereiten. Dort kannst du das dann noch einmal nachlesen. Falls noch fragen sind, jederzeit
OpenVPN Client-Konfiguration:
; Verbindungremote DEINSERVER.DYNDNS.ORGport 20088proto udp; Modus und Device-Typdev tuntls-client; Verschlüsselngcipher AES-256-CBC; keepalivekeepalive 15 30; verbosityverb 1; Zertifikateca ca.crtcert client1.crtkey client1.key
Dateien:
openvpn.conf | Konfigurationsdatei des Clients |
ca.crt | Zertifizierungsstellen-Zertifikat |
client1.crt | Zertifikat für Client1 |
client1.key | Geheimer Schlüssel für das Zertifikat |
Das ist zwar etwas sehr kurz, ich bin gerade dabei den zweiten Teil für mein openVPN HowTO vorzubereiten. Dort kannst du das dann noch einmal nachlesen. Falls noch fragen sind, jederzeit
Das mit dem 2 Teil kann leider noch eine Weile dauern. Meine Testumgebung hat sich verabschiedet. Habe das HowTO zu 70% fertig, es fehlt aber noch die Implementierung in Produktivsystemen. Mal sehen, sobald ich neue Hardware habe und meine Testumgebung wieder online ist vervollständige ich das HowTo (auf jeden fall noch bis jahresende). Blind möchte ich das nicht fertigstellen (könnte ja sein das sich in der config tipp, syntax oder designfehler einschleichen). Alternativ könnte ich es auch veröffentlichen und später fertigstellen. Mal sehen.