iptables NAT 配置

iptables NAT 配置

您好,我的 iptables 出现了一些问题。我想做的如下:

A(eth0)--------(eth0)B(eth2)---------------(eth2)C

括号是接口名称,A、B 和 C 是主机。现在我想转发主机 C 的端口号 80,以便可以通过主机 A 访问它。
主机 A 是 192.168.1.254
主机 C 是 192.168.3.2

我有意接受所有 FILTER 链选项作为默认策略,因为我想先确保 NAT 正常工作。我启用了 ip_forward。

以下是我所做的:

sudo iptables -A PREROUTING -t nat -p tcp - d 192.168.1.254 -j DNAT --to 192.168.3.2

但是它不起作用。我这里遗漏了什么?

答案1

我认为在这种情况下你根本不需要 NAT。你没有在 NAT 最常见的用例中使用 NAT,即从单个公共 IP 证明对大型网络的网络访问。你应该简单地使用 IP 转发来路由数据包。

如果 a) IPv4 转发已打开且 b) 您的 IPTables FORWARD 链设置为接受转发的数据包,则从 A 访问 C 就不需要 NAT。

但如果你坚持的话,我建议使用 SNAT:

iptables -A POSTROUTING -o eth2 -j SNAT --to-source (IP of Host B eth2)

请未来的读者注意:eth2 参考指的是启动连接时(中心)NAT 计算机上的传出接口,并指的是设置源 IP 的同一接口的名称。

答案2

嗯,这就是我的做法:

iptables -A PREROUTING -t nat –p tcp -d 192.168.1.1 –dport 80 -j DNAT –to-destination 192.168.3.2:80
iptables -A POSTROUTING -t nat –p tcp –d 192.168.3.2 –-dport 80 -j SNAT --to-source 192.168.3.1

相关内容