如果我尝试在iptables的NAT表的POSTROUTING链中执行DNAT,会发生什么?
假设我将POSTROUTING链中数据包的目标IP地址更改为应通过不同接口路由的地址。 包会发生什么?
即使在做出所有路由决定之后,主机是否能够将分组路由到正确的接口。
或者数据包仍然通过之前在路由决策中决定的接口发送。
两个选项都不正确。 正确的答案是:
因为DNAT只能在PREROUTING或OUTPUT链中使用。
通过iptables查看数据包stream量,查看NetFilter的iptables数据包stream程图。
https://upload.wikimedia.org/wikipedia/commons/3/37/Netfilter-packet-flow.svg
简而言之,路由决策发生在PREROUTING之后和POSTROUTING 之前 。
另外,我想你不能在POSTROUTING上做DNAT。 iptables将会抛出一个语法错误。