Pi-hole-私有DNS

在广告泛滥的网络环境中,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系统

  1. 下载Raspberry Pi Imager(官网:https://www.raspberrypi.com/software/),安装并打开。

  2. 点击“选择操作系统”,选择“Raspbian OS (32-bit)”或“Raspbian OS (64-bit)”(根据树莓派型号选择,树莓派4推荐64位);点击“选择存储设备”,选择插入电脑的Micro SD卡。

  3. 点击右下角齿轮图标,开启“启用SSH”(选择“使用密码认证”),设置“用户名和密码”(用于SSH登录),配置“无线网络”(输入WiFi名称和密码,使树莓派启动后自动连接WiFi),设置“地区和语言”(如时区设为Asia/Shanghai),点击“保存”。

  4. 点击“写入”,等待系统镜像烧录完成,将SD卡插入树莓派,接通电源启动设备。

步骤2:SSH连接树莓派

  1. 通过路由器管理后台查看树莓派的IP地址(设备名称通常为raspberrypi)。

  2. 打开SSH工具(如PuTTY),输入树莓派IP地址,端口默认22,点击“打开”;在终端中输入用户名和密码(烧录时设置的),完成登录。

步骤3:一键安装Pi-hole

  1. 登录后,执行以下一键安装命令,脚本会自动下载并配置Pi-hole所需组件: curl -sSL https://install.pi-hole.net | bash

  2. 出现安装向导界面,按Enter键继续;阅读许可协议后,按Tab键选中“OK”并Enter确认。

  3. 选择DNS服务器:推荐选择“Cloudflare (1.1.1.1)”或“Google (8.8.8.8)”,按空格选中,Tab键确认,后续可在Web界面修改。

  4. 选择广告列表:默认已选中多个权威列表,直接按Tab键“OK”确认,后续可自行添加更多列表。

  5. 设置IP地址:建议选择“静态IP”(Static IP address),确保IP与路由器分配的固定IP一致,按Tab键确认。

  6. 安装Web管理界面:默认勾选“Install the Pi-hole Web Interface”和“Install lighttpd”(Web服务器),直接确认,这是图形化管理的核心组件。

  7. 安装PHP:默认勾选,确认即可,Web界面依赖PHP运行。

  8. 配置日志:根据需求选择日志级别,新手推荐默认选项,确认后等待安装完成。

  9. 安装成功后,界面会显示Pi-hole的Web管理地址(如http://192.168.1.100/admin)和初始密码,务必记录下来,按Enter键完成安装。

3.2 Ubuntu Server安装(通用)

  1. 部署Ubuntu Server系统:通过官网下载镜像,使用VMware或物理机安装,安装时设置用户名、密码,并配置固定IP(可在安装过程中设置或后续通过netplan配置)。

  2. SSH连接服务器:使用终端或PuTTY连接Ubuntu Server的IP地址,输入用户名和密码登录。

  3. 更新系统包:执行以下命令确保系统组件最新: sudo apt update && sudo apt upgrade -y

  4. 执行一键安装脚本,后续步骤与树莓派安装的步骤3-9完全一致: curl -sSL https://install.pi-hole.net | bash

3.3 Docker部署(灵活高效)

若设备已安装Docker,可通过容器快速部署Pi-hole,适合NAS或已使用Docker的用户:

  1. 安装Docker和Docker Compose(略,可参考Docker官方文档)。

  2. 创建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

     

  3. 执行启动命令: docker-compose up -d

  4. 部署完成后,通过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服务未正常运行。

解决方案:

  1. 检查Pi-hole服务状态:执行sudo pihole status,若显示“not running”,执行sudo pihole restartdns重启服务。

  2. 验证Pi-hole DNS是否生效:在设备上执行nslookup pi-hole.net 192.168.1.100(替换为Pi-hole IP),若返回正常IP则DNS工作正常。

  3. 若某特定网站无法打开,检查是否被误拦截:在Web界面“Logs”中搜索该网站域名,若显示“Blocked”,将其添加到白名单。

  4. 暂时恢复默认DNS:在路由器或设备上改回公共DNS(如114.114.114.114),排除Pi-hole配置问题。

5.2 广告拦截效果差或部分广告无法拦截

原因:广告列表不全或广告域名未被收录。

解决方案:

  1. 更新广告列表:Web界面“Settings→Adlists”点击“Update”,或执行sudo pihole -g

  2. 添加第三方广告列表:推荐添加StevenBlack的统一 hosts 列表(https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts)、AdAway列表等,丰富过滤规则。

  3. 手动拦截广告域名:打开包含广告的网页,通过浏览器开发者工具(F12)找到广告对应的域名,添加到Pi-hole黑名单。

5.3 Web管理界面无法访问

原因:lighttpd服务未启动或端口被占用。

解决方案:

  1. 重启lighttpd服务:sudo systemctl restart lighttpd

  2. 检查端口80是否被占用:sudo lsof -i :80,若被其他服务占用,停止该服务或修改lighttpd端口(不推荐)。

  3. 重新安装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都是值得尝试的网络优化工具,让你彻底摆脱广告困扰,享受更纯净的网络世界。

版权声明:本文内容仅供参考,如有侵权,请联系管理员删除处理 admin@ip997.com

分享文章 分享到微博 打印文章