尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

nftables-blacklist配置全解析:从基础设置到高级自定义

nftables-blacklist配置全解析:从基础设置到高级自定义
📅 发布时间:2026/7/18 7:46:29

nftables-blacklist配置全解析:从基础设置到高级自定义

【免费下载链接】nftables-blacklistA bash script to ban large numbers of IP addresses published in blacklists.项目地址: https://gitcode.com/gh_mirrors/ip/nftables-blacklist

nftables-blacklist是一款基于Bash脚本的安全工具,能够自动下载公共IP黑名单并通过nftables实现高效拦截,保护Linux服务器免受脚本小子、僵尸网络和恶意流量的侵扰。该工具全面支持IPv4和IPv6协议,具备CIDR聚合、内置白名单、定时更新和服务器IP自动检测等实用功能,是服务器安全防护的得力助手。

快速上手:5分钟完成基础部署

系统要求与依赖安装 📦

nftables-blacklist对系统环境有以下要求:

  • Debian 10+/Ubuntu 20.04+或其他支持nftables的Linux发行版
  • nftables防火墙
  • iprange工具(用于IP范围合并和白名单处理)
  • 基础命令行工具(curl、grep、sed、sort、wc,通常已预装)

在Debian/Ubuntu系统中,可通过以下命令安装所需依赖:

sudo apt install curl iprange

一键安装部署流程 ⚡

  1. 下载核心脚本
sudo curl -fsSL -o /usr/local/sbin/update-blacklist.sh \ https://raw.githubusercontent.com/trick77/nftables-blacklist/master/update-blacklist.sh sudo chmod +x /usr/local/sbin/update-blacklist.sh
  1. 创建配置目录并获取默认配置
sudo mkdir -p /etc/nftables-blacklist if [ -f /etc/nftables-blacklist/nftables-blacklist.conf ]; then echo "Config already exists, skipping download" else sudo curl -fsSL -o /etc/nftables-blacklist/nftables-blacklist.conf \ https://raw.githubusercontent.com/trick77/nftables-blacklist/master/nftables-blacklist.conf fi
  1. 执行首次更新
sudo /usr/local/sbin/update-blacklist.sh /etc/nftables-blacklist/nftables-blacklist.conf
  1. 验证部署结果
# 列出黑名单表 sudo nft list table inet blacklist # 查看IPv4集合内容 sudo nft list set inet blacklist blacklist4 # 查看IPv6集合内容 sudo nft list set inet blacklist blacklist6 # 检查拦截统计 sudo nft list chain inet blacklist input

成功部署后,你将看到类似以下的拦截统计信息:

chain input { type filter hook input priority -200; policy accept; ip saddr @blacklist4 counter packets 1523 bytes 91380 drop comment "IPv4 blacklist" ip6 saddr @blacklist6 counter packets 42 bytes 3360 drop comment "IPv6 blacklist" }

核心配置详解:打造个性化防护策略

配置文件结构与路径

nftables-blacklist的主配置文件为nftables-blacklist.conf,默认位于/etc/nftables-blacklist/目录下。该文件采用Bash语法,主要包含以下配置区域:

  • 文件路径定义
  • 行为控制开关
  • 黑名单源配置
  • 白名单设置
  • 高级参数覆盖

必知关键配置项 🔑

设置项默认值描述
ENABLE_IPV4yes是否拦截IPv4地址
ENABLE_IPV6yes是否拦截IPv6地址
FORCEyes自动创建nftables表和集合(推荐保持默认)
AUTO_WHITELISTno自动检测并白名单服务器自身IP(推荐设为yes)
BLOCK_FORWARDno是否同时拦截转发链流量(如容器流量)
NFT_CHAIN_PRIORITY-200规则检查优先级(值越低越优先)
CURL_CONNECT_TIMEOUT10黑名单服务器连接超时(秒)
CURL_MAX_TIME30单个黑名单下载最大时间(秒)

自定义黑名单源

默认配置已包含多个高质量公共黑名单源,你可以根据需求在BLACKLISTS数组中增删条目:

