Hugo博客公告弹窗

iptables + ipset 黑名单管理脚本

高效封禁大量恶意IP

脚本

curl -sS -O https://raw.githubusercontent.com/woniu336/open_shell/main/ip_blacklist.sh && chmod +x ip_blacklist.sh && ./ip_blacklist.sh

快捷键

echo "alias ipban='/root/ip_blacklist.sh'" >> ~/.bashrc
source ~/.bashrc

输入ipban即可启动脚本

开机自动加载规则(脚本已经包含)

sudo cat > /etc/rc.local << 'EOF'
#!/bin/bash
ipset restore -f /etc/ipset.conf
iptables-restore < /etc/iptables/rules.v4
exit 0
EOF

sudo chmod +x /etc/rc.local

检查服务状态

systemctl status rc-local.service

手动查询

# ✅ 查看ipset集合
ipset list blacklist

# ✅ 查看iptables规则是否生效
iptables -L INPUT -n | grep blacklist

# ✅ 检查某个IP是否被封禁
ipset test blacklist 194.110.115.222

# 查看完整的INPUT链规则顺序
iptables -L INPUT -n --line-numbers

其他命令

# 手动添加IP(不用脚本)
ipset add blacklist 1.2.3.4

# 手动删除IP
ipset del blacklist 1.2.3.4

# 清空所有IP
ipset flush blacklist

# 查看黑名单的详细配置(包括类型、大小等)
ipset list blacklist -t

其他命令2

# 查看所有ipset集合
ipset list

# 只看集合名称
ipset list -n

# 查看 blacklist 中有哪些 IP
sudo ipset list blacklist

# 查看 gptbot_blacklist 中有哪些网段
sudo ipset list gptbot_blacklist

# 查看完整的 iptables INPUT 链规则
sudo iptables -L INPUT -n --line-numbers

删除规则

  1. 查看当前规则集
sudo ipset list -n
  1. 删除 blacklist
sudo iptables -D INPUT -m set --match-set blacklist src -j DROP
sudo ipset destroy blacklist
  1. 删除 gptbot_blacklist
sudo iptables -D INPUT -m set --match-set gptbot_blacklist src -j DROP
sudo ipset destroy gptbot_blacklist
  1. 保存配置
sudo ipset save > /etc/ipset.conf
sudo iptables-save > /etc/iptables.rules
  1. 验证删除
sudo ipset list -n
sudo iptables -L INPUT -v -n

注意事项

⚠️ 删除顺序很重要

  1. 必须先删除使用该集合的 iptables 规则
  2. 然后才能删除 ipset 规则集
  3. 否则会报错:ipset v7.x: Set cannot be destroyed: it is in use by a kernel component
CC BY-NC-SA 4.0 转载请注明
最后更新于 2025-12-15 13:20