使用 iptables 进行 ip 转发

使用 iptables 进行 ip 转发

我的 Linux 机器上有两个接口,一个配置为公共 IP 110.111.250.241 - eth0,另一个配置为 LAN 。我有一台带有 apache Web 服务器的10.42.43.1客户端机器。10.42.43.174

我想10.42.43.174从互联网(家里或其他地方)访问 的 80 端口。所以我需要通过 进行端口转发iptables。在sysctl ip_forwardis 1 中,我尝试设置一些预路由 iptable 规则,但我仍然无法访问我的公共 IP 的 10.42.43.174 的 80 端口。

答案1

您可以尝试这个规则吗?它应该可以完成这项工作?如果不行,正如 MadHatter 所说,您应该提供iptables -L -n -viptables -t nat -L -n -v输出

iptables -t nat -A PREROUTING -j DNAT -i eth0 -p tcp --dport 80 --to-destination 10.42.43.1:80

答案2

您的规则是正确的,但缺少用于将源 IP 重写为路由机器 IP 的 SNAT 或 MASQUERADE 规则。完整的规则集如下:

iptables -t nat -A PREROUTING -i eth0 -p tcp -d 110.111.250.241 --dport 80 -j DNAT --to 10.42.43.174
iptables -A FORWARD -p tcp -i eth0 -d 10.42.43.174 --dport 80 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

相关内容