OpenVPN Routing zwischen den Subnetzen

  • Hallo,


    mein Ziel ist es, von meinem Computer wenn ich mit dem VPN verbunden bin einen Server zu erreichen, der mit meinen beiden OpenVPN Servern zu erreichen ist.
    Klar wenn ich mit dem 1. verbunden bin komme ich auf über die IP die er im 1. hat darauf.

    Allerdings hab ich den 2. VPN auch mit allen meinen Servern verbunden und würde gerne über den 2. VPN die Server mit den IPs des ersten VPN erreichen.
    (Ich kann den ersten VPN durch Firewalls nicht überall nutzen)

    Beide Server laufen unter Debian10


    Liebe Grüße

    Flo

  • Beide Server laufen unter Debian10

    Da musst du Routen auf allen Geräten setzen, wer ist wie erreichbar.

    Wenn dir das statisch zu viel Arbeit ist, solltest du auf dynamische Routingprotokolle zurückgreifen, z.B. OSPF, RIP etc.


    Ich habe noch ein paar Netzwerke, da läuft auf allen Servern und Routern OSPF mittels Bird.

  • Für die Clients, die sich verbinden, kannst du die Routen in der Server Config mit angeben. Wenn du ein netz hinter dem Client hast und diese dann auch erreichbar sein sollen, muss du (wie von H6G erwähnt) die Routen auch da hinterlegen (kann man über eine DHCP Option erledigen).

  • Also mal zur Aufklärung ich hab das bisher so:


    VPN1:



    # Which local IP address should OpenVPN

    # listen on? (optional)

    ;local a.b.c.d



    mode server

    tls-server

    ifconfig 10.2.0.6 10.2.0.5

    ifconfig-pool 10.2.0.8 10.2.0.252

    push "route 10.2.0.0 255.255.255.0"


    port 1194

    proto udp

    dev tun0


    ca server/ca.crt

    cert server/server.crt

    key server/server.key

    dh server/dh2048.pem



    #server 10.2.0.0 255.255.255.0


    ifconfig-pool-persist server/ipp.txt


    client-config-dir server/ccd

    route 10.2.0.0 255.255.255.0


    push "dhcp-option DNS 1.1.1.1"

    push "dhcp-option DNS 8.8.8.8"


    client-to-client


    keepalive 10 120


    tls-crypt server/ta.key


    remote-cert-tls client


    cipher AES-256-CBC

    auth SHA512

    tls-version-min 1.2


    max-clients 50


    persist-key

    persist-tun


    status server/openvpn-status.log


    #script-security 2

    #up server/up.sh


    log server/openvpn.log

    verb 4


    explicit-exit-notify 1



    VPN2:

    # Which local IP address should OpenVPN

    # listen on? (optional)

    ;local a.b.c.d


    mode server

    tls-server

    ifconfig 10.4.0.254 10.4.0.253

    ifconfig-pool 10.4.0.8 10.4.0.252

    push "route 10.4.0.0 255.255.255.0"


    port 443

    proto tcp-server

    dev tun1


    ca server/ca.crt

    cert server/backup-vpn.crt

    key server/backup-vpn.key

    dh server/dh2048.pem


    #server 10.4.0.0 255.255.255.0


    ifconfig-pool-persist server/ipp.txt


    client-config-dir server/ccd

    route 10.4.0.0 255.255.255.0


    push "dhcp-option DNS 1.1.1.1"

    push "dhcp-option DNS 8.8.8.8"


    client-to-client


    keepalive 10 120


    tls-crypt server/ta.key


    remote-cert-tls client


    cipher AES-256-CBC

    auth SHA512

    tls-version-min 1.2


    max-clients 50



    persist-key

    persist-tun


    status server/openvpn-status.log


    #script-security 2

    #up server/up.sh


    log server/openvpn.log

    verb 4


    explicit-exit-notify 1





    So funktionieren bei mir auch beide VPNs.


    Wie muss ich jetzt da die Routen eintragen?

  • Du hast 2 getrennte VPN Server und verbindest deine Server immer mit beiden?

    Bei einer Site2Site Config hast du halt einen Server und verbindest dann die eine Site (oder halt mehrere) mittels einen als Client konfigurierten ovpn Client. Wenn du den ersten Server nicht von überall her erreichen kannst, dann machst du den 2ten zum Server und der 1. verbindet sich zum 2. Dann kannst du in der Server Config die Route pushen (nicht die 10er, sondern die reguläre Netz IP) und in den Netzwerken muss du dann (also z.B. auf dem ersten Server) dann die Route zu den anderen Netzen (und ins 10er) über den OVPN Client setzen (das machst du per DHCP Option oder halt auf dem Router direkt).

  • Ich will 2 getrennte VPN Server als "Redundanz".


    Also wenn VPN1 ausfällt kann ich auf alle anderen Server immernoch zugreifen via VPN2.


    Sämtliche Server sind mit VPN1 und VPN2 verbunden.

    Der SSH Zugriff ist rein auf die VPN Netze zugelassen. Daher hätte ich da gerne die gewisse Redundanz.


    Und um mit den IPs nicht durcheinander zu kommen würde ich halt trotzdem solange VPN1 online ist, mit den IP Adressen der Server im VPN1 connecten, obwohl ich mit VPN2 verbunden bin, wie ich es teilweise durch Firewall Policy leider nicht anders machen kann.

  • Verbundene Geräte:

    VPN1:

    VPN2(Client)

    Server1(Client)

    Server2(Client)


    VPN2:

    VPN1(Client)

    Server1(Client)

    Server2(Client)

    Je nach Bedarf noch Handy und PC normal an VPN1


    Laptop normalerweise an VPN2(Grund: Firewall)

  • Also alle Server (sind da Netze dahinter) sind mit 1 und 2 verbunden? Wenn da Netze hinter sind, dann brauchst du halt ein Routing Lösung wie von H6G.

    Wenn nur die Server verbunden sind, dann muss du in der Config Datei auf den VPN Servern die Route zu den jeweiligen anderen VPN Server mitgeben (oder halt bei die auf dem Client setzen). Dann muss aber auch der VPN Server eine Route zu dem anderen über einen Server oder anderen Hop haben Irgendwie muss man ja von Server 1 zu 2 kommen.

    Du kannst aber auch zwischen beiden Servern eine neue Verbidung aufbauen (anderer Port etc.)

  • Meinst du die Public IP oder welche meinst du?

    Bei dem Route befehl in der Server.conf:

    Code
    1. Server1:
    2. route 10.4.0.0 255.255.255.0 10.4.0.254
    3. Server2:
    4. route 10.2.0.0 255.255.255.0 10.2.0.6

    Sollte das so stimmen?

  • Ich bin jetzt soweit gekommen, über die VPNs hinweg die IPs pingen zu können.


    Allerdings kann ich beide Server, welche mit beiden VPN verbunden sind nicht erreichen. Hat hier noch jemand eine Idee?


    Firewall ist auf beiden Servern offen.

  • Allerdings kann ich beide Server, welche mit beiden VPN verbunden sind nicht erreichen. Hat hier noch jemand eine Idee?

    Du meinst jetzt die Tunnelendpunkte selber? Oder die Adressen der Server in Deinen beiden /31-Linknetzen, die meiner Meinung nach keinem sauberen CIDR-Schema folgen?

  • Nein meine 2 normalen Linux Server, die beide VPN als Client drin haben. Mittlerweile komme ich nirgends mehr hin über den gegenüberliegenden VPN

    Check einmal die Routingtabelle auf Deinen Clients. Wenn keine Defaultroute über den Tunnel gewünscht ist, solltest Du auch keine dort haben.

    Eine statische Hostroute zur externen IP des/der VPN-Server ist jedenfalls sinnvoll, falls eine Defaultroute über den Server gesetzt würde.

    Ansonsten genügt es, die CIDR-Notation entsprechenden Subnetze als Routen einzutragen. Die Push-Route in Deinem Beispiel stammt übrigens aus demselben Netz wie Pool und Server. Ist das so beabsichtigt?


    Ansonsten:

    https://openvpn.net/community-…e-manual-for-openvpn-2-4/


    -route

    -iroute

    -push

  • Aktive Routen:

    Code
    1. Netzwerkziel Netzwerkmaske Gateway Schnittstelle Metrik
    2. 0.0.0.0 0.0.0.0 10.10.40.254 10.10.40.208 25
    3. 10.2.0.0 255.255.255.0 10.4.0.29 10.4.0.30 281
    4. 10.4.0.0 255.255.255.0 10.4.0.29 10.4.0.30 281



    Das sind die aktuellen Routen. Das dürfte meiner Ansicht nach Stimmen. Der Client(mein Laptop) hat die IP 10.4.0.30 im VPN2. Sollte soweit stimmen.


    Die eine Push "route" brauch ich ja auch für das eigene VPN Netz. Sonst erreich ich keine anderen Clients.