删除所有指定 IP 的 iptables DROP 规则

删除所有指定 IP 的 iptables DROP 规则

我有多个 iptables 条目,它们会丢弃来自不同 IP 和不同端口的数据包。我想用一个命令删除与特定 IP 匹配的所有规则。从

man iptables

这似乎是可能的。我该怎么做?

答案1

我怀疑您是否可以使用简单的 iptables 命令来执行此操作 - 根据您的 Linux 版本,可能有一些 frankenhack bash 脚本可供使用(我正在考虑 iptables dump、grep、restore)

你可以做的是在表的开头插入一条 iptables 规则,以允许来自该 IP 的访问,这将覆盖之后的所有内容。例如

 iptables -I INPUT -s X.X.X.X -j ACCEPT
 iptables -I INPUT -d X.X.X.X -j ACCEPT

答案2

iptables-save|grep -v 192\.168\.1\.1 >iptables-save && iptables -F && iptables-restore </iptables.save

您可能需要使用 \ 来分隔句点符号

这会不是匹配 CIDR 表示法。

  1. 正在查找 192.168.0.0/16不是查找 192.168.1.1。
  2. 搜索 192.168.1.1 将不是与 192.168.0.0/16 匹配。

解释:

  1. iptables-save #保存配置
  2. grep -v #-v是排除匹配的行
  3. iptables-save # 将新结果转储到 iptables-save

  4. && iptables -F # 完成后,刷新所有规则
  5. && iptables-恢复

答案3

Skynet 的创建者 Adamm 为他的 iptables 防火墙编写了一个专门用于此的脚本;希望这能起到作用。https://github.com/Adamm00/IPSet_ASUS/commit/56f4bad86ac64bf9c74c6d588f4cd2d83265ab1a

相关内容