我想通过搜索特定的评论来删除特定的IPTable规则。
如果我使用以下方式添加规则:
iptables -I INPUT -p udp -s xxx.xxx.xxx.xx -j DROP -m comment --comment 'DROP RULE'
如何查找规则然后根据评论将其删除?
iptables -L --line-number | grep -i 'drop rule'
应该显示完整规则,有没有办法获取行号并将其传递给iptables -D INPUT x
?
由于
答案 0 :(得分:0)
汤姆自己的评论几乎就是答案。假设我们在这里以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
现在,有些事情要注意。确保您的注释字符串是唯一的,并且仅与您想要的规则完全匹配。像“随处可见”或“已建立”之类的注释可能会删除比您想要的更多的规则。