news 2026/3/30 21:01:17

Pi-hole广告拦截DNS搭建全网去广告方案

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Pi-hole广告拦截DNS搭建全网去广告方案

前言

Pi-hole是一款网络级广告拦截器,通过DNS过滤实现全网去广告。只需将设备DNS指向Pi-hole,即可拦截广告、追踪器和恶意网站。

一、Pi-hole原理

1.1 工作流程

设备请求 → Pi-hole DNS → 黑名单检查 │ ├── 在黑名单 → 返回0.0.0.0(广告被拦截) │ └── 不在黑名单 → 转发到上游DNS → 返回真实IP

1.2 优势

  • 全网覆盖:一次配置,全家设备生效
  • 设备无关:无需每个设备安装软件
  • 低资源:树莓派Zero都能跑
  • 可视化:详细的查询统计

二、Docker部署

2.1 基础部署

# docker-compose.ymlversion:'3.8'services:pihole:image:pihole/pihole:latestcontainer_name:piholehostname:piholeports:-"53:53/tcp"-"53:53/udp"-"80:80/tcp"environment:TZ:'Asia/Shanghai'WEBPASSWORD:'your_password'PIHOLE_DNS_:'223.5.5.5;119.29.29.29'# 上游DNSDNSSEC:'true'volumes:-'./etc-pihole:/etc/pihole'-'./etc-dnsmasq.d:/etc/dnsmasq.d'cap_add:-NET_ADMINrestart:unless-stopped

2.2 解决端口冲突

# Ubuntu 18.04+可能有systemd-resolved占用53端口# 检查sudolsof-i :53# 禁用systemd-resolvedsudosystemctl stop systemd-resolvedsudosystemctl disable systemd-resolved# 或者修改配置sudosed-i's/#DNSStubListener=yes/DNSStubListener=no/'/etc/systemd/resolved.confsudosystemctl restart systemd-resolved

2.3 启动

docker-compose up -d# 访问Web界面# http://IP/admin# 密码:docker-compose中设置的WEBPASSWORD

三、基础配置

3.1 添加广告黑名单

Web界面 → Adlists → 添加订阅列表 推荐列表: # 官方默认 https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts # 中国广告域名 https://anti-ad.net/easylist.txt https://raw.githubusercontent.com/privacy-protection-tools/anti-AD/master/anti-ad-domains.txt # 隐私追踪 https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/spy.txt

3.2 更新黑名单

# 命令行更新dockerexecpihole pihole -g# 或者Web界面Tools → Update Gravity

3.3 白名单配置

Whitelist → 添加域名 常见需要白名单的域名: - s.youtube.com(YouTube历史记录) - video-stats.l.google.com - www.googleadservices.com(部分网站登录需要)

四、客户端配置

4.1 路由器配置(推荐)

路由器管理界面 → DHCP设置 → DNS服务器 主DNS:Pi-hole的IP地址 备用DNS:留空或8.8.8.8 效果:所有连接路由器的设备自动使用Pi-hole

4.2 单设备配置

# Windows网络适配器 → IPv4 → DNS服务器 → 手动 首选DNS:Pi-hole的IP# macOS系统偏好设置 → 网络 → 高级 → DNS 添加Pi-hole的IP# Linux# /etc/resolv.confnameserver192.168.1.100# Pi-hole IP# Android/iOSWiFi设置 → 高级 → DNS → 手动 输入Pi-hole的IP

五、高级配置

5.1 本地DNS记录

# /etc/dnsmasq.d/02-custom.conf# 自定义域名解析address=/nas.home/192.168.1.10address=/router.home/192.168.1.1address=/pihole.home/192.168.1.100# 重启生效docker restart pihole

5.2 条件转发

Settings → DNS → Conditional Forwarding 勾选 Use Conditional Forwarding Local network: 192.168.1.0/24 DHCP router: 192.168.1.1 效果:可以通过主机名访问局域网设备

5.3 DHCP服务器

Settings → DHCP 启用DHCP服务器后,Pi-hole会: - 自动分配IP - 自动设置DNS为Pi-hole - 显示设备名称 注意:需要先关闭路由器的DHCP

六、性能优化

6.1 缓存配置

# /etc/dnsmasq.d/01-pihole-custom.confcache-size=10000

6.2 上游DNS优化

Settings → DNS → Upstream DNS Servers 推荐配置: - 阿里DNS: 223.5.5.5, 223.6.6.6 - 腾讯DNS: 119.29.29.29 - Cloudflare: 1.1.1.1(国内可能慢) 启用选项: ☑️ Use DNSSEC ☑️ Use Conditional Forwarding

6.3 日志管理

# 禁用查询日志(提高性能)Settings → Privacy → Privacy level 选择 Anonymous mode# 或者限制日志大小# /etc/pihole/pihole-FTL.confMAXDBDAYS=7

七、多站点部署

7.1 需求场景

  • 公司和家里都部署Pi-hole
  • 出差时也想使用去广告
  • 多个办公地点统一管理

7.2 组网方案

使用组网软件(如星空组网)将多个站点组成虚拟局域网后:

