经历了几个 Superuser 和 ServerFault 问题,我无法让它工作iptables
。我正尝试12345
通过在我的 Linux VPS(当前在 Ubuntu 18.04 上)上运行的 OpenVPN 将特定端口转发到连接的客户端(也是 Ubuntu 18.04)。对于以下所有示例,VPS 的外部 IP 是, OpenVPN 网络上的 VPS 和客户端123.45.67.89
的内部 IP 是。(请注意,这是一个 NAT VPS,我只有几个端口可以使用,以防万一,但我可以充分利用分配给我的端口。)10.8.0.1
10.8.0.2
我在 VPS 上尝试了以下操作,
iptables -I FORWARD 1 -d 10.8.0.2 -p tcp --dport 12345 -j ACCEPT
iptables -t nat -A POSTROUTING -m conntrack --ctstate DNAT -d 10.8.0.2 -p tcp --dport 12345 -j SNAT --to-source 10.8.0.1
iptables -I FORWARD 1 -d 10.8.0.2 -p udp --dport 12345 -j ACCEPT
iptables -t nat -A POSTROUTING -m conntrack --ctstate DNAT -d 10.8.0.2 -p udp --dport 12345 -j SNAT --to-source 10.8.0.1
也,
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 12345 -j DNAT --to-destination 10.8.0.2
iptables -t nat -A PREROUTING -i eth0 -p udp --dport 12345 -j DNAT --to-destination 10.8.0.2
但在所有这些之后,在线端口检查器仍然报告端口12345
已关闭。
我也尝试过从 VPStelnet 10.8.0.2 12345
输出以下内容,
Trying 10.8.0.2...
Connected to 10.8.0.2.
Escape character is '^]'.
Connection closed by foreign host.
telnet 10.8.0.2 8945
与(或任何其他我没有运行服务的端口)输出相比,
Trying 10.8.0.2...
telnet: Unable to connect to remote host: Connection refused
任何帮助都非常感谢。我基本上没有经验,iptables
所以我尝试按照各种指南来让它工作,但没有一个能打开端口。
谢谢
答案1
通过在我的 VPS 上重新安装 Ubuntu 解决了这个问题(许多iptables
可能配置错误的规则可能会破坏原本有效的新规则)。重新安装后,以下iptables
规则有效,
iptables -t nat -A PREROUTING -p tcp --dport 12345 -j DNAT --to-destination 10.8.0.2:12345