Ich versuche, eine OpenVPN- "Kette" einzurichten, ähnlich wie hier beschrieben . Ich habe zwei separate Netzwerke, A und B. Jedes Netzwerk verfügt über einen OpenVPN-Server, der einen Standardansatz für "Road Warrior" oder "Client / Server" verwendet. Ein Client kann eine Verbindung zu einem der beiden herstellen, um auf die Hosts / Dienste in dem jeweiligen Netzwerk zuzugreifen.
Aber Server A und B sind auch verbunden miteinander . Die Server in jedem Netzwerk haben eine "Site-to-Site" -Verbindung zwischen den beiden.
Was ich erreichen möchte, ist die Möglichkeit, als Client eine Verbindung zu Netzwerk A herzustellen und dann Verbindungen zu Hosts in Netzwerk B herzustellen. Ich verwende Tun / Routing für alle VPN-Verbindungen. Die "Kette" sieht ungefähr so aus:
[Client] ---> [Server A] ---> [Server A] ---> [Server B] ---> [Server B] ---> [Host B]
(tun0) (tun0) (tun1) (tun0) (eth0) (eth0)
Die ganze Idee ist, dass Server A Datenverkehr, der für Netzwerk B bestimmt ist, über das auf tun1 eingerichtete "Site-to-Site" -VPN weiterleiten sollte, wenn ein Client von tun0 versucht, eine Verbindung herzustellen.
Ich habe dies einfach getan, indem ich zwei Verbindungsprofile auf Server A eingerichtet habe. Ein Profil ist eine Standardserverkonfiguration, die auf tun0 ausgeführt wird und ein virtuelles Client-Netzwerk, einen IP-Adresspool, Push-Routen usw. definiert. Das andere ist eine Client- Verbindung zu Server B, die ausgeführt wird auf tun1. Bei aktiviertem ip_forwarding habe ich den Clients einfach eine "Push-Route" hinzugefügt, die eine Route zum Netzwerk B ankündigt.
Auf Server A scheint dies zu funktionieren, wenn ich mir die Ausgabe von tcpdump anschaue. Wenn ich mich als Client verbinde und dann einen Host in Netzwerk B anpinge, kann ich sehen, dass der Datenverkehr von tun0 nach tun1 auf Server A weitergeleitet wird:
tcpdump -nSi tun1 icmp
Das Seltsame ist, dass ich nicht sehe, dass Server B diesen Verkehr durch den Tunnel empfängt. Es ist, als würde Server A es wie vorgesehen über die Site-to-Site-Verbindung senden, aber Server B ignoriert es vollständig. Wenn ich nach dem Datenverkehr auf Server B suche, ist er einfach nicht vorhanden.
Ein Ping von Server A -> Host B funktioniert einwandfrei. Ein Ping von einem mit Server A verbundenen Client zu Host B funktioniert jedoch nicht.
Ich frage mich, ob Server B den Datenverkehr ignoriert, weil die Quell-IP nicht mit dem Client-IP-Pool übereinstimmt, den er an Clients verteilt. Weiß jemand, ob ich etwas auf Server B tun muss, damit der Datenverkehr angezeigt wird?
Dies ist ein kompliziertes Problem, also danke, wenn du so weit bei mir geblieben bist.