我正在尝试使用端口 5000 向网络外部的公共设备 (10.1.1.12) 提供访问权限。
我有一台 PC 充当网关和网络内设备之间的防火墙,因此我需要更改该 PC 的 iptables。充当防火墙的 PC 有两个接口:eth0 (10.1.1.1) 和 eth1 (192.168.1.5)。
来自外部的传入流量将来自 eth1(192.168.1.5),我只需要将其转发到 eth0(10.1.1.1),因为目前,我已经设置了从 10.1.1.1 到 10.1.1.12(最终设备)的转发,并且它运行良好。
在网上搜索后,我尝试设置以下两个 iptables 规则,但没有成功:
iptables -A FORWARD -p tcp --destination-port 5000 --in-interface eth1 -j ACCEPT
iptables -t nat -A POSTROUTING -p tcp --destination-port 5000 --out-interface eth0 -j MASQUERADE
然后,我尝试设置下一个 iptables 规则,但也失败了:
iptables -t nat -A PREROUTING -p tcp --destination-port 5000 --in-interface eth1 -j MASQUERADE
总之,如果我从网络内部在浏览器中输入 10.1.1.1:5000,我可以访问 10.1.1.12,因此转发工作正常。但如果我从网络外部在浏览器中输入 my.public.ip:5000,则会收到 ERR_ADDRESS_UNREACHABLE,因此 eth1 和 eth0 之间的转发工作不正常。
如果有人能提供帮助,我将非常感激。谢谢。
答案1
您是否知道 192.168.0.0/16 和 10.0.0.0/8 都是私有段,因此无法从 Internet 访问?如果您的“路由器”的 IP 为 192.168.1.5,则它已位于内部网络上。外部 IP 将是其他 IP,并且边界路由器必须能够将所有来自 Internet 外部的流量路由到您的 192.168.1.5 内部 IP,才能重新路由端口。如果它对传入流量进行防火墙保护,那么您将无法从 Internet 获取端口 5000 上的任何数据包。