iptables 通过注释文本删除规则?

标签 iptables

我想通过搜索特定的注释来删除特定的 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/

相关文章:

docker - Docker容器无法在docker0外部连接

linux - iptables -j 与 -g 参数

linux - 无法远程连接到 MongoDB(即使未设置 bindIp)

linux - iptables 脚本来阻止除所需应用程序之外的所有互联网访问

centos - 通过配置iptables创建jumphost的问题

c - libiptc : adding nat rule with mark based match?

hadoop - 星火集群启动问题

centos - 我无法使用 iptables 错误启动 docker 服务

linux - 我用 iptables 设置了 socket MARK 和 TTL,但是我不能从 getsockopt 读取它?

networking - 如何允许分段数据包通过防火墙(ipv4/v6)?