在广告泛滥的网络环境中,Pi-hole作为一款开源的网络级广告拦截工具,凭借“一次部署,全设备受益”的核心优势脱颖而出。它并非传统的浏览器插件,而是通过在网络入口处拦截广告域名请求,实现对家庭或小型网络内所有设备(包括手机、电视、智能家电等)的广告过滤,同时还能提升网络速度、减少带宽占用并增强隐私保护。本指南将从Pi-hole的核心特性出发,详细讲解其安装流程与使用技巧,帮助你快速搭建属于自己的广告拦截系统。
一、Pi-hole核心介绍
1.1 什么是Pi-hole?
Pi-hole最初是为树莓派(Raspberry Pi)开发的轻量级广告拦截工具,如今已支持多种Linux发行版。它本质上是一个DNS服务器,通过维护庞大的广告及恶意软件域名黑名单,当网络中的设备发起DNS请求时,Pi-hole会自动拦截指向黑名单域名的请求,返回无效IP或空响应,从而使广告无法加载。由于其工作在网络层,无需在每台设备上单独安装软件,实现了“一处配置,全屋防护”。
1.2 核心优势与功能
-
全设备覆盖:支持手机、电脑、智能电视、路由器、智能家居等所有接入网络的设备,不受操作系统和浏览器限制,尤其能解决电视、智能设备无法安装广告拦截插件的问题。
-
轻量高效:对硬件资源需求极低,在树莓派Zero W等入门级设备上也能稳定运行,占用内存小,几乎不影响网络速度,反而能因减少广告加载而提升网页打开效率。
-
强大的过滤能力:默认集成多个权威广告域名列表,支持自定义添加黑白名单,可灵活过滤各类弹窗广告、视频广告、APP内置广告等,同时能拦截恶意软件和钓鱼网站域名。
-
直观的Web管理界面:提供简洁易用的网页管理后台,可实时查看网络请求统计、拦截记录、设备连接情况,支持通过图形化界面配置黑名单、白名单、DNS服务器等参数。
-
隐私保护:减少广告商通过追踪脚本收集用户行为数据的可能,部分版本支持加密DNS(如DoH/DoT),进一步提升网络请求的隐私安全性。
-
开源免费:完全开源,代码透明可审计,无任何隐藏收费项目,社区活跃,更新维护及时,持续优化过滤规则与功能。
1.3 适用场景
Pi-hole适用于家庭网络、小型办公室、个人工作室等场景,尤其适合以下人群:
-
受广告困扰,希望净化全网络广告环境的用户;
-
拥有多台智能设备,想统一管理广告拦截的家庭用户;
-
关注网络隐私,希望减少数据追踪的用户;
-
使用树莓派等闲置设备,想充分利用硬件资源的极客爱好者。
二、安装前准备
2.1 硬件要求
Pi-hole对硬件要求极低,以下是推荐配置,满足其一即可:
-
首选:树莓派:树莓派3 Model B/B+、树莓派4 Model B、树莓派Zero W等均可,推荐树莓派4(性能更强,支持更多扩展),需搭配Micro SD卡(最小8GB,推荐16GB及以上Class 10高速卡)、电源适配器和网线(无线连接需设备支持WiFi)。
-
替代方案:旧电脑(安装Linux系统)、虚拟机(如VMware、VirtualBox中安装Ubuntu Server)、NAS设备(如群晖、威联通支持Docker部署)、Linux服务器(物理机或云服务器)。
2.2 软件与网络准备
-
操作系统:推荐安装基于Debian的Linux发行版,如Raspbian(树莓派专用)、Ubuntu Server、Debian 10/11等,Pi-hole对这些系统的兼容性最佳。
-
网络环境:确保安装设备能正常连接互联网,建议为其分配固定IP地址(通过路由器DHCP静态绑定或在设备上手动设置),避免IP变动导致Pi-hole无法使用。
-
必要工具:电脑端需准备SSH工具(如PuTTY、Xshell、终端)用于远程连接设备,若使用树莓派,需准备SD卡烧录工具(如Raspberry Pi Imager)。
三、Pi-hole安装步骤
Pi-hole提供一键安装脚本,极大简化了部署流程,以下以“树莓派(Raspbian系统)”和“Ubuntu Server”为例,介绍主流安装方法,其他Linux系统流程基本一致。
3.1 树莓派环境安装(推荐)
步骤1:部署Raspbian系统
-
下载Raspberry Pi Imager(官网:https://www.raspberrypi.com/software/),安装并打开。
-
点击“选择操作系统”,选择“Raspbian OS (32-bit)”或“Raspbian OS (64-bit)”(根据树莓派型号选择,树莓派4推荐64位);点击“选择存储设备”,选择插入电脑的Micro SD卡。
-
点击右下角齿轮图标,开启“启用SSH”(选择“使用密码认证”),设置“用户名和密码”(用于SSH登录),配置“无线网络”(输入WiFi名称和密码,使树莓派启动后自动连接WiFi),设置“地区和语言”(如时区设为Asia/Shanghai),点击“保存”。
-
点击“写入”,等待系统镜像烧录完成,将SD卡插入树莓派,接通电源启动设备。
步骤2:SSH连接树莓派
-
通过路由器管理后台查看树莓派的IP地址(设备名称通常为raspberrypi)。
-
打开SSH工具(如PuTTY),输入树莓派IP地址,端口默认22,点击“打开”;在终端中输入用户名和密码(烧录时设置的),完成登录。
步骤3:一键安装Pi-hole
-
登录后,执行以下一键安装命令,脚本会自动下载并配置Pi-hole所需组件:
curl -sSL https://install.pi-hole.net | bash -
出现安装向导界面,按Enter键继续;阅读许可协议后,按Tab键选中“OK”并Enter确认。
-
选择DNS服务器:推荐选择“Cloudflare (1.1.1.1)”或“Google (8.8.8.8)”,按空格选中,Tab键确认,后续可在Web界面修改。
-
选择广告列表:默认已选中多个权威列表,直接按Tab键“OK”确认,后续可自行添加更多列表。
-
设置IP地址:建议选择“静态IP”(Static IP address),确保IP与路由器分配的固定IP一致,按Tab键确认。
-
安装Web管理界面:默认勾选“Install the Pi-hole Web Interface”和“Install lighttpd”(Web服务器),直接确认,这是图形化管理的核心组件。
-
安装PHP:默认勾选,确认即可,Web界面依赖PHP运行。
-
配置日志:根据需求选择日志级别,新手推荐默认选项,确认后等待安装完成。
-
安装成功后,界面会显示Pi-hole的Web管理地址(如http://192.168.1.100/admin)和初始密码,务必记录下来,按Enter键完成安装。
3.2 Ubuntu Server安装(通用)
-
部署Ubuntu Server系统:通过官网下载镜像,使用VMware或物理机安装,安装时设置用户名、密码,并配置固定IP(可在安装过程中设置或后续通过netplan配置)。
-
SSH连接服务器:使用终端或PuTTY连接Ubuntu Server的IP地址,输入用户名和密码登录。
-
更新系统包:执行以下命令确保系统组件最新:
sudo apt update && sudo apt upgrade -y -
执行一键安装脚本,后续步骤与树莓派安装的步骤3-9完全一致:
curl -sSL https://install.pi-hole.net | bash
3.3 Docker部署(灵活高效)
若设备已安装Docker,可通过容器快速部署Pi-hole,适合NAS或已使用Docker的用户:
-
安装Docker和Docker Compose(略,可参考Docker官方文档)。
-
创建docker-compose.yml文件:
version: "3" services: pihole: container_name: pihole image: pihole/pihole:latest network_mode: host # 使用主机网络,确保DNS服务正常工作 environment: - TZ=Asia/Shanghai # 时区 - WEBPASSWORD=your_password # Web管理密码 - DNS1=1.1.1.1 # 首选DNS - DNS2=8.8.8.8 # 备用DNS volumes: - ./pihole/etc-pihole:/etc/pihole - ./pihole/etc-dnsmasq.d:/etc/dnsmasq.d restart: unless-stopped -
执行启动命令:
docker-compose up -d -
部署完成后,通过http://设备IP/admin访问Web界面,使用设置的WEBPASSWORD登录。
四、Pi-hole基础配置与使用
4.1 网络设备接入Pi-hole
安装完成后,需将网络中的设备DNS指向Pi-hole的IP地址,才能实现广告拦截,推荐两种方式:
方式1:路由器全局配置(推荐)
在路由器管理后台(通常为192.168.1.1或192.168.0.1),找到“DHCP服务器”或“网络设置”选项,将“DNS服务器”设置为Pi-hole的IP地址(如192.168.1.100),保存后重启路由器。此时,所有通过路由器DHCP获取IP的设备,会自动使用Pi-hole作为DNS服务器,无需单独配置,实现全屋覆盖。
方式2:单设备手动配置
若不想全局启用,可在单台设备上手动设置DNS:
-
Windows:控制面板→网络和共享中心→更改适配器设置→右键当前网络连接→属性→Internet协议版本4(TCP/IPv4)→属性→选择“使用下面的DNS服务器地址”,首选DNS填写Pi-hole IP,备用DNS可留空或填写公共DNS。
-
macOS:系统设置→网络→选中当前网络→高级→DNS→点击“+”添加Pi-hole IP,删除其他DNS地址,点击“好”保存。
-
手机(iOS/Android):在WiFi设置中,找到当前连接的WiFi,进入高级设置,将DNS改为Pi-hole IP(Android部分机型需在“静态IP”模式下设置)。
4.2 Web管理界面核心操作
打开浏览器,输入“http://Pi-holeIP/admin”进入管理界面,使用安装时记录的密码登录,核心功能如下:
1. 仪表盘(Dashboard)
首页显示核心统计数据,包括今日拦截请求数、拦截率、总请求数、连接设备数等,通过图表直观展示网络请求趋势,可快速判断Pi-hole运行状态。
2. 黑白名单管理
这是自定义过滤规则的核心功能,针对误拦截或漏拦截的情况进行调整:
-
黑名单(Blacklist):添加需要拦截的域名,如某APP的广告域名,支持精确域名(如ad.example.com)和通配符(如*.ad.com),添加后立即生效。
-
白名单(Whitelist):若某正常网站被误拦截(如无法打开网页、图片加载失败),可将该网站域名添加到白名单,解除拦截。
-
正则表达式(Regex Filter):进阶功能,通过正则表达式匹配一类域名,如“^ad.*\.com$”可拦截所有以ad开头、以com结尾的域名,适合高级用户。
3. DNS与广告列表配置
-
DNS设置(Settings→DNS):可修改首选和备用DNS服务器,支持启用加密DNS(DoH/DoT),如选择Cloudflare的加密DNS,提升隐私安全性。
-
广告列表(Settings→Adlists):默认集成多个广告列表,可点击“Add”添加第三方权威列表(如https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts),丰富过滤规则,注意避免添加过多列表导致性能下降。
4. 设备管理(Settings→Clients)
显示所有连接到Pi-hole的设备(按IP地址区分),可给设备命名(如“客厅电视”“手机”),便于识别;支持为单个设备设置单独的过滤规则(如允许儿童设备访问特定网站)。
5. 日志与统计(Logs / Long-term Data)
Logs页面实时显示所有DNS请求记录,包括请求设备、域名、是否被拦截等信息,可通过搜索筛选特定记录;Long-term Data提供长期统计数据,支持按天、周、月查看网络请求趋势,帮助分析网络使用情况。
4.3 常用命令行操作
除Web界面外,可通过SSH执行命令管理Pi-hole,核心命令如下:
-
重启Pi-hole服务:
sudo pihole restartdns -
暂停拦截(10分钟后恢复):
sudo pihole disable 10(无参数则永久暂停,需手动启用) -
启用拦截:
sudo pihole enable -
更新广告列表:
sudo pihole -g -
修改Web管理密码:
sudo pihole -a -p 新密码 -
查看Pi-hole状态:
sudo pihole status
五、常见问题与解决方案
5.1 设备无法连接网络或网页打不开
原因:DNS设置错误或Pi-hole服务未正常运行。
解决方案:
-
检查Pi-hole服务状态:执行
sudo pihole status,若显示“not running”,执行sudo pihole restartdns重启服务。 -
验证Pi-hole DNS是否生效:在设备上执行
nslookup pi-hole.net 192.168.1.100(替换为Pi-hole IP),若返回正常IP则DNS工作正常。 -
若某特定网站无法打开,检查是否被误拦截:在Web界面“Logs”中搜索该网站域名,若显示“Blocked”,将其添加到白名单。
-
暂时恢复默认DNS:在路由器或设备上改回公共DNS(如114.114.114.114),排除Pi-hole配置问题。
5.2 广告拦截效果差或部分广告无法拦截
原因:广告列表不全或广告域名未被收录。
解决方案:
-
更新广告列表:Web界面“Settings→Adlists”点击“Update”,或执行
sudo pihole -g。 -
添加第三方广告列表:推荐添加StevenBlack的统一 hosts 列表(https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts)、AdAway列表等,丰富过滤规则。
-
手动拦截广告域名:打开包含广告的网页,通过浏览器开发者工具(F12)找到广告对应的域名,添加到Pi-hole黑名单。
5.3 Web管理界面无法访问
原因:lighttpd服务未启动或端口被占用。
解决方案:
-
重启lighttpd服务:
sudo systemctl restart lighttpd。 -
检查端口80是否被占用:
sudo lsof -i :80,若被其他服务占用,停止该服务或修改lighttpd端口(不推荐)。 -
重新安装Web组件:
sudo pihole -r,选择“Repair”修复安装。
5.4 树莓派断电后Pi-hole无法使用
原因:树莓派IP地址变动,导致设备DNS指向失效。
解决方案:在路由器DHCP设置中,将树莓派的MAC地址与IP地址绑定,设置为静态IP,确保断电重启后IP不变。
六、进阶技巧与资源推荐
6.1 进阶优化
-
启用缓存加速:Pi-hole默认开启DNS缓存,可在“Settings→DNS”中调整缓存大小,减少重复DNS请求,提升网络速度。
-
配置加密DNS:在“Settings→DNS”中,勾选“Use DNS over HTTPS (DoH)”或“Use DNS over TLS (DoT)”,选择Cloudflare或Quad9的加密DNS服务,防止DNS请求被监听。
-
结合VPN使用:若需在外网使用Pi-hole,可在树莓派上部署VPN服务(如WireGuard、OpenVPN),连接VPN后即可通过Pi-hole拦截广告。
6.2 推荐资源
-
官方文档:Pi-hole官网文档(https://docs.pi-hole.net/),包含详细的配置说明与问题排查指南。
-
广告列表库:Firebog(https://firebog.net/)提供大量分类广告列表,可根据需求选择添加。
-
社区论坛:Pi-hole官方论坛(https://discourse.pi-hole.net/)和树莓派中文社区,可交流问题与技巧。
-
可视化工具:可安装Pi-hole Dashboard插件(如Grafana),实现更丰富的数据分析与可视化展示。
七、总结
Pi-hole作为一款轻量高效的网络级广告拦截工具,以极低的硬件成本实现了全设备广告防护,不仅能净化网络环境,还能提升网络速度与隐私安全性。通过本指南的学习,你已掌握Pi-hole的安装、配置及核心使用方法,后续可根据自身需求优化过滤规则,结合进阶技巧进一步提升使用体验。无论是家庭用户还是技术爱好者,Pi-hole都是值得尝试的网络优化工具,让你彻底摆脱广告困扰,享受更纯净的网络世界。