有人能说出这些 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没有明确的接受规则和路由后接受策略。
答案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 规则。
这是不是建议过滤“过滤”表之外的数据包。因此不要丢弃“过滤”表之外的数据包。示例:
$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/