我有这个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
似乎是重复或写两次。 我怎样才能删除重复?
列出行号并按编号删除。
iptables --line-numbers --list
然后使用它的行号删除一个规则。 然后重复(在删除另一个之前重新列表,以下规则的行号会更改)。
iptables -D INPUT 6
如果您只想删除直接位于其后的双行,则可以导出,统一并重新导入
iptables-save > /tmp/iptables.conf uniq /tmp/iptables.conf > /tmp/iptables_new.conf iptables-restore < /tmp/iptables_new.conf
如果要删除其他行,请在/tmp/iptables.conf上使用编辑器,然后以相同方式重新导入。
检查你的新规则
iptables-save
对fail2ban的评论:fail2ban似乎增加了它自己的iptables规则。 所以你不应该存储这些规则,例如iptables-save。 然后重新启动后,规则将会翻倍(您保存的规则+由fail2ban添加的规则)。
删除除COMMIT以外的所有重复行
/sbin/iptables-save | awk '!COMMIT||!x[$0]++' | /sbin/iptables-restore