我是 IPTABLES 新手,当我执行以下命令时
/sbin/iptables --list -n | grep 16381
我可以看到如下所示的多个条目:
ACCEPT tcp -- a.b.c.d 0.0.0.0/0 tcp dpt:16381
ACCEPT tcp -- a.b.c.d 0.0.0.0/0 tcp dpt:16381
ACCEPT tcp -- a.b.c.e 0.0.0.0/0 tcp dpt:16381
ACCEPT tcp -- a.b.c.b 0.0.0.0/0 tcp dpt:16381
ACCEPT tcp -- a.b.c.f 0.0.0.0/0 tcp dpt:16381
ACCEPT tcp -- a.b.c.f 0.0.0.0/0 tcp dpt:16381
ACCEPT tcp -- a.b.c.c 0.0.0.0/0 tcp dpt:16381
ACCEPT tcp -- a.b.c.g 0.0.0.0/0 tcp dpt:16381
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:16381
有人能解释一下重复条目的原因吗?
我对此完全陌生,因此非常希望得到详细的解释。
答案1
您可能正在运行一个脚本(或类似脚本),该脚本会添加规则,但不要删除旧规则。请注意,多次添加同一条规则会导致iptables
在执行脚本时多次添加它们,即使规则已经存在。
如果您使用脚本,请确保在再次添加新规则之前清除所有规则。在顶部放置类似以下内容:
iptables -F
iptables -X
iptables -Z
请注意,这些命令仅清除默认表,即filter
。如果您对多个表有规则,则需要对该表执行相同的命令。例如:
iptables -F -t nat
iptables -X -t nat
iptables -Z -t nat
还要注意,有几个表:filter、nat、mangle、raw 和 security,但这并不意味着您必须使用所有表,只需使用您需要的表即可。
然而,最好的方法是使用iptables-save
和iptables-restore
命令,除了规则本身之外,它们还保存规则的状态。
您可以将规则保存为:
iptables-save > /root/my-rules.iptables
您甚至可以手动向保存的文件添加规则,尽管iptables
建议使用本机命令,然后转储整个链。
然后使用以下命令恢复它们:
iptables-restore < /root/my-rules.iptables