NAT OUTPUT 链和 NAT POSTROUTING 链有什么区别?

NAT OUTPUT 链和 NAT POSTROUTING 链有什么区别?

如果Nating是在NAT表的OUTPUT链中完成的,那么POSTR中SNAT的作用是什么

如果Nating是在NAT表的OUTPUT链中完成的,那么SNAT在POSTROUTING中的作用是什么

答案1

看看这个图表。绿色框代表iptables,蓝色框代表ebtables(忽略那些)。

因此您会看到,OUTPUT仅本地应用程序生成的数据包会遍历该链,而POSTROUTING所有数据包都会遍历该链,包括从其他地方路由的数据包。

网络地址转换 (NAT) 有两种子情况:SNAT 转换来源数据包的地址,同时DNAT 转换目的地数据包的地址。

您可以在哪些链中执行以下任一操作:nat/PREROUTING并且nat/OUTPUT可以执行 DNAT,同时nat/POSTROUTING并且可能nat/INPUT(不确定这是否仍然有效)可以执行 SNAT。

答案2

@ x-yuri 我也对输出 NAT 感到困惑,但最后我得到了答案。预路由和后路由 NAT 均适用于外部 NAT,当某些数据包传入或传出您的接口并且您想要对地址进行 NAT 时。但 OUTPUT NAT 适用于您的本地网络 NAT,我的意思是当数据包从您的应用程序开始时。我认为这是一个很好的例子,可以更好地理解这一点。当您想要更改作为透明代理的流量的端口和 IP 地址时,例如我们在 Nginx 中所做的事情。我们可以使用这样的东西:

iptables -t nat -A 输出 -p tcp --dport 80 -j DNAT --to-destination 192.168.100.10:8080

您将端口 80 上的流量发送到网络 192.168.100.10 上正在侦听其端口 8080 的另一台主机

我想这就是我希望这是真的以及你所要求的

相关内容