这些 iptables 规则是否等效?

这些 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没有明确的接受规则和路由后接受策略。

答案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/

相关内容