我有多个 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 表示法。
- 正在查找 192.168.0.0/16不是查找 192.168.1.1。
- 搜索 192.168.1.1 将不是与 192.168.0.0/16 匹配。
解释:
- iptables-save #保存配置
- grep -v #-v是排除匹配的行
iptables-save # 将新结果转储到 iptables-save
- && iptables -F # 完成后,刷新所有规则
- && iptables-恢复
答案3
Skynet 的创建者 Adamm 为他的 iptables 防火墙编写了一个专门用于此的脚本;希望这能起到作用。https://github.com/Adamm00/IPSet_ASUS/commit/56f4bad86ac64bf9c74c6d588f4cd2d83265ab1a