使用 iptables 将端口从公网 IP 路由到 VPN IP

使用 iptables 将端口从公网 IP 路由到 VPN IP

我正在尝试将流量从公共 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 时不起作用。有什么想法吗?

谢谢。

相关内容