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)
似乎当一个数据包命中这个链时,内部主机需要初始化与互联网的一些连接,对吗?传入的流量将通过相同的路径而不会碰到链条?我是对的吗?
POSTROUTING 链会检查所有离开系统的数据包,甚至是本地生成的数据包(它们省略 PREROUTING 并使用 OUTPUT 代替)。
该规则仅限于通过 传出的流量eth0
。“传入”是指正在路由的每个流量(如果您将其与 POSTROUTING 相关)。您可能指的是来自 Internet 的流量 ( eth0
)。通常,进入的流量eth0
不会通过 离开系统eth0
。
POSTROUTING 仅影响传出流量(并且仅影响连接的第一个数据包)。如果回复到达,eth0
则它们被识别为 SNAT 连接的一部分,并且它们的目标地址(和端口)会自动转换为其原始值(被目标覆盖的值MASQUERADE
)。