我想通过搜索特定的注释来删除特定的 IPTable 规则。
如果我使用以下方式添加规则:
iptables -I INPUT -p udp -s xxx.xxx.xxx.xx -j DROP -m comment --comment 'DROP RULE'
如何根据评论找到规则并删除它?
iptables -L --行号 | grep -i '删除规则'
应该显示完整的规则,有没有办法获取行号并将其传递给iptables -D INPUT x
?
谢谢
最佳答案
汤姆自己的评论几乎就是答案。假设我们在这里以 root 身份运行这些命令:
iptables -D INPUT $(iptables -L --line-number | grep "DROP RULE" | awk '{print $1}')
我已经将其更新为更具体的 grep (匹配大小写)。 如果您有多个具有相同注释字符串的规则,您可以将其放入循环中并按如下方式删除所有规则,但您必须小心并在上一个删除后获取每个规则的行号,如行随着规则的删除,数字可能会发生变化:
while iptables -L --line-number | grep "DROP RULE" > /dev/null; do iptables -D INPUT $(iptables -L --line-number | grep "DROP RULE" | head -1 | awk '{print $1}'); done
现在,有一些需要注意的事情。确保您的评论字符串是唯一的,并且仅与您想要的规则完全匹配。像“任何地方”或“ESTABLISHED”这样的评论可能会删除比您想要的更多的规则。
关于iptables 通过注释文本删除规则?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44390943/