Ich möchte mehrere LANs verbinden, die sich in entfernten Gebäuden befinden.
Auf der "zentralen" Site befindet sich ein Linux-Computer, auf dem OpenVPN ausgeführt wird. Auf jedem Remote-Standort wird auch OpenVPN ausgeführt.
- Der zentrale Standort verfügt über ein LAN mit der Nummer 192.168.0.0/24
- Mehrere entfernte Standorte sind ebenfalls mit 192.168.0.0/24 nummeriert
- Ich kann / will / will nicht / was auch immer die LAN-Nummerierung ändern
- Ich habe keine Kontrolle über die meisten Remote-OpenVPNs
Ich muss dann:
1. virtuelle LANs definieren
2. ein 1: 1-NAT für jeden Standort konfigurieren
3. das 1: 1-NAT auf dem zentralen Router konfigurieren
.
Jeder Standort verfügt also über ein 10.10.x.0 / 24-LAN.
Wenn ein Computer beispielsweise 192.168.0.44 auf Site 12 erreichen möchte, muss er lediglich ein Paquet an 10.10.12.44 senden
Das Betreiben eines VPN ist für mich kein Problem. Ich verbinde derzeit mehr als 60 Websites. Aber ich finde keinen einfachen Weg, dies 1: 1 NAT zu tun.
Hier ist ein Beispiel für ein Paket, das vom zentralen Standort an einen Remotestandort gesendet wird, und dessen Antwortpaket:
Ich habe einige Tests mit iptables NETMAP durchgeführt, aber ich kann es nicht zum Laufen bringen, da ich nach der Routing-Entscheidung keine Möglichkeit finde, Quelle + Ziel zu ändern.
Ich ziehe es vor, die neue --client-nat
OpenVPN-Funktion zu vermeiden .
Vielleicht muss ich das Routing erzwingen ip route
? Oder zweimal in den Netzwerkstapel mit schleifen veth
?
Hinweis: Ich möchte keine Maskerade verwenden. Nur 1/1 NAT.
BEARBEITEN:
Mit einem regulären openVPN-Setup ist dies nicht möglich. Da ein Paket von einem Remote-Standort nicht von einem Paket von einem anderen Standort zu unterscheiden ist: Beide haben ähnliche Quell- und Zieladressen und beide stammen von derselben Tun- (oder Tap-) Schnittstelle. Es ist also nicht möglich, NAT als Quelle zu verwenden.
Lösung 1: Führen Sie das NAT auf den Remote-Standorten aus. In meinem Fall nicht möglich. Ich muss es nur auf der zentralen Seite tun.
Lösung 2: Richten Sie für jeden Remote-Standort ein VPN ein. Also werde ich für jeden eine Tonne haben. Ich denke das kann ok sein. Nicht sehr speichereffizient, aber ok.
Lösung 3: Richten Sie für jeden Standort einen (unverschlüsselten) Tunnel im VPN ein. Dies gibt jeweils eine Schnittstelle. Einfache Tunnel sind nicht plattformübergreifend (zu meinem Vorteil). Zum Beispiel sind GRE oder ipip oder sit für Linux in Ordnung, aber auf einigen entfernten Sites wird nur ein Windows-Computer ausgeführt, sodass openVPN darauf installiert ist. Es ist also unmöglich, einen einfachen Tunnel einzurichten. Eine andere Möglichkeit ist die Verwendung eines komplizierteren Tunnels (welcher?), Aber der Overhead auf dem System und auf dem Systemadministrator kann größer sein als bei mehreren VPNs
Lösung 4: Kompilieren Sie das neueste openVPN, da es eine 1: 1-NAT-Funktion enthält. Ich teste das diese Woche.