![REGEX:刷新 iptables 中的一些相关链](https://linux22.com/image/156011/REGEX%EF%BC%9A%E5%88%B7%E6%96%B0%20iptables%20%E4%B8%AD%E7%9A%84%E4%B8%80%E4%BA%9B%E7%9B%B8%E5%85%B3%E9%93%BE.png)
我想刷新 IPtables 中的一些相关链。他们的名字就像“f2b.*”我希望整个链条消失!例如,这一切都消失了。
-A f2b-postfix-sasl -s 103.231.139.130/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-postfix-sasl -s 141.98.9.2/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-postfix-sasl -s 45.13.39.56/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-postfix-sasl -s 185.36.81.61/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-postfix-sasl -s 185.36.81.169/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-postfix-sasl -s 185.36.81.165/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-postfix-sasl -s 185.137.111.22/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-postfix-sasl -s 185.137.111.188/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-postfix-sasl -s 185.137.111.123/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-postfix-sasl -j RETURN
-A f2b-ssh-ddos -s 193.201.224.214/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-ssh-ddos -j RETURN
我也希望链式规则消失:
-A INPUT -p tcp -m multiport --dports 22,115 -j f2b-ssh-ddos
-A INPUT -p tcp -m multiport --dports 25,465,587,143,993,110,995 -j f2b-postfix-sasl
基本上是这样的
iptables -F .*f2b-.*
iptables -D .*f2b-.*
你会怎么做?
[原因] 是因为我在关机时保存 iptables,并在重新启动时恢复。但是,fail2ban 会再次添加现有规则,而不检查它们是否已经存在。所以我最终得到了重复的结果。
[更新#1] 我可以得到这样的独特的链名称:
sudo /sbin/iptables -S | grep -P '\-A f2b-.*' | cut -d ' ' -f 2 | sort -u
如何在不形成循环的情况下删除它们?
答案1
我可以得到这样的独特的链名称:
sudo /sbin/iptables -S | grep -P '\-A f2b-.*' | cut -d ' ' -f 2 | sort -u
如何在不形成循环的情况下删除它们?
[答案#1]删除所有 f2b 链
/sbin/iptables -S | grep -P '\-A f2b-.*' | cut -d ' ' -f 2 | sort -u | awk '{print "/sbin/iptables -F "$1";"}' #| /bin/sh
[答案#2]删除所有 f2b 规则
/sbin/iptables -S | grep -P '\-A INPUT.*f2b-.*' | sed 's/^-A //' | awk '{print "/sbin/iptables -D "$0";"}' #| /bin/sh
注意:准备好后取消注释 #。
答案2
对于您的示例案例,您可以这样做:
iptables-save | sed -nE '/^(\*|COMMIT)/p;/^:/s/^:(f2b-[[:graph:]]+).*/-F \1/p;/ -[jg] f2b-[[:graph:]]+/s/^-A/-D/p' | iptables-restore -n
这需要的输出,用相应的命令iptables-save
替换有关链的所有链信息指令(以 开头的行:
),以及用相应的命令引用链的所有命令,最后将它们提供给。f2b-*
-F <chain-name>
-A
f2b-*
-D
iptables-restore -n
这是重要的你使用-n
选项来做到这一点iptables-restore
不是冲洗一切。