我有这个 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