POSTROUTING 链上的 DNAT

POSTROUTING 链上的 DNAT

如果我尝试在 iptables 中的 NAT 表的 POSTROUTING 链中执行 DNAT,会发生什么?

假设我将 POSTROUTING 链中数据包的目标 IP 更改为应通过不同接口路由的地址。数据包会发生什么情况?

  1. 即使在做出所有路由决策之后,主机是否能够将数据包路由到正确的接口。

  2. 或者数据包仍会通过之前路由决策中决定的接口发送。

答案1

两个选项都是错误的。正确答案是:

  1. 将会发生错误。

因为DNAT只能在PREROUTING或OUTPUT链中使用。

答案2

要查看通过 iptables 的数据包流,请检查 NetFilter iptables 数据包流图。

https://upload.wikimedia.org/wikipedia/commons/3/37/Netfilter-packet-flow.svg

简而言之,路由决策发生在 PREROUTING 之后,并且路由后。

此外,我认为你无论如何都无法在 POSTROUTING 上执行 DNAT。iptables 将抛出语法错误。

相关内容