重复的 iptable 规则

重复的 iptable 规则

我有这个 iptable 规则:

-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-N fail2ban-ssh
-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh
-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -j DROP
-A fail2ban-ssh -s xx.xxx.xx.xx/32 -j REJECT --reject-with icmp-port-unreachable
-A fail2ban-ssh -j RETURN
-A fail2ban-ssh -j RETURN

线条

-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh

-A fail2ban-ssh -j RETURN

似乎重复或写入两次。如何删除重复项?

答案1

列出行号并按编号删除。

iptables --line-numbers --list

然后使用行号删除一条规则。然后重复(删除一条规则后,后面的规则的行号会发生变化,因此在删除另一条规则前请重新列出)。

iptables -D INPUT 6

答案2

iptables-save | uniq | iptables-restore

这确实就是您所需要的一切。

答案3

如果你只想删除一个接一个r 你可以使用以下方式导出、统一和重新导入

mkdir ~/tmp
iptables-save > ~/tmp/iptables.conf
uniq /tmp/iptables.conf > ~/tmp/iptables_new.conf
iptables-restore < ~/tmp/iptables_new.conf

如果您想删除其他行,请使用编辑器编辑~/tmp/iptables.conf,然后以相同的方式重新导入。

使用以下方式检查您的新规则

iptables-save

答案4

删除除 COMMIT 之外的所有重复行

/sbin/iptables-save | awk '!COMMIT||!x[$0]++' | /sbin/iptables-restore

相关内容