iptables MASQUERADE 如何在传入端工作?

san*_*ika 5 linux iptables route nat

我仍在阅读 iptables 手册页和其他文档,并围绕问题及其答案进行挖掘。

这就是出现的问题。当我们设置 NAT 时,我们使用 POSTROUTING 规则,例如:

iptables -A POSTROUTING -t nat -j MASQUERADE -o eth0 
Run Code Online (Sandbox Code Playgroud)

似乎当一个数据包命中这个链时,内部主机需要初始化与互联网的一些连接,对吗?传入的流量将通过相同的路径而不会碰到链条?我是对的吗?

Hau*_*ing 5

POSTROUTING 链会检查所有离开系统的数据包,甚至是本地生成的数据包(它们省略 PREROUTING 并使用 OUTPUT 代替)。

该规则仅限于通过 传出的流量eth0。“传入”是指正在路由的每个流量(如果您将其与 POSTROUTING 相关)。您可能指的是来自 Internet 的流量 ( eth0)。通常,进入的流量eth0不会通过 离开系统eth0

POSTROUTING 仅影响传出流量(并且仅影响连接的第一个数据包)。如果回复到达,eth0则它们被识别为 SNAT 连接的一部分,并且它们的目标地址(和端口)会自动转换为其原始值(被目标覆盖的值MASQUERADE)。