我正在尝试将流量从公共 IP 上的端口 9999 路由到端口 99 上的私有 IP,中间使用 VPN。假设我有一个公共 IP,XXXX,当我进入端口 9999 时,我想通过 VPN 转发它。
公共 IP 机器也有 OpenVPN 服务器,因此有:XXXX eth0 和 10.0.8.1 tun0 中间机器有 10.8.0.10 tun0 和 192.168.8.4 eth0 目标机器有 192.168.8.2 并监听端口 99
我需要中间机器的原因是目标机器是 CAM。由于我的互联网连接是在 CGNAT 下,所以我需要通过 VPN 转发 CAM 的所有流量
在公共机器上我使用了:
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -p tcp --dport 9999 -j DNAT --to-destination 10.8.0.10:9999
iptables -t nat -A POSTROUTING -p tcp -d 10.8.0.10 --dport 9999 -j SNAT --to-source X.X.X.X
在中间机器(树莓派)中我使用了:
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -p tcp --dport 9999 -j DNAT --to-destination 192.168.8.2:99
iptables -t nat -A POSTROUTING -p tcp -d 192.168.8.2 --dport 99 -j SNAT --to-source 10.0.8.10
如果我从 10.0.8.1 到 10.0.8.10 进行 ping 操作,则连接存在,并且另一端也存在。
但是流量没有路由,当我在浏览器中输入 XXXX:9999 时不起作用。有什么想法吗?
谢谢。