BLACKLISTS=( # 本地自定义列表 "file:///etc/nftables-blacklist/custom.list" # 公共黑名单 "https://www.spamhaus.org/drop/drop_v4.json" "https://lists.blocklist.de/lists/all.txt" # 国家/地区屏蔽(取消注释并修改国家代码) # "https://raw.githubusercontent.com/ipverse/country-ip-blocks/master/country/ru/ipv4-aggregated.txt" )

小贴士:使用IPverse可以查询ASN、IP所有者和网络范围,帮助你选择需要屏蔽的国家或网络。

白名单策略:避免误拦截的终极指南

手动白名单配置

编辑配置文件中的WHITELIST数组,添加需要保护的IP或CIDR范围:

WHITELIST=( "203.0.113.10" # 单个服务器IP "203.0.113.0/24" # 整个网段 "2001:db8::1" # IPv6地址 "file:///etc/nftables-blacklist/extra.list" # 外部白名单文件 )

对于IPv4,白名单中的CIDR范围会自动排除该范围内的所有IP;而IPv6白名单目前仅支持精确匹配单个IP。

外部白名单文件

当需要管理大量白名单条目时,推荐使用外部文件:

  1. 创建白名单文件:/etc/nftables-blacklist/extra.list
  2. 按行添加IP/CIDR,支持#开头的注释:
# 办公网络 192.168.1.0/24 # VPN服务器 203.0.113.50 # IPv6地址 2001:db8::/32
  1. 在配置文件中引用:"file:///etc/nftables-blacklist/extra.list"

自动检测服务器IP(推荐)

启用自动白名单功能可避免因服务器IP出现在公共黑名单而导致的自拦截问题:

AUTO_WHITELIST=yes

该功能会自动检测:

  • 本地网卡IP地址(排除私有地址)
  • 通过外部服务获取的公网IP(使用o11.net和icanhazip.com作为数据源)

启用后,你将在更新日志中看到自动白名单的IP:

Auto-detecting server IPs for whitelist... Whitelisted: 2001:db8:305:2100::1 Whitelisted: 203.0.113.10

高级应用:从定时更新到性能优化

配置系统服务实现开机自启

为确保黑名单在服务器重启后自动加载,创建系统服务文件:

sudo cat <<'EOF' > /etc/systemd/system/nftables-blacklist.service [Unit] Description=nftables IP blacklist After=network.target [Service] Type=oneshot ExecStart=/usr/local/sbin/update-blacklist.sh /etc/nftables-blacklist/nftables-blacklist.conf RemainAfterExit=yes [Install] WantedBy=multi-user.target EOF

启用服务:

sudo systemctl daemon-reload sudo systemctl enable --now nftables-blacklist.service

设置定时自动更新 ⏰

创建定时器配置,实现黑名单每日自动更新:

sudo cat <<'EOF' > /etc/systemd/system/nftables-blacklist-update.timer [Unit] Description=Update nftables IP blacklist daily [Timer] OnCalendar=*-*-* 23:33:00 Persistent=true RandomizedDelaySec=14400 [Install] WantedBy=timers.target EOF sudo cat <<'EOF' > /etc/systemd/system/nftables-blacklist-update.service [Unit] Description=Update nftables IP blacklist After=network-online.target Wants=network-online.target [Service] Type=oneshot ExecStart=/usr/local/sbin/update-blacklist.sh --cron /etc/nftables-blacklist/nftables-blacklist.conf EOF

启用定时器:

sudo systemctl daemon-reload sudo systemctl enable --now nftables-blacklist-update.timer

最佳实践:每日更新1-2次即可,过于频繁可能导致被黑名单提供商封禁。

处理大型IP集合(10万+条目)

当黑名单包含大量IP时,可能会遇到"消息过长"或"无缓冲空间"错误,可通过调整内核网络缓冲区解决:

# 创建sysctl配置文件 sudo cat <<'EOF' > /etc/sysctl.d/99-nftables.conf net.core.rmem_max = 8388608 net.core.rmem_default = 8388608 EOF # 应用配置 sudo sysctl -p /etc/sysctl.d/99-nftables.conf

测试模式与日志分析

使用--dry-run参数测试配置而不实际应用规则:

update-blacklist.sh --dry-run /etc/nftables-blacklist/nftables-blacklist.conf

对于定时任务,使用--cron参数生成结构化日志:

update-blacklist.sh --cron /etc/nftables-blacklist/nftables-blacklist.conf

查看拦截统计:

sudo nft list chain inet blacklist input

故障排除与常见问题

"nftables table does not exist"错误

当出现此错误时,确保配置文件中FORCE=yes(默认已设置),脚本会自动创建所需的nftables表和集合。

检查特定IP是否被拦截

# 检查IPv4 sudo nft get element inet blacklist blacklist4 '{ 1.2.3.4 }' # 检查IPv6 sudo nft get element inet blacklist blacklist6 '{ 2001:db8::1 }'

与现有防火墙规则的集成

nftables-blacklist使用独立的inet blacklist表,不会干扰现有防火墙规则。默认优先级-200确保黑名单规则在大多数其他规则之前检查,如需调整可修改NFT_CHAIN_PRIORITY参数。

转发流量未被拦截

默认情况下,黑名单仅作用于input链(保护服务器自身)。要同时保护转发流量(如Docker容器),需设置:

BLOCK_FORWARD=yes

迁移指南:从ipset-blacklist升级

如果你之前使用的是旧版ipset/iptables版本,可按以下步骤迁移:

  1. 清理旧版本
# 移除iptables规则和ipset iptables -D INPUT -m set --match-set blacklist src -j DROP ipset destroy blacklist # 移除旧定时任务 rm -f /etc/cron.d/update-blacklist # 移除旧脚本和配置 rm -f /usr/local/sbin/update-blacklist.sh rm -rI /etc/ipset-blacklist
  1. 按照本文档的"快速上手"部分安装新版

注意:Debian Trixie及更新版本用户需确保使用nftables后端:

update-alternatives --set iptables /usr/sbin/iptables-nft update-alternatives --set ip6tables /usr/sbin/ip6tables-nft

完全卸载指南

如需彻底移除nftables-blacklist:

  1. 停止并禁用服务
sudo systemctl disable --now nftables-blacklist-update.timer sudo systemctl disable --now nftables-blacklist.service
  1. 删除nftables表
sudo nft delete table inet blacklist
  1. 移除系统文件
sudo rm -f /etc/systemd/system/nftables-blacklist.service sudo rm -f /etc/systemd/system/nftables-blacklist-update.service sudo rm -f /etc/systemd/system/nftables-blacklist-update.timer sudo systemctl daemon-reload sudo rm -f /usr/local/sbin/update-blacklist.sh sudo rm -rI /etc/nftables-blacklist
  1. 移除内核参数调整(如之前设置过)
sudo rm -f /etc/sysctl.d/99-nftables.conf sudo sysctl --system

完成以上步骤后,系统将恢复到安装前状态,所有被拦截的流量将恢复正常。

【免费下载链接】nftables-blacklistA bash script to ban large numbers of IP addresses published in blacklists.项目地址: https://gitcode.com/gh_mirrors/ip/nftables-blacklist

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

  • G-Helper:基于ACPI/WMI接口的华硕笔记本硬件控制架构解析
  • 会理市2026最新靠谱黄金回收门店及联系方式汇总 黄金回收白银回收铂金回收店铺TOP5排行榜 - 大熊猫898989
  • 数字IC与FPGA双投策略:硬件工程师求职一鱼两吃指南

最新新闻

  • Wireshark数据包分析实战:从捕获到生成专业报告的全流程指南
  • Vue全局API原理与应用全解析
  • 端侧AI部署实战:模型量化与剪枝优化指南
  • 终极指南:在Windows上重温经典Flash游戏的完整解决方案
  • 卡地亚中国官方售后服务中心|官方热线及网点地址权威信息通告(2026年7月最新) - 卡地亚服务中心
  • 技术人海外发展:动机、歧视与成本的全方位拆解

日新闻

  • 宝珀中国官方售后服务中心|官方热线和维修地址权威信息声明(2026年7月更新) - 宝珀官方售后服务中心
  • # 2026年北京知识产权律师推荐怎么选?看这五点关键不踩雷 - 本地品牌推荐
  • 2026实测教程:生成的拼豆图纸不满意怎么修改才省事 - 省事研究所

周新闻

  • IX9104 PCIe5.0 高速交换芯片@ACP#完整规格 + 应用场景总结
  • Unity游戏集成Coze智能体:实现NPC智能对话与知识库联动
  • SAP EPIC 建行回单查询:从标准类CL_EPIC_EXAMPLE_CN_CCB_GHTD到Z类的5处关键修改

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号