什么是默认的来源,当 – 源未指定?

如果我的服务器上有两个网卡,那么有什么区别

iptables -t nat -A POSTROUTING -j MASQUERADE 

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

当没有指定--source ,iptables会使用什么默认值?

它是任何地址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 

系统将按照正常规则将源地址定义为与目的地“最接近”的机器本地地址。 在实践中,这通常意味着源将是到目的地下一跳的路由的正常源地址。 这通常是分配给后NAT分组发送出去的接口的IP地址。

使用MASQUERADE的目的是为了将源地址修改为接口的源地址; 如果出接口有静态IP,则使用SNAT,不要使用MASQUERADE; 它会导致所有连接在接口closures时被遗忘,主要用于任何IP地址不断变化的接口。

如果您希望根据数据包的实际来源进行过滤 ,则应在-j MASQUERADE之前使用-s xxxx/xx