这些iptables规则是否相同?

有人可以告诉这些iptables是否相同?

版本1

$IPT -F $IPT -X $IPT -t nat -A POSTROUTING -s 192.168.0.1/24 -o eth0 -j MASQUERADE $IPT -A FORWARD -j ACCEPT -i eth1 -s 192.168.0.1/24 $IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT 

版本2

 $IPT -F $IPT -X $IPT -P INPUT ACCEPT $IPT -P FORWARD ACCEPT $IPT -P OUTPUT ACCEPT $IPT -t nat -F $IPT -t nat -X $IPT -t nat -P PREROUTING ACCEPT $IPT -t nat -P INPUT ACCEPT $IPT -t nat -P OUTPUT ACCEPT $IPT -t nat -P POSTROUTING ACCEPT $IPT -t nat -A POSTROUTING -s 192.168.245.0/24 -j MASQUERADE 

我觉得令人困惑的是, 版本1没有明确的接受规则和推测接受策略。

规则集是相同的,但是:

  • 第一个版本在接口eth1上接受192.168.0.1/24的数据包,但是没有最后一个数据包丢弃。

  • 启动时的初始规则集是“全部接受”,所以你不需要把它设置成这个状态。

所以第一个版本是这样的:

  $IPT -t nat -A POSTROUTING -s 192.168.0.1/24 -o eth0 -j MASQUERADE $IPT -A FORWARD -j ACCEPT -i eth1 -s 192.168.0.1/24 $IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT 

第二个:

  $IPT -F $IPT -X $IPT -t nat -A POSTROUTING -s 192.168.245.0/24 -j MASQUERADE 

区别在于两个ACCEPT规则,因为没有其他数据包的DROP规则,所以这两个规则是无效的。

build议过滤“filter”表外的数据包。 所以不要将数据包丢弃在“filter”表外。 一个例子:

  $IPT -t nat -A PRETROUTING -s 192.168.245.0/24 -j DROP 

iptables / netfilter的数据包遍历图片: http ://www.frozentux.net/iptables-tutorial/images/tables_traverse.jpg

关于iptables / netfilter的一个非常好的和完整的教程在这里: http : //www.frozentux.net/documents/iptables-tutorial/