Iptables MASQUERADE:这两个命令之间的优点/缺点是什么?

Iptables MASQUERADE:这两个命令之间的优点/缺点是什么?

以下两个命令之间的优点/缺点是什么:

iptables -t nat -A POSTROUTING -o eth0 -s 10.0.0.0/16 -j MASQUERADE

iptables -t nat -A POSTROUTING -j MASQUERADE

出现此问题的一些背景信息:

我曾提出过一个问题AWS VPC + IPtables + NAT:端口转发不起作用我让它工作只有通过做出这一改变

因此提出这个问题。

更新:

在看到反对票后(反对票数量巨大,以至于没有时间评论他们反对的原因),我对问题进行了一点编辑。我发现人们只理解英文单词的字面意思,而没有费心去理解它的本质。因此我不得不编辑问题。

此外,如果你不解释你投反对票的原因,那也是一种可耻的行为。这样原贴作者就永远没有机会改进他的帖子,或者知道帖子中有什么问题。

答案1

此命令

iptables -t nat -A POSTROUTING -j MASQUERADE

过于宽泛,因为它将对通过此框路由的每个连接执行 NAT,而不管源/目标是什么。您几乎永远不应该使用此规则,除非有其他规则将其限制到特定方向。这种过于宽泛的规则几乎从来都不是正确的答案。

至于为什么它能解决您之前问题的症状。 通过使用 NAT,你可以隐藏路由的错误配置因为这个过于宽泛的规则的设备两侧的机器基本上都会认为它们正在与防火墙通信。

由于您的问题似乎与传入连接有关,因此您还应该了解,使用这样的规则将隐藏传入数据包的源地址。这意味着您保留的任何日志都将毫无价值,因为它们所做的只是将防火墙的 IP 记录为源地址。

答案2

iptables -t nat -A POSTROUTING -o eth0 -s 10.0.0.0/16 -j MASQUERADE

仅匹配通过 eth0 发出且源地址为 10.0.0.0/16 的数据包。使用接口 eth0 的默认 IP 对其进行 NAT。

iptables -t nat -A POSTROUTING -j MASQUERADE

匹配通过任何接口和任何地址传出的数据包,通过默认传出接口 IP 对其进行 NAT。

相关内容