当未指定 --source 时,默认源是什么?

当未指定 --source 时,默认源是什么?

如果我的服务器上有两个 NIC,那么

iptables -t nat -A POSTROUTING -j MASQUERADE

iptables -t nat -A POSTROUTING -j MASQUERADE --source 192.168.0.0/24

--source未指定时,iptables 默认使用什么?

答案1

它是任意地址 0.0.0.0。如果你运行iptables -t nat -L -v -n,你会看到类似这样的内容:

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
   15   923 MASQUERADE  all  --  *      *       0.0.0.0/0            0.0.0.0/0 

答案2

系统将遵循常规规则将源地址定义为“最接近”目的地的机器本地地址。实际上,这通常意味着源将是到目的地下一跳的路由的正常源地址。这通常是分配给 NAT 后数据包发出的接口的 IP 地址。

答案3

使用 MASQUERADE 的目的是将源地址修改为其传出接口的地址;如果传出接口具有静态 IP,请使用 SNAT,不要使用 MASQUERADE;它会导致每当接口关闭时所有连接都被忘记,并且本质上适用于具有变化 IP 的任何接口。

如果你想筛选根据数据包的实际来源,你应该-s x.x.x.x/xx-j MASQUERADE

相关内容