OpenVPN-Routing vom Server zum Client

OpenVPN-Routing vom Server zum Client

Ich habe zwei weit voneinander entfernte Orte mit jeweils einer öffentlichen IP-Adresse und möchte das LAN-Netzwerk dieser Orte so einrichten, als wären sie ein einziges. Das heißt, die Maschinen an Ort A können mit den Maschinen an Ort B kommunizieren und die an Ort B mit denen an Ort A.

An Ort A (10.0.2.1) habe ich einen ASUS AC 1200g+ und einen Raspberry Pi (10.0.2.60) mit OpenVPN-Server. Neue Clients bleiben in der Schnittstelle tun0 (10.8.0.1). In diesem Moment kann der Client (Ort B) mit dem LAN von Ort A kommunizieren, nur Verkehr mit Ziel 10.0.1.0/24 wird auf die Serverseite umgeleitet.

Jetzt möchte ich, dass Maschinen an Ort A (Server) mit dem LAN von Ort B kommunizieren können. Ich platziere eine Route in meinem Router, sodass alle Zielanfragen mit 10.0.1.0/24 an den Raspberry Pi VPN-Server umgeleitet werden, aber der Server weiß nicht, was er mit diesem Datenverkehr tun soll.

An Stelle B (10.0.1.1) habe ich einen ASUS AC86U mit ASUS Merlin-Firmware und aktiviere den OpenVPN-Client mit der Aktivierungsoption „Inbound Firewall“.

Netzwerkschema

Antwort1

Ich habe ein ähnliches Setup, bei dem der Raspberry Pi der Client ist, aber das sollte nicht so wichtig sein. Haftungsausschluss: Es ist nicht ganz einfach einzurichten.

Ich verwende diese /etc/iptables/iptables.rulesDatei, um den Datenverkehr von OpenVPN-Verbindungen (normalerweise tun0, aber tun+alle) per NAT in die lokalen Netzwerke umzuleiten:

*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -j MASQUERADE
COMMIT

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A FORWARD -i eth+ -o tun+ -j ACCEPT
-A FORWARD -i tun+ -o eth+ -j ACCEPT
COMMIT

Die OpenVPN-Konfiguration erfordert einen sog.Client-zu-Client-KonfigurationDiese beiden Zeilen in der OpenVPN-Konfiguration des Servers aktivieren die Funktion:

# use ccd-folder (per host configs)
client-to-client
# routing to office lan:
client-config-dir ccd

Diese client-config-dirmüssen manuell unter dem -Pfad erstellt werden, /etc/openvpn/...in dem sich Ihre Konfiguration befindet. In diesem Ordner können Sie dann Textdateien für jeden Host erstellen. Die Dateibenennung ist wichtig: Überprüfen Sie im Systemprotokoll, wie OpenVPN Ihren Client aufruft (z. B. mit journalctl -xef --unit openvpn-server@somehostoder in der openvpn-status.txtDatei). Der Inhalt der Datei ist einfach:

ifconfig-push 10.10.99.18 255.255.255.255
iroute 192.168.0.0 255.255.0.0

würde es so konfigurieren, dass es bei jeder Verbindung dieselbe IP erhält ( 10.10.99.18) und den VPN-Server so konfigurieren, dass er den Verkehr intern an 192.168.0.0/16den Client mit dem Namen dieser Datei und der IP-Adresse weiterleitet. Das macht verständlich, warum wir noch keine gültige Netzwerkverbindung haben: Das liegt daran, dass das Hostsystem des VPN-Servers nicht weiß, dass der VPN-Tunnel zum Weiterleiten des Verkehrs für dieses Netzwerk verwendet werden kann ( netstat -rn4). Also müssen wir den VPN-Server erneut konfigurieren und anfügen:

route       192.168.0.0 255.255.0.0
push "route 192.168.0.0 255.255.0.0"

um dem Server mitzuteilen, wohin er den Verkehr umleiten soll, 192.168.0.0/16und um alle mit dem Server verbundenen Clients ebenfalls über die Route zu informieren – die Route wird an die Clients gesendet.


Für mein Setup habe ich den obigen Link verwendet, aber beim Schreiben dieser Antwort habe ich zwei interessante Links zu diesem Thema gefunden:

viel Glück :)

verwandte Informationen