Zwei parallele OpenVPN-Tunnel Site-to-Site: Kein Zugriff auf alle Schnittstellen

458
arcus_mannen

Die Einrichtung

Ich habe folgende Topologie:

 Router 172.25.214.1 | | | SiteB 172.25.214.0/24 | | | LAN: 172.25.214.3 OpenVPN server+client B TUN0: 172.25.215.1 TUN1: 10.1.2.2 | | | | | | VpnSiteB VpnSiteA 172.25.215.0/24 10.1.2.0/24 | | | | | | TUN1: 172.25.215.2 TUN0: 10.1.2.1  OpenVPN server+client A LAN: 10.1.1.3 | | | SiteA 10.1.1.0/24 | | | Router 10.1.1.1 

An jedem Standort ist der OpenVPN Server + Client ein Raspberry Pi, auf dem eine Serverinstanz von OpenVPN und eine Clientinstanz von OpenVPN ausgeführt wird.

Die Kernel-Routing-Tabelle auf OpenVPN-Host SiteA:

Destination Gateway Genmask Flags Metric Ref Use Iface default 10.1.1.1 0.0.0.0 UG 0 0 0 eth0 10.1.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 10.1.2.0 0.0.0.0 255.255.255.0 U 0 0 0 tun0 172.25.214.0 172.25.215.1 255.255.255.0 UG 20 0 0 tun1 172.25.214.0 10.1.2.2 255.255.255.0 UG 30 0 0 tun0 172.25.215.0 0.0.0.0 255.255.255.0 U 0 0 0 tun1 

und das des OpenVPN-Hosts auf SiteB:

Destination Gateway Genmask Flags Metric Ref Use Iface default 172.25.214.1 0.0.0.0 UG 0 0 0 eth0 10.1.1.0 10.1.2.1 255.255.255.0 UG 20 0 0 tun1 10.1.1.0 172.25.215.2 255.255.255.0 UG 30 0 0 tun0 10.1.2.0 0.0.0.0 255.255.255.0 U 0 0 0 tun1 172.25.214.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 172.25.215.0 0.0.0.0 255.255.255.0 U 0 0 0 tun0 

Wie Sie sehen, sind SiteA und SiteB die einzigen Netzwerke mit mehreren Routen. Die OpenVPN-Hosts ziehen es vor, über ihre Client- Schnittstelle / ihr OpenVPN-Netzwerk zum anderen Standort zu routen .

Das Problem

Die meisten Routen funktionieren gut. Jeder Host auf SiteA kann bidirektional mit kommunizieren

  • Jede Hostschnittstelle auf SiteB
  • Eine beliebige Hostschnittstelle auf VpnSiteA
  • Eine beliebige Hostschnittstelle auf VpnSiteB außer TUN0 / 172.25.215.1

Dh ein Host auf SiteA kann ping

  • 10.1.1.3
  • 10.1.2.1
  • 172.25.215.2
  • 172.25.214.3
  • 10.1.2.2
  • Aber nicht 172.25.215.1

Das möchte ich lösen.

Fehlerbehebung habe ich gemacht

Test 1

Auf einem Host auf SiteA ping ich 172.25.215.1 und verfolgte, was TCPDUMPauf beiden OpenVPN-Hosts passiert ist .

  • Die Echoanforderung ist beim OpenVPN-Host SiteA über die LAN-Schnittstelle eingetroffen
  • Die Echoanforderung verließ den OpenVPN-Host SiteA auf seiner TUN1-Schnittstelle
  • Die Echoanforderung ist beim OpenVPN-Host SiteB auf der TUN0-Schnittstelle eingetroffen
  • Echo-Antwort verließ den OpenVPN-Host SiteB auf seiner TUN1-Schnittstelle
  • Auf den Schnittstellen von OpenVPN-Host SiteA ist keine Echoantwort eingegangen .

Also hier geht etwas schief.

Test 2

Ich habe den OpenVPN-Server auf dem OpenVPN-Host von SiteA deaktiviert und den OpenVPN-Client auf dem OpenVPN-Host deaktiviert, wenn SiteB. Mit anderen Worten gibt es jetzt nur noch einen Tunnel. Diesmal war es mir gelungen, 172.25.215.1 von einem Host auf SiteA zu pingen.

Also, wenn ich zwei Tunnel habe, geht etwas schief.

Hintergrund

Warum nicht nur einen Tunnel? Hin und wieder gibt mir mein ISP an beiden Standorten keine öffentliche IP-Adresse mehr zu, wodurch ich hinter CGN stehe. Wenn dies auf der Site geschieht, auf der sich der OpenVPN-Server befindet, ist die Verbindung zwischen den Sites unterbrochen. Wenn jedoch auf beiden Standorten jeweils ein OpenVPN-Server ausgeführt wird, ist ein Standort hinter CGN geraten, kein Problem.

Blinddarm

server.conf von OpenVPN-Host-SiteA:

; General ; ---------------------------------------------------------  dev tun0 proto udp port xxxx  client-config-dir /etc/openvpn/ccd  keepalive 10 120 max-clients 20 tls-server  verb 2  ; Network ; ---------------------------------------------------------  topology subnet client-to-client  server 10.1.2.0 255.255.255.0   route 172.25.214.0 255.255.255.0 10.1.2.2 30  

client.conf von OpenVPN-Host-SiteA:

; General ; ---------------------------------------------------------  client dev tun1 proto udp remote xxxx  resolv-retry infinite connect-retry 5 1800 explicit-exit-notify nobind tls-client  verb 2  ; Network ; ---------------------------------------------------------  script-security 2 up /etc/openvpn/uppe.sh down /etc/openvpn/nere.sh up-restart up-delay  iproute /usr/local/sbin/unpriv-ip 

Hinweis: Sicherheitsbezogene Einstellungen werden entfernt.

uppe.sh:

#!/bin/bash  /usr/local/sbin/unpriv-ip route add 172.25.214.0/24 via 172.25.215.1 dev tun1 metric 20 exit 0 

nere.sh

#!/bin/bash  /usr/local/sbin/unpriv-ip route del 172.25.214.0/24 via 172.25.215.1 dev tun1 metric 20 exit 0 

Diese beiden beziehen sich auf die CGN-Minderung.

Die Dateien für den OpenVPN-Host auf SiteB sind identisch, mit der Ausnahme, dass sich die Netzwerkadressen unterscheiden.

1

0 Antworten auf die Frage