家里Pi-hole 公司设备 手机 10.26.0.100 ←── 10.26.0.50 ←── 10.26.0.200 │ │ │ └───────── 虚拟局域网 ────────────┘ 所有设备DNS都指向 10.26.0.100
# 公司设备DNS配置echo"nameserver 10.26.0.100">/etc/resolv.conf# 手机配置WiFi/移动网络 → DNS →10.26.0.100

7.3 备用Pi-hole

# 部署第二个Pi-hole作为备用# 使用Gravity Sync同步配置services:pihole-backup:image:pihole/pihole:latestenvironment:PIHOLE_DNS_:'10.26.0.100'# 主Pi-hole作为上游

八、统计与监控

8.1 Dashboard解读

Total Queries: 总查询数 Queries Blocked: 拦截数量 Percent Blocked: 拦截比例 Domains on Adlists: 黑名单域名数 正常情况: - 拦截比例 10-30% - Top Blocked: 广告域名排行

8.2 查询日志分析

Query Log → 查看所有DNS查询 状态说明: OK (forwarded): 转发到上游DNS OK (cached): 命中缓存 Blocked (gravity): 被黑名单拦截 Blocked (regex blacklist): 被正则规则拦截

8.3 API接口

# 获取统计数据curl"http://pi.hole/admin/api.php?summary"# 禁用Pi-hole(临时关闭)curl"http://pi.hole/admin/api.php?disable=300&auth=TOKEN"# 300秒后自动恢复

九、常见问题

9.1 某些网站打不开

解决方法: 1. Query Log找到被拦截的域名 2. 添加到白名单 3. pihole restartdns

9.2 广告还是能显示

可能原因: 1. 广告和内容同域名(无法拦截) 2. 使用IP直连(绕过DNS) 3. 使用HTTPS DNS(DoH) 解决: - 添加更多黑名单订阅 - 路由器拦截DoH服务器

9.3 DNS解析慢

# 检查上游DNS延迟dig@223.5.5.5 www.baidu.com# 更换更快的上游DNS# 或增加缓存大小

十、与AdGuard Home对比

特性Pi-holeAdGuard Home
资源占用更低略高
Web界面功能全更现代
DoH/DoT需配置内置
家长控制
加密DNS客户端

选择建议:

  • 老硬件(树莓派1/2)→ Pi-hole
  • 需要加密DNS → AdGuard Home
  • 需要家长控制 → AdGuard Home

十一、总结

Pi-hole是网络级广告拦截的最佳方案:

模块内容
部署Docker一键部署
配置黑名单订阅、白名单
客户端路由器/单设备DNS设置
高级本地DNS、DHCP、条件转发
多站点组网实现全局去广告

效果预期

  • 网页广告大幅减少
  • 页面加载速度提升
  • 隐私追踪被阻止
  • 带宽节省10-20%

参考资料

  1. Pi-hole官方文档:https://docs.pi-hole.net/
  2. Pi-hole GitHub:https://github.com/pi-hole/pi-hole
  3. 黑名单收集:https://firebog.net/

本文首发于CSDN,转载请注明出处。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/26 23:58:20

传统写作耗时?这10个AI工具实现数学建模论文复现与排版自动化

还在为论文写作头痛?特别是数学建模的优秀论文复现与排版,时间紧、任务重,AI工具能帮上大忙吗?今天,我们评测10款热门AI论文写作工具,帮你精准筛选最适合的助手。 aibiye:专注于语法润色与结构…

作者头像 李华
网站建设 2026/3/27 20:22:55

华为ensp软件安装

华为ensp软件安装 一、软件包(WinPcap、wireshark、virtualbox、ensp) 通过网盘分享的文件:华为项目软件包(WinPcap、wireshark、virtualbox、ensp)链接: https://pan.baidu.com/s/1GaI88OVr877Bi8uNpSTlhg 提取码: hl88 二、软件下载(按照顺…

作者头像 李华
网站建设 2026/3/28 23:08:49

Type-C接口跟USB接口有什么区别?

Type-C接口与USB接口(包括传统USB-A、USB-B等)在物理结构、功能特性、应用场景等方面存在显著差异。以下是详细对比分析: 一、物理结构差异 Type-C接口 双面可插:采用对称设计,正反面均可插入,解决了传统US…

作者头像 李华
网站建设 2026/3/29 5:11:26

线性表定义和基本操作

1.线性表的定义 线性表是具有相同数据类型的 n(n>0) 个数据元素的有限序列,其中 n 为表长,当n0时线性表是一个空表。(忘记数据元素概念的可以参考https://blog.csdn.net/XinxingZh/article/details/155854415?fromshareblogdetail&s…

作者头像 李华
网站建设 2026/3/30 15:41:35

第10000辆尊界S800量产下线,车主为李连杰

12月16日,尊界S800第10000台下线仪式在安徽合肥尊界超级工厂举行。活动现场还举行了尊界S800车主交付仪式,项兴初、余承东向车主代表交付新车钥匙,将现场气氛推向高潮。这第10000辆尊界S800的车主,是功夫巨星李连杰。作为江汽集团…

作者头像 李华