![OpenVPN-Client als Gateway für andere Clients](https://rvso.com/image/623645/OpenVPN-Client%20als%20Gateway%20f%C3%BCr%20andere%20Clients.png)
Ich habe ein OpenVPN-Netzwerk mit einem Server und zwei Clients. Wenn ich meine Standardroute auf C1 so einrichte, dass sie über S geht (wo IP-Weiterleitung und NATing aktiviert sind), funktioniert alles wie erwartet. Das Problem ist, dass, wenn ich die Standardroute von C1 auf C2 richte (das auch richtig konfiguriert ist, um NAT-Verkehr vom VPN zum Internet zu erzeugen), der Verkehr trotzdem von S abgefangen und weitergeleitet wird. Wenn ich auf C2 einen TCPdump mache, gibt es keine Anzeichen dafür, dass dort etwas ankommt. Ist es möglich, den Client als Gateway für andere Clients in OpenVPN einzurichten, oder ist es eine Eigenschaft des Systems, dass Pakete vom Server weitergeleitet werden, wenn die Route auf dem Client auf einen anderen Client gerichtet ist?
Bearbeiten:
Die eckigen Klammern stellen mein virtuelles Netzwerk dar (es existiert nicht physisch). C1/C2/S können sich innerhalb des Netzwerks problemlos gegenseitig anpingen. Ich möchte den Verkehr von C1 über C2 zum Internet leiten. Ich kann von C1 (und wahrscheinlich auch von C2) über S zum Internet leiten, aber das Leiten über C2 funktioniert nicht, da die Pakete stattdessen von S weitergeleitet werden. Dies scheint ein Problem mit dem OpenVPN-Server zu sein, der die Pakete nicht dorthin senden möchte, wo sie hin sollen.
[C1-S(NAT)] -- Das Internet Das Internet -- [(NAT)C2/ ]
Antwort1
Eine vollständige Antwort darauf ist schwierig, ohne die Netzwerktopologie zu kennen, die Sie beschreiben möchten. Ich denke jedoch, dass es im Allgemeinen möglich ist, das zu tun, wonach Sie fragen.
Betrachten Sie das folgende Szenario:
C1 -- R1 --(NAT)-- Internet --(NAT)-- R2 -- C2
Wenn hier ein (richtig konfigurierter) OpenVPN-Tunnel zwischen R1 und R2 erstellt wird, kann C1 mit C2 kommunizieren und umgekehrt.
Dieses Szenario ist schwieriger richtig umzusetzen:
C2 -- R1 --(NAT)-- Internet --(NAT)-- R2 -- C3 C1 / \ C4
Wobei C2 und C3 die OpenVPN-Endpunkte sind und C1 das VPN verwenden sollte, um zu C4 zu gelangen. Die erste Hürde besteht darin, den OpenVPN-Tunnel zwischen C2 und C3 aufzubauen, wahrscheinlich durch Portweiterleitung von R1 und R2 von UDP 1190 zu C2 bzw. C3.
Als nächstes muss C1 C2 verwenden, um Pakete an C4 zu senden. Dazu muss die Routing-Tabelle auf C1 und C4 konfiguriert werden. C1 legt die Route zum Netzwerk von C4 über C2 fest und C4 legt die Route zum Netzwerk von C1 über C3 fest. Beide Routen sollten Vorrang vor der Standardroute haben. Also vielleicht auf C1: {route add 192.168.3.0 gw 192.168.2.2} und auf C4: {route add 192.168.1.0 gw 192.168.3.2}. Dies setzt voraus, dass die Adressen von C2 und C3 192.168.2.2 bzw. 192.168.3.2 sind und dass sich C1 und C4 im selben Netzwerk wie C2 bzw. C3 befinden.
Hoffentlich reicht dies aus, um Ihre Frage zu beantworten und zu zeigen, dass es viel einfacher ist, das VPN auf dem Standard-Gateway zu konfigurieren, als das VPN auf einem Client zu konfigurieren. Es gibt jedoch für beides Anwendungsfälle.
Bearbeiten: Bei dieser Topologie und Problembeschreibung glaube ich, dass es Routing-Probleme bei C1 und C2 gibt ... Die Standardroute von C1 sollte auf die VPN-Adresse von C2 als Router verweisen. Dadurch wird C1 gezwungen, das VPN zu verwenden, um Pakete an C2 zu senden, und dann entscheidet C2, was mit ihnen zu tun ist.
Falls C2, wie Sie gezeigt haben, eine eigene Verbindung zum Internet verwendet, sollte die Standardroute von C2 zu seiner eigenen Internetverbindung führen.
Wenn C2 stattdessen keinen eigenen Pfad zum Internet hat und dieser stattdessen über S verläuft, sollte S der Standardrouter von C2 sein.
Antwort2
Ich hatte dieses Problem schon einmal. Ich hatte einen VPN-Client am Laufen, der mich daran hinderte, ein anderes Gerät in meinem Heim-LAN zu erreichen. Ich musste eine statische Route zur zweiten Maschine konfigurieren, da der VPN-Client automatisch eine Standardroute hinzufügt und den gesamten Datenverkehr an den Server weiterleitet.
Wenn es für Sie in Ordnung ist, den Datenverkehr von C1 zu C2 über den Server laufen zu lassen, müssen Sie die Client-zu-Client-Direktive in server.conf aktivieren, damit sich die Clients über das VPN gegenseitig erreichen können. Standardmäßig können Clients nur den Server erreichen.
Überprüfenhttp://openvpn.net/index.php/open-source/documentation/howto.htmlunter „Einbinden mehrerer Rechner auf der Clientseite bei Verwendung eines gerouteten VPN (dev tun)“.