RSS-Feed anzeigen

jahlives

Entfernte und lokale Netze mit OpenVPN verbinden

Bewerten
OpenVPN ist eine geniale Anwendung wenn man entfernte Subnetze verbinden will. Dabei wird ein SSL-basiertes VPN aufgebaut. Die Einrichtung von OpenVPN steht im Wiki detailliert beschrieben. Leider baut das OpenVPN Paket von Synology ein VPN-Netzwerk im sogenannten p-t-p (Point-to-Point) Modus auf. In diesem Modus gehen die folgenden Schritte leider nicht.
  • openvpn muss im subnet Modus laufen
  • entfernt resp lokal bezieht sich im Folgenden auf den Server wo OpenVPN läuft d.h. lokal --> direkt am Server und entfernt --> hinter einem OpenVPN-Client

Lokale Netze
Sehr einfach kann man lokale Netze dem OpenVPN zugänglich machen. Dazu muss man in der Konfiguration von openvpn auf dem Server die weiteren Netze bekannt machen
Bsp: Ein Server mit zwei eth Schnittstellen (192.168.10.2/32 und 192.168.11.2/32). Damit diese beiden Subs nun für den OpenVPN erreichbar werden muss man einerseits das ip-forwarding aktivieren und andererseits dem Server sagen wie er diese Netze routen muss.

1. forwarding aktivieren
Code:
echo 1 > /proc/sys/net/ipv4/ip_forward
2. OpenVPN Konfig
Code:
route 192.168.10.0 255.255.255.0
route 192.168.11.0 255.255.255.0
Entfernte Netze
Auch das Einbinden entfernter Netze ist nicht so schwierig, erfodert aber etwas mehr Anpassungen. Sagen wir wir hätten ein Remote Netz 192.168.12.0/24 und der OpenVPN selber verwendet intern ein 10.33.34.0/24 Netz. Weiter brauchen wir die OpenVPN-IP eines Clients aus dem Remote Netz, der via OpenVPN verbunden ist (hier 10.33.34.5 mit lokaler IP 192.168.12.27). Desweiteren muss der OpenVPN-Server mit zertifikatsbasierter Authentifizierung arbeiten und der remote Client (10.33.34.5) muss auf dem Server über ein sogenanntes ccd-Files verfügen (zu beidem haben wir mehr im Wiki)
10.33.34.5
1. ccd File

in diesem File
Code:
client-to-client
ifconfig 10.33.34.5 255.255.255.0
iroute 192.168.12.0 255.255.255.0
push "route 192.168.10.0 255.255.255.0"
push "route 192.168.11.0 255.255.255.0"
ifconfig setzt die OpenVPN-IP des Clients. iroute gibt dem OpenVPN bekannt, dass hinter diesem Client das folgende Subnetz erreichbar ist. Und die beiden push Anweisungen sorgen dafür, dass der remote Client auch die beiden lokalen Subs erreichen kann.

2. OpenVPN Serverkonfig

Code:
route 192.168.12.0 255.255.2550
hinzufügen, damit der Server weiss, dass das entfernte Sub ebenfalls über ihn laufen muss.

3. Route hinzufügen

Auf dem Server sollte man noch eine Route nach folgendem Motto erstellen
Code:
route add -net 192.168.12.0 netmask 255.255.255.0 gw 10.33.34.5 dev tun0
dabei ist gw die OpenVPN IP des remote Clients hinter dem das Netzwerk 192.168.12.0/24 erreichbar ist

4. ip-forward aktivieren

Sowohl auf dem Server als auch auf dem remote Client, der ein remote Netzwerk anbinden soll, muss ip-forward aktiviert sein. Das geht bei Linux einfach wie oben beschrieben.
Und bei Windows geht es indem man regedit öffnet und nach 'IPEnableRouter' sucht (sollten 3 Schlüssel sein). Bei all den Einträgen eine 1 (hexadezimal) eintragen und die Kiste rebooten.

Wenn alles geklappt hat kann man das testen indem man auf dem Server einfach
Code:
ping 192.168.12.27
macht und der remote Client sollte anworten. Wenn das nicht klappt probiert auch ein ping auf die OpenVPN IP des remote Clients also
Code:
ping 10.33.34.5
Wenn das geklappt hat kann man daran gehen das gesamte remote Netzwerk erreichbar zu machen. Dazu muss man auf dem Router des entfernten Netzes Routen am LAN-Interface für die beiden lokalen Netze und das OpenVPN-Netz anlegen z.B.
Code:
route add -net 192.168.10.0 netmask 255.255.255.0 gw 192.168.12.27
route add -net 192.168.11.0 netmask 255.255.255.0 gw 192.168.12.27
route add -net 10.33.34.0 netmask 255.255.255.0 gw 192.168.12.27
und auf dem Router vor dem Server sollte man ebenfalls Routen für die Subs erstellen, also
Code:
route add -net 192.168.12.0 netmask 255.255.255.0 gw 192.168.10.2
route add -net 10.33.34.0 netmask 255.255.255.0 gw 192.168.10.2

Aktualisiert: 03.08.2015 um 08:04 von jahlives

Kategorien
OpenVPN

Kommentare

  1. Avatar von ubuntulinux
    EDIT: Hab das mit Subnet-Modus überlesen. Das wär in diesem Fall ein TAP-Device.
    Aktualisiert: 20.02.2012 um 22:12 von ubuntulinux
  2. Avatar von jahlives
    nein nein, seit OpenVPN 2.1 bietet es auch einen Subnet Modus fürs tun Interface. Das geht problemlos via tun, mach ich auch so
    http://openvpn.net/archive/openvpn-u.../msg00079.html

    subnet -- Use a subnet rather than a point-to-point topology by configuring the tun interface with a local IP address and subnet mask, similar to the topology used in --dev tap and ethernet bridging mode. This mode allocates a single IP address per connecting client and works on Windows as well. Only available when server and clients are OpenVPN 2.1 or higher, or OpenVPN 2.0.x which has been man ually patched with the --topology directive code. When used on Windows, requires version 8.2 or high er of the TAP-Win32 driver. When used on *nix, re quires that the tun driver supports an ifconfig(8) command which sets a subnet instead of a remote endpoint IP address.
    server> route add -net 10.64.136.0 netmask 255.255.252.0 gw 10.8.0.34
    SIOCADDRT: Network is unreachable
    mal explizit mit dev tun0 probiert?
  3. Avatar von ubuntulinux
    Hab' ich garnicht gewusst, thx für den Tipp
  4. Avatar von warbyrd
    Bin gerade bei der Einrichtung eines OpenVPN Netzes und bin auf diese Anleitung gestossen, jedoch scheint sich ein Fehler eingeschlichen zu haben...

    Müsste im 'ccd' file nicht

    ifconfig 10.33.34.5 255.255.255.0
    stehen, anstatt

    ifconfig 10.66.77.5 255.255.255.0
    ?

    Oder übersehe ich da etwas? - Denn dann hat der client doch die ip 10.66.77.5 und kann nicht mit 10.33.34.5 angesprochen werden?!

    Gruß,
    warbyrd
  5. Avatar von jahlives
    Vertipper meinerseits :-) Ist ne IP aus meinem Netz