Hallo,
folgende Situation:
Clients in einem OpenVPN sollen einen iptables NAT einen Dienst erreichen der selbst nicht Teil des VPNs ist.
Der Plan ist dass der Client (z.B.: 172.16.0.6) ein Paket an 172.16.0.22 schickt. Dieses Paket landet beim OpenVPN-Server und wird dort über PREROUTING abgefangen und umpacketiert. Als Absender wird nun 192.168.1.244 (LAN-IP des OpenVPN-Servers) in das Paket geschrieben und der Empfänger als 192.168.1.22 (Service im LAN des OpenVPN-Servers) umgeschrieben. Wenn der Service nun antwortet schickt dieser das Paket an 192.168.1.244 zurück, dort werden Absender und Adressat wider umgeschrieben und an den Client zurück sendet.
Das Destination NAT sollte meines Verständnisses nach folgender Befehl funktionieren.
iptables -t nat -A PREROUTING -d 172.16.0.22 -o br0 -j DNAT --to-destination 192.168.1.22
Beim Source-NAT bin ich mir noch nicht ganz sicher. Diese Regel scheint mir als nicht ausreichend für meine Usecase:
iptables -t nat -A POSTROUTING -o br0 -j SNAT --to-source 192.168.1.244
Schließlich sollen nicht alle Pakete die an …244 gesendet werden wieder in das VPN geroutet werden, sondern nur die Antworten zu Anfragen die aus dem VPN-Netz kamen. Müssen die Pakete dafür nicht irgendwie markiert werden?
Die Lösung muss nicht zwingend mit iptables direkt umgesetzt werden, wenn es etwas einfacheres gibt (shorewall?), dann würde ich das auch nutzen.
Viele Grüße und Dank
Das Wort