
Ich betreibe auf meinem VPS einen OpenVPN-Server mit einer öffentlichen IP. Es ist ein Backend-Server mit dem VPN verbunden. Dies sind die IPs auf dem VPN: VPS: 10.8.0.1 Backend-Server: 10.8.0.2. eth0 ist die öffentliche Schnittstelle, tun0 ist die VPN-Schnittstelle
Nun möchte ich beispielsweise Port 22 auf dem Backend-Server auf Port 2200 auf dem VPS weiterleiten. Folgendes habe ich auf dem VPS gemacht (basierend auf mehreren Tutorials und bereits gestellten Fragen):
- Port 2200 geöffnet
- IPv4-Weiterleitung aktiviert
fügen Sie dies in /etc/ufw/before.rules ein (ja, ich verwende ufw und es funktioniert ordnungsgemäß):
*nat
:PREROUTING AKZEPTIEREN [0:0]
:POSTROUTING AKZEPTIEREN [0:0]
-A PREROUTING -i eth0 -p tcp --dport 2200 -j DNAT --to-destination 10.8.0.2:22
-A POSTROUTING -d 10.8.0.2 -p tcp --dport 22 -j SNAT --to-source VPS-öffentliche-IP:2200
-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
ufw neu geladen oder sogar alles neugestartet...
Habe andere Lösungen ausprobiert und einige Zeilen auskommentiert (wie die erste POSTROUTING-Regel oben). Nichts hat - offensichtlich - geholfen.
Die Ausgabe nmap VPS-public-IP -p 2200
besagt, dass der Port „gefiltert“ ist, und wenn ich versuche, per SSH auf Port 2200 zuzugreifen, bleibt er einfach hängen und tut nichts, ich erhalte nicht einmal eine Fehlermeldung – das passiert auch, wenn ich versuche, per SSH vom VPS über das VPN auf den Backend-Server zuzugreifen (was normalerweise funktioniert). Was übersehe ich?
Antwort1
Für Leute, die vielleicht noch nach einer Lösung suchen.
Abhängig von Ihrer FORWARD-Richtlinie (vorausgesetzt es handelt sich um DROP)
iptables -t nat -A PREROUTING -p tcp -d xx.xx.xxx.xxx --dport 80
-j DNAT --to-destination yyy.yyy.yy.yy:80
iptables -A FORWARD -p tcp -d yyy.yyy.yy.yy --dport 80 -j ACCEPT
Result: x:80 --> X --y:80--> Y
iptables -t nat -A POSTROUTING -p tcp -d yyy.yyy.yy.yy --dport 80
-j SNAT --to-source xx.xx.xxx.xxx
Result: x:80 --> X <--y:80--> Y
iptables -A FORWARD -p tcp -s yyy.yyy.yy.yy --sport 80 -j ACCEPT
Result: x:80 <--> X <--y:80--> Y
Möglicherweise fügen Sie für lokal initiierte Verbindungen auch diese Regel hinzu: x --> x:80
iptables -t nat -A OUTPUT -p tcp --dport 80 -d xx.xx.xxx.xxx
-j DNAT --to-destination yyy.yyy.yy.yy:80
Result:
x:80 ->- X <--y:80--> Y
|_____V