Pi-hole v6.5 介绍与选型指南
Pi-hole v6.5 网络级广告拦截 DNS 服务介绍与选型指南:三件套架构、功能特性、与 AdGuard Home/Blocky/Technitium 的量化对比,数据于 2026-10-18 实查官方源
Pi-hole v6.5 介绍与选型指南
目标:面向准备做「全网广告与追踪域名拦截」的运维与自托管用户,介绍 Pi-hole v6.5(2026-10-17 发布)的定位、核心架构、功能特性与同类竞品选型对比,帮助读者在 10 分钟内判断 Pi-hole 是否适合自己的网络环境。本文为认知篇,全部版本号、活跃度数据均于 2026-10-18 从官方 GitHub Releases 实查取得,不做本地安装实测。
一、环境信息
本章是全文数据的「信息基准」:说明本文引用的版本号、活跃度数据从哪里来、什么时候查的,保证读者复现查询时可以比对时效。
- 信息基准日期:2026-10-18(文中所有版本号与活跃度数据的查询日期)
- 版本依据来源:GitHub Releases(pi-hole/pi-hole、pi-hole/FTL、pi-hole/web)
- 活跃度依据来源:GitHub Repository API(star 数、fork 数、最近推送时间)
- 许可证依据来源:pi-hole/pi-hole 仓库 LICENSE 文件(v6.5 tag)
官方来源清单:
| 来源 | 地址 | 用途 |
|---|---|---|
| Pi-hole 官网 | https://pi-hole.net/ | 项目主页、特性总览 |
| 官方文档站 | https://docs.pi-hole.net/ | 安装、配置、原理文档 |
| Core 主仓库 | https://github.com/pi-hole/pi-hole | 核心脚本与 gravity、Releases 页 |
| FTL 仓库 | https://github.com/pi-hole/FTL | 解析引擎,C 语言实现 |
| Web 界面仓库 | https://github.com/pi-hole/web | Web 管理台与 REST API(v6 起由 AdminLTE 更名而来) |
| 官方论坛 | https://discourse.pi-hole.net/ | 社区支持与排障 |
| v6.5 发布页 | https://github.com/pi-hole/pi-hole/releases/tag/v6.5 | 本次介绍的版本发布说明 |
💡 说明:Pi-hole 的版本号体系由三个组件版本共同组成(Core / Web / FTL),对外常以 Core 版本(v6.5)指代整个套件版本。查询时三个仓库的 Releases 页都要看。
二、软件概述
Pi-hole 是一个运行在 Linux 上的「网络级广告与追踪器拦截」方案,本质是一台自带拦截能力的递归转发 DNS 服务器:把局域网设备的 DNS 指向 Pi-hole 后,命中拦截列表的域名直接返回黑洞地址,广告与追踪请求在「域名解析」这一层就被拦下,根本到不了浏览器或 App。
本次介绍的版本:Pi-hole v6.5,Core 仓库于 2026-10-17 发布(GitHub Releases 实查),同一日配套发布的还有 FTL v6.8 与 Web 界面 v6.6.1。v6.5 是一个安全修复版本,修复了 4 个高危(CVSS 7.8/7.3)与 1 个低危安全通告,同时对 gravity 数据库 schema 做了性能优化(WITHOUT ROWID 关联表、新增分组查询索引,数据库迁移到 schema 版本 21)。
关键身份信息(均于 2026-10-18 实查):
| 项目 | 内容 | 来源 |
|---|---|---|
| 当前稳定版本 | v6.5(Core)/ v6.6.1(Web)/ v6.8(FTL) | GitHub Releases |
| 发布日期 | 2026-10-17 | GitHub Releases |
| 开源许可 | EUPL(欧洲联盟公共许可证,v6 起采用) | LICENSE 文件 |
| 开发语言 | Shell + C(FTL 引擎)+ JS(Web 界面) | 各仓库 |
| 运行平台 | Linux(Debian/Ubuntu/Fedora 系官方支持) | 官方文档 |
| 主仓库 star 数 | 61,319 | GitHub API,2026-10-18 |
| 最近代码推送 | 2026-10-18 | GitHub API,2026-10-18 |
Pi-hole 的名字来源于 DNS 解析中的「黑洞」隐喻:被拦截的域名如同掉进一个黑洞(解析结果为 0.0.0.0 或 NXDOMAIN),请求再也无法到达广告服务器。项目 2015 年发起,最初面向树莓派(Pi)设计,如今已支持任意 x86_64/ARM64 Linux 主机。
三、核心架构
Pi-hole 由三个子系统组成,三者独立发版、协同工作。理解这个「三件套」结构,是看懂 Pi-hole 配置与排障的前提。
3.1 三大子系统
| 子系统 | 仓库 | 语言 | 职责 | 本次版本 |
|---|---|---|---|---|
| Core | pi-hole/pi-hole | Shell | 安装脚本、pihole 命令行工具、gravity 拦截库管理、日志轮转 | v6.5 |
| FTL | pi-hole/FTL | C | DNS 解析引擎(内嵌 dnsmasq 核心)、拦截判定、内置 Web 服务器与 REST API、查询统计数据库 | v6.8 |
| Web | pi-hole/web | JavaScript/PHP | Web 管理台前端(仪表盘、查询日志、组管理) | v6.6.1 |
关键解读:v6 之前 Web 界面依赖外部 Web 服务器(lighttpd)与 PHP 解释器;v6 起 FTL 直接内置了 Web 服务器与 REST API(监听 80/443 端口),不再需要 lighttpd,安装依赖大幅减少,配置也全部收敛到一个文件 /etc/pihole/pihole.toml。这是 v6 相对 v5 最大的架构变化。
3.2 DNS 解析与拦截流程
一次来自局域网设备的域名查询,在 Pi-hole 内部的完整处理链路如下(依据官方文档 docs.pi-hole.net 的架构说明整理):
- 客户端发起查询:局域网设备把 DNS 请求发往 Pi-hole 的 53 端口(UDP/TCP)。
- FTL 接收与判定:FTL(内嵌 dnsmasq)先查缓存;未命中则比对本地自定义记录(Local DNS),再走拦截判定——精确匹配 gravity 拦截库、正则匹配拦截规则、客户端分组策略。
- 命中拦截:按配置的拦截模式返回黑洞地址(默认 NULL 模式返回 0.0.0.0),查询记入日志并标记为 blocked。
- 未命中则转发上游:把查询转发给配置的上游 DNS(如公共 DNS、自建 unbound),拿到结果后写缓存并返回客户端。
- 统计落库:每次查询的域名、类型、客户端、结果、耗时都记入 pihole-FTL.db,供 Web 管理台绘制仪表盘与查询日志。
💡 技术拓展:Pi-hole 的「拦截模式」(blocking mode)不止一种,常见模式对比——
模式 拦截时返回 特点 适用场景 NULL(默认) A 记录 0.0.0.0 / AAAA 记录 :: 兼容性最好,客户端立即失败不等待 绝大多数家用/办公网 IP-NODATA-AAAA A 记录 0.0.0.0,AAAA 返回空应答 对双栈客户端减少一次 AAAA 查询 重度 IPv6 环境微调 NXDOMAIN 返回「域名不存在」 部分客户端会快速放弃重试;个别程序可能误判网络故障 想让客户端日志更干净的场景 Pi-hole v6 默认采用 NULL 模式,可在 Web 管理台或 pihole.toml 的
blocking.mode中调整。
3.3 数据存储
Pi-hole v6 的持久化数据集中在 /etc/pihole/ 目录,四个核心文件各司其职:
| 文件 | 作用 | 生成/维护方 |
|---|---|---|
pihole.toml | 全量配置文件(v6 新增,单一配置源) | FTL 读写 |
gravity.db | 拦截库:adlist 源、精确/正则黑白名单、分组、客户端 | Core 的 gravity 机制 |
pihole-FTL.db | 运行数据:查询历史、统计聚合、长期数据 | FTL |
pihole.log / FTL.log | DNS 查询日志 / FTL 引擎日志 | FTL |
关键解读:pihole.toml 是 v6 的「唯一真源」——Web 管理台、REST API、CLI 修改配置最终都会写回这个文件(文件头注明 "This file is managed by pihole-FTL")。备份时保住 /etc/pihole/ 整个目录,即可完整恢复一台新实例。
四、功能特性
以下特性清单基于官方文档与 v6.5 发布说明整理,覆盖家庭与小型办公网络最常用的能力面。
4.1 网络级广告拦截
把局域网设备的 DNS(或路由器 DHCP 下发的 DNS 地址)指向 Pi-hole,全网设备即被覆盖——包括手机 App、智能电视、IoT 设备这些无法装浏览器插件的地方。默认自带 StevenBlack hosts 列表(实测约 7.3 万个拦截域名),可自行添加任意数量的 adlist 源。
4.2 精确、正则与通配黑白名单
支持精确域名、正则表达式、通配符三类规则的 allow/deny 名单,并可按「分组」组合:不同客户端组可用不同的拦截列表与规则集(例如儿童设备加严、办公设备放宽)。正则规则实测命中后按拦截模式返回(NULL 模式返回 0.0.0.0)。
4.3 加密 DNS 上游
v6 起 FTL 原生支持把上游配置为加密 DNS:https:// 前缀(DoH,DNS over HTTPS)与 tls:// 前缀(DoT,DNS over TLS),避免上游查询被中间链路窃听或篡改。
💡 技术拓展:加密 DNS 上游协议不止一种,常见协议对比——
协议 传输层 端口 特点 DoH(DNS over HTTPS) HTTPS 443 与网页流量同端口,最难被网络侧识别封锁 DoT(DNS over TLS) TLS 853 专用端口,协议简单、排查直观 DoQ(DNS over QUIC) QUIC 853 基于 QUIC 多路复用,弱网延迟表现好 DNSCrypt 自有协议 自定 老牌匿名认证协议,生态偏小众 Pi-hole v6 原生支持 DoH 与 DoT 两种上游形式;若需要 DoQ 或 DNSCrypt,通常在前置一层支持该协议的解析器(如 unbound、AdGuard Home)作上游。
4.4 Local DNS 自定义记录
内置 dnsmasq 的 hosts 记录能力,可为内网服务定义「域名=IP」映射(如把 mydev.lan 指到内网开发机),配合 dnsmasq 的条件转发(cond-conditional forwarding)可同时解析内网自定义域名与公网域名。
4.5 DHCP 服务器
可选启用 DHCP 服务接管地址分配,把「网关即 DNS」的链路彻底收进 Pi-hole,避免设备绕过拦截。v6 的 DHCP 支持静态租约绑定、每主机关联参数。
4.6 Web 管理台与 REST API
v6 内置 Web 服务器(默认 80 端口,可改)提供管理台:实时仪表盘(查询量、拦截率、Top 域名/客户端)、查询日志审计、组与名单管理、配置编辑。整套能力同时以 REST API 形式开放(/api/ 前缀),登录换取 SID 会话令牌后可完成全部管理操作,适合自动化脚本对接。
4.7 查询日志与长期统计
每次查询按「时间、客户端、域名、查询类型、结果状态、应答耗时」落库。查询日志支持按状态过滤(blocked/permitted/cached)、按域名检索;统计页提供 24 小时/7 天/长期趋势,可直观看清「谁在什么时候查了什么」。
4.8 其他工程能力
- 分组管理:域名/列表/客户端三者按组关联,策略组合灵活。
- 会话安全:Web 密码登录 + 可选 2FA(TOTP);v6.5 修复了多个高危安全问题,建议生产环境至少升到 v6.5。
- Teleporter 备份:一键导出全部配置(toml、gravity.db、FTL 数据库等打包为 zip),迁移恢复方便。
- gravity 机制:adlist 拉取→解析→去重→建库→原子替换,更新过程不中断解析服务。
五、快速上手
以下为官方文档给出的最小安装示例(引自 docs.pi-hole.net 与 pi-hole.net 主页,2026-10-18 查询;认知篇不包含本地实测,安装实测与逐条命令回显见本专栏部署篇)。
在 Debian/Ubuntu 系 Linux 服务器上,官方推荐的一键安装命令:
curl -sSL https://install.pi-hole.net | bash
安装器会交互式引导完成:上游 DNS 选择、拦截列表选择、网络接口与监听策略、是否启用日志、Web 管理台安装。安装完成后:
- Web 管理台:
http://<服务器IP>/admin/(安装结束时展示随机密码,可用pihole setpassword重设); - DNS 服务:53 端口,把局域网设备 DNS 指向服务器 IP 即生效;
- 验证拦截:
dig <服务器IP> doubleclick.net,返回0.0.0.0即拦截生效。
💡 说明:
curl | bash模式会以 root 执行远程脚本,安全敏感环境可先下载再审计:curl -sSL -o basic-install.sh https://install.pi-hole.net && bash basic-install.sh。打包运行时部署不在本篇展开。
六、适用场景与限制
6.1 适用场景
- 家庭网络:路由器 DHCP 下发 Pi-hole 为 DNS,全屋去广告,智能电视/IoT 设备同样受益;
- 小型办公室:集中 DNS + 拦截策略分组(访客/办公/儿童组不同策略),并借此获得全网域名访问审计能力;
- 自托管基础设施的前置 DNS:内网服务用 Local DNS 记录统一命名,公网查询走加密上游;
- 配合 unbound 组成「递归解析 + 拦截」栈:Pi-hole 拦截,unbound 直接向根服务器递归,减少对公共上游的依赖。
6.2 限制与不适用场景
| 限制 | 说明 |
|---|---|
| DNS 层拦截的天花板 | 只能拦「按域名寻址」的广告;与内容同域投放的广告(如视频贴片)、同一 CDN 域名下的资源无法区分拦截 |
| 单点与高可用 | 免费版无内置集群能力;需自备两台实例 + 路由器双 DNS 或 keepalived 浮动 IP 方案 |
| 内网依赖 | 拦截依赖客户端「老实使用下发的 DNS」,设备手动改 8.8.8.8 即绕过;需在网关侧封禁外发 53 端口兜底 |
| 平台范围 | 官方支持 Linux 服务器形态;路由器固件内置场景建议改用 OpenWrt 自带的 dnsmasq 方案 |
| 抗压规模 | 官方定位家庭/中小网络;数千客户端以上的大型园区网建议做压力评估 |
6.3 与「浏览器插件拦截」的互补关系
uBlock Origin 等浏览器插件在页面元素层拦截(隐藏广告位、阻止脚本),Pi-hole 在 DNS 层拦截(域名黑洞)。前者精细但只管浏览器,后者覆盖全设备但粒度到域名。两者叠加使用是常见实践,并非二选一。
七、同类选型对比
本章数据均于 2026-10-18 从 GitHub API 与 Releases 页实查取得。候选对象选取了 DNS 层拦截/自托管 DNS 领域最常被拿来对比的三个方案:AdGuard Home、Blocky、Technitium DNS Server。
7.1 社区活跃度与版本节奏(量化对比)
| 指标(2026-10-18 实查) | Pi-hole | AdGuard Home | Blocky | Technitium DNS Server |
|---|---|---|---|---|
| 主仓库 | pi-hole/pi-hole | AdguardTeam/AdGuardHome | 0xERR0R/blocky | TechnitiumSoftware/DnsServer |
| star 数 | 61,319 | 37,507 | 7,039 | 10,146 |
| fork 数 | 3,325 | 2,551 | 315 | 802 |
| 最近代码推送 | 2026-10-18 | 2026-10-16 | 2026-10-16 | 2026-10-17 |
| 最新稳定版 | v6.5(2026-10-17) | v0.107.79(2026-08-18) | v0.35.0(2026-09-05) | v15.6.2(2026-10-17) |
| 官方打包运行时项目 star | 11,690 | 主仓库自带 | 主仓库自带 | 主仓库自带 |
关键解读:Pi-hole 的社区规模(star/fork/论坛)显著领先,四个项目均在近一周内有代码推送,都处于活跃维护状态;版本节奏上 Pi-hole、Technitium 发布最勤(10 月内均有新版)。
7.2 功能与形态对比
| 维度 | Pi-hole v6.5 | AdGuard Home v0.107.79 | Blocky v0.35.0 | Technitium v15.6.2 |
|---|---|---|---|---|
| 实现语言 | Shell + C | Go | Go | C#/.NET |
| 许可证 | EUPL | GPL-3.0 | Apache-2.0 | GPL-3.0 |
| Web 管理台 | 内置(FTL 直带) | 内置 | 无(依赖 API + 第三方面板) | 内置 |
| REST API | 完整(v6 内置) | 完整 | 完整 | 完整 |
| 拦截能力 | gravity 列表 + 精确/正则/通配 + 分组 | 过滤列表 + 自定义规则(hosts/广告语法)+ 家长控制 | 列表 + 精确/正则/通配 + 分组 | 拦截区(zones)+ 列表,DNS 能力最全 |
| 加密上游 | DoH、DoT | DoH、DoT、DoQ | DoH、DoT | DoH、DoT、DoQ、DNSCrypt |
| 加密入站 | DoH、DoT(FTL 内置) | DoH、DoT、DoQ | DoH、DoT | DoH、DoT、DoQ、DNSCrypt |
| DHCP | 内置 | 内置 | 无 | 内置 |
| 单文件交付 | 否(脚本安装) | 是(单二进制) | 是(单二进制) | 否(.NET 运行时) |
| 资源占用定位 | 极低(树莓派可跑) | 低 | 极低 | 中(.NET 运行时) |
| 递归解析 | 需配 unbound 等外置 | 需配上游(可接 unbound) | 需配上游 | 内置递归解析器 |
关键解读:Blocky 是「纯 DNS 代理拦截器」,没有管理台,适合配置即代码(YAML)的极简玩家;AdGuard Home 功能与 Pi-hole 最接近,单二进制交付更省事,且加密协议支持更全;Technitium 本质是「全能 DNS 服务器」(递归、条件转发、DoH 服务端、DNSCRYPT 全都有),拦截只是其一;Pi-hole 胜在生态、查询统计体验与「家庭友好」的成熟度。
7.3 选型建议
- 选 Pi-hole:想要最成熟的社区、最好用的查询统计面板、家里有老树莓派闲置;接受多一个「FTL 引擎」概念模型;
- 选 AdGuard Home:想要单二进制、更全的加密 DNS 协议、家长控制(按设备安排上网时段);从 v5 迁移而来的用户注意 v6 配置体系变化;
- 选 Blocky:无 GUI 需求、用 YAML 管配置、追求最小资源占用;
- 选 Technitium:主诉求是「完整 DNS 服务器」(递归/权威/条件转发/拆分 DNS),拦截是附带需求;
- 组合方案:Pi-hole(拦截+统计)+ unbound(递归解析)是自托管社区最经典的组合,Pi-hole 官方文档对该组合有专门章节。
八、参考链接
- Pi-hole 官网:https://pi-hole.net/
- 官方文档站:https://docs.pi-hole.net/
- v6.5 发布说明(GitHub Releases):https://github.com/pi-hole/pi-hole/releases/tag/v6.5
- Core 主仓库:https://github.com/pi-hole/pi-hole
- FTL 引擎仓库:https://github.com/pi-hole/FTL
- Web 界面仓库:https://github.com/pi-hole/web
- FTL 配置参考(pihole.toml 全参数):https://docs.pi-hole.net/ftldns/configfile/
- AdGuard Home 仓库:https://github.com/AdguardTeam/AdGuardHome
- Blocky 仓库:https://github.com/0xERR0R/blocky
- Technitium DNS Server 仓库:https://github.com/TechnitiumSoftware/DnsServer
- Pi-hole 官方论坛:https://discourse.pi-hole.net/
- 本平台相关篇:《Pi-hole Docker Compose 部署指南》
- 本平台相关篇:《Pi-hole v6.5 配置参数详解》
- 本平台相关篇:《Pi-hole 日常运维手册》