
1. 项目概述与核心价值如果你和我一样对网页上那些弹窗、视频前贴片、以及页面角落里闪烁的横幅广告感到厌烦但又不想在每台设备、每个浏览器上都安装臃肿的广告拦截插件那么今天分享的这个方案或许能彻底改变你的家庭网络环境。这个方案的核心是利用一块小小的树莓派Raspberry Pi和一款名为 Pi-hole 的开源软件搭建一个网络级的广告拦截网关。简单来说它就像在你家网络的入口处设置了一位尽职尽责的“门卫”所有从你手机、电脑、平板甚至智能电视发出的网络请求都会先经过这位门卫的检查。如果请求的目标是已知的广告或追踪服务器门卫会直接说“此路不通”并返回一个空地址从而阻止广告内容的加载。整个过程发生在网络层面因此对家里所有连接Wi-Fi的设备都生效无需逐一配置。我选择树莓派作为硬件载体是因为它功耗极低常年运行电费几乎可忽略不计、性能足够、且非常稳定。而 Pi-hole 作为软件核心其拦截原理基于 DNS域名系统过滤这是一种非常高效且资源占用极低的方式。它不像浏览器插件那样需要解析和修改网页内容而是在域名解析这个更早的阶段就进行拦截因此速度更快兼容性也更好。经过我长达一年的实际部署家里的网络浏览体验得到了质的飞跃网页加载速度明显提升因为不需要等待那些体积庞大的广告资源移动设备续航也有所改善因为减少了不必要的网络请求和数据传输更重要的是全家人的网络隐私得到了更好的保护减少了许多隐蔽的用户行为追踪。无论你是对智能家居感兴趣的极客还是仅仅想为家人创造一个更干净、更快速网络环境的普通用户这个项目都极具实践价值。它不需要你具备高深的网络知识跟着下面的步骤你完全可以在一个下午的时间内亲手搭建起属于你自己的“网络净化中心”。接下来我将从设计思路、硬件准备、软件部署、到高级配置和问题排查为你完整拆解整个过程。2. 核心原理与方案设计思路拆解在动手之前我们有必要先搞清楚 Pi-hole 究竟是如何工作的以及为什么选择这样的技术方案。理解原理不仅能让你在配置时更有把握也能在出现问题时快速定位根源。2.1 DNS互联网的“电话簿”与拦截的关键你可以把互联网想象成一个巨大的城市每个网站如 google.com就是一栋大楼。我们人类习惯用大楼的名字域名来寻找它但网络设备如你的电脑只认识门牌号IP地址如 142.250.185.78。DNS域名系统的作用就是担任这个城市的“电话簿”或“问讯处”。当你在浏览器输入“google.com”时你的设备会向一个预设的 DNS 服务器通常是你的网络运营商提供的发起查询“请问 google.com 的地址是多少” DNS 服务器查找到对应的 IP 地址后返回给你的设备你的设备才能找到并访问谷歌的服务器。Pi-hole 的巧妙之处在于它将自己插入到这个查询流程中扮演一个“智能代理”的角色。具体流程如下角色转变你将家庭路由器或单个设备的 DNS 服务器地址设置为树莓派运行 Pi-hole的 IP 地址。请求拦截当家中任何设备试图访问一个网站时域名查询请求会首先发送到 Pi-hole。名单核对Pi-hole 拥有一份庞大的、不断更新的“广告与追踪域名黑名单”。它会立即检查请求的域名是否在黑名单中。决策与响应如果在黑名单中Pi-hole 不会向真正的公共 DNS 服务器如 Google DNS、Cloudflare DNS转发这个查询而是直接返回一个无效的 IP 地址通常是0.0.0.0或::即“本机”或“空地址”。你的设备收到这个无效地址后无法建立连接广告或追踪脚本自然就无法加载。如果不在黑名单中Pi-hole 会将这个查询正常转发给你预先设置好的上游公共 DNS 服务器如8.8.8.8获取到正确的 IP 地址后再返回给你的设备访问正常进行。这个过程对用户是完全透明的。你浏览网页时只会发现广告区域变成了空白或者加载失败而网页主体内容完全不受影响甚至加载更快了。2.2 为什么选择树莓派 Pi-hole 方案市面上有很多广告拦截方案比如浏览器插件AdBlock Plus, uBlock Origin、路由器刷机如安装 AdGuard Home 的固件等。我选择这个组合是基于以下几个核心考量独立与稳定树莓派是一个独立的硬件设备。这意味着它的运行不会占用你主力电脑的资源也不会因为路由器固件升级或重置而丢失配置。一旦设置完成它就可以7x24小时安静地待在角落工作提供持续稳定的服务。网络级全覆盖这是最大的优势。它保护的是整个网络而不仅仅是某一台设备上的某一个浏览器。家中的智能手机、平板、智能电视、游戏机乃至物联网设备如智能音箱只要连接了你的Wi-Fi其广告请求都会被拦截。这对于拥有多台设备的家庭来说管理成本极低。低功耗与低成本树莓派功耗通常只有3-5瓦比一个LED灯泡还省电常年开机也几乎不产生电费。一套基础树莓派套件的成本远低于购买一台高性能路由器来刷机也省去了订阅某些商业广告拦截服务的费用。高可控性与透明度Pi-hole 提供了非常直观的 Web 管理界面。你可以实时看到网络中被拦截的查询数量、哪些域名被拦截了、哪些设备请求最多。你还可以轻松地管理黑白名单如果某个正常网站被误杀你可以将其加入白名单如果你想屏蔽某个特定域名手动加入黑名单即可。开源与社区驱动Pi-hole 是开源项目其核心的广告域名列表由全球社区共同维护和更新能有效应对不断变化的广告投放技术。这比单纯依靠某个浏览器插件的过滤列表要全面和及时得多。基于以上设计思路我们的实施方案就非常清晰了准备一台树莓派安装操作系统部署 Pi-hole 软件然后调整家庭网络设置让所有设备的流量都经过它进行DNS查询。3. 硬件准备与系统初始化工欲善其事必先利其器。虽然这个项目对硬件要求不高但选择合适的部件并正确初始化系统是确保长期稳定运行的基础。3.1 硬件采购清单与选型建议你需要准备以下硬件。我以最通用的树莓派 4B2GB内存版为例进行说明这也是目前性价比和可用性最好的选择。当然如原文所述树莓派 3B/3B 乃至更新的型号都能完美运行。组件规格要求选型理由与注意事项树莓派主板Raspberry Pi 4B (2GB RAM) 或 3B4B性能更强未来扩展性更好。2GB内存对于Pi-hole绰绰有余。3B也完全足够且更省电。Micro SD 卡Class 10 / A1或更高容量 ≥16GBPi-hole对磁盘IO要求不高但系统运行和日志需要稳定存储。强烈建议选择知名品牌如SanDisk, Samsung劣质卡易导致系统崩溃。32GB是性价比之选。电源适配器官方或认证的 5V/3A USB-C 电源Pi 4或 5V/2.5A Micro USB 电源Pi 3供电稳定是重中之重非标电源可能导致树莓派重启、SD卡损坏。尤其是Pi 4务必使用3A电源。散热方案金属散热片或小型散热风扇外壳Pi-hole负载虽轻但长期运行良好的散热能延长设备寿命避免因过热降频。一个带散热风扇的亚克力外壳是很好的投资。网络连接千兆网线推荐或 可靠的Wi-Fi网络有线连接Ethernet是首选它提供最稳定、最低延迟的网络连接避免因Wi-Fi波动影响全家上网体验。其他初次安装用HDMI线、显示器、USB键鼠仅用于第一次系统安装和基础配置。配置完成后树莓派可以“无头”Headless运行无需外接显示设备。提示如果你没有多余的显示器和键鼠也可以采用“无头安装”方式即在写入系统的SD卡根目录预先放置一个名为ssh的空文件启用SSH和一个包含Wi-Fi配置的wpa_supplicant.conf文件让树莓派启动后自动连接网络然后通过同一局域网内的电脑用SSH远程登录进行配置。这对于有经验的用户更便捷。3.2 操作系统安装与基础配置我们将使用官方的“Raspberry Pi OS Lite”无桌面版因为它更轻量资源占用更少非常适合作为服务器长期运行。下载与烧录系统镜像访问树莓派官网下载 “Raspberry Pi OS (Legacy, 32-bit) Lite” 镜像。选择Lite版本是为了精简。使用烧录工具将镜像写入SD卡。Windows用户推荐使用 Raspberry Pi Imager这款官方工具非常易用。在启动Imager后它甚至提供了“高级选项”按CtrlShiftX可以让你在烧录前就预先设置主机名、开启SSH、配置Wi-Fi和地区极大地简化了初始化流程。首次启动与安全加固将烧录好的SD卡插入树莓派连接网线、电源和显示器如果采用无头模式则跳过显示器。树莓派启动后默认用户名是pi密码是raspberry。第一步必须是修改这个默认密码打开终端输入命令sudo raspi-config进入配置工具。选择System Options-Password来修改pi用户的密码设置一个强密码。选择System Options-Hostname修改设备名例如改为pihole方便在网络中识别。选择Localisation Options正确设置时区 (Timezone) 和键盘布局 (Keyboard)。在Interface Options中确保SSH是启用状态。配置完成后选择Finish并重启。系统更新与静态IP地址分配关键步骤重启后登录首先更新系统软件包列表并升级现有软件。在终端中依次执行sudo apt update sudo apt full-upgrade -y为树莓派设置静态IP地址是至关重要的一步。因为Pi-hole将作为DNS服务器它的IP地址必须固定不变否则一旦IP变动所有指向它的设备都会无法解析域名。设置静态IP有两种主要方式在路由器上绑定或在树莓派系统内配置。我强烈推荐在路由器上做DHCP静态绑定这样管理更集中。登录你家路由器的管理后台通常是192.168.1.1或192.168.0.1找到“DHCP服务器”或“静态地址分配”选项将树莓派的MAC地址可通过终端输入ip a命令查看eth0或wlan0接口的link/ether值获得与一个固定的内网IP绑定例如192.168.1.100。记下这个IP后续会频繁用到。如果路由器不支持此功能则需要在树莓派上配置。编辑网络配置文件以有线网络为例sudo nano /etc/dhcpcd.conf在文件末尾添加以下内容根据你的网络环境修改interface eth0 static ip_address192.168.1.100/24 static routers192.168.1.1 static domain_name_servers192.168.1.1static ip_address: 你为树莓派设定的固定IP和子网掩码/24对应255.255.255.0。static routers: 你的网关地址通常是路由器的IP。static domain_name_servers: 这里可以先填路由器地址安装Pi-hole后会更改。按CtrlX然后按Y再按Enter保存退出。执行sudo reboot重启使配置生效。完成以上步骤你就拥有了一个基础系统更新完毕、拥有固定IP地址的树莓派为安装Pi-hole打下了坚实的基础。4. Pi-hole 部署与核心配置详解核心环节来了。我们将通过官方的一键安装脚本部署Pi-hole这个过程基本上是交互式的但理解每一步的选择至关重要。4.1 执行安装脚本与初始设置开始安装通过SSH或直接接显示器登录到你的树莓派。执行官方安装命令curl -sSL https://install.pi-hole.net | bash注意有些教程会加上sudo但脚本本身会在需要时提权。直接运行即可。如果网络环境特殊下载缓慢可以考虑先为终端配置代理。欢迎界面与网络接口选择脚本启动后会进入一个蓝色的文本界面。第一个重要选择是网络接口。如果你的树莓派通过网线连接选择eth0如果使用Wi-Fi则选择wlan0。再次强调为了稳定性强烈建议使用有线连接eth0。选择上游DNS提供商接下来脚本会列出多个上游DNS服务器供你选择。Pi-hole在放行非广告域名时需要向这些上游服务器查询真实的IP地址。这里的选择会影响解析速度、隐私和可靠性。我个人的选择偏好是Google (8.8.8.8 / 8.8.4.4)全球节点多解析速度快但隐私政策存在争议。Cloudflare (1.1.1.1 / 1.0.0.1)速度同样极快并且承诺更严格的隐私保护不记录用户查询数据是我目前的首选。OpenDNS (208.67.222.222 / 208.67.220.220)提供一些额外的安全过滤功能。你可以使用方向键和空格键选择多个。我通常只选择一个可靠的比如 Cloudflare。选择后按OK。广告列表选择这是Pi-hole拦截能力的核心。脚本会提供几个默认的广告域名列表来源如 Steven Blacks list。建议全选以获取最广泛的拦截覆盖。这些列表会定期自动更新。协议与隐私设置IPv4 和 IPv6如果你的网络环境支持IPv6建议两者都勾选以确保兼容性。隐私模式脚本可能会询问是否开启隐私模式如 FTLDNS 的隐私级别。对于家庭用户选择默认或“非匿名”模式即可这有助于在Web管理界面看到查询来源是哪台设备发出的请求便于管理。Web管理界面与Web服务器当被问及是否安装Web管理界面时务必选择“是”。这是管理Pi-hole的主要方式。接着会问是否安装轻量级Web服务器lighttpd同样选择“是”。Pi-hole需要一个Web服务器来运行管理后台。查询日志脚本会询问是否记录所有查询。建议选择“是”。日志是排查问题、分析网络行为、发现误拦截的宝贵数据。不必过度担心隐私因为这些数据只存储在你的本地树莓派上。你可以后续在管理界面设置自动清理日志的时间。完成安装与记录关键信息安装过程会自动进行期间会下载列表、编译软件。完成后屏幕上会显示一个极其重要的信息汇总请务必立即用纸笔或手机拍照记录以下信息Pi-hole 的 IP 地址就是你为树莓派设置的静态IP如192.168.1.100。Web 管理后台的地址通常是http://你的树莓派IP/admin如http://192.168.1.100/admin。随机生成的管理员密码一串复杂的字符。这是你首次登录后台的凭证。记录好后按OK结束安装。Pi-hole服务已经自动运行。4.2 初步验证与登录管理后台验证服务状态在终端输入pihole status你应该能看到所有核心服务FTL DNS, Pi-hole Web Interface等都在正常运行显示为[✓]。登录Web后台在同一局域网内的任何一台电脑的浏览器中输入刚才记录的Web管理地址如http://192.168.1.100/admin。输入记录的密码即可进入Pi-hole炫酷的管理仪表盘。仪表盘概览登录后你会看到仪表盘上面显示了今日拦截的查询数量、被拦截的百分比、活跃客户端等实时信息。这意味着Pi-hole已经在工作了但目前它只处理直接指向它的DNS请求。我们下一步要让全家设备都用上它。5. 网络配置让全家设备享受无广告网络安装好Pi-hole只是完成了服务器端的部署接下来需要调整网络设置将DNS查询流量引导至Pi-hole。有以下几种配置方式推荐程度由高到低5.1 方案一在路由器上配置DNS首选一劳永逸这是最优雅、最彻底的方案。通过修改路由器的DHCP设置让路由器在给家中设备分配IP地址时同时告知它们将Pi-hole作为DNS服务器。登录路由器管理后台浏览器输入路由器IP通常是192.168.1.1输入管理员账号密码。寻找DHCP设置通常在“局域网设置”、“网络设置”或“DHCP服务器”选项中。修改DNS服务器地址找到“主DNS服务器”和“备用DNS服务器”或类似字段。将主DNS服务器设置为你的树莓派IP如192.168.1.100。备用DNS服务器可以留空或者设置为一个公共DNS如1.1.1.1或8.8.8.8作为备用以防Pi-hole宕机时设备仍有网络。保存并重启路由器保存设置路由器可能会提示重启。重启后路由器会生效新配置。更新客户端家中已连接的设备需要重新连接Wi-Fi或重启以获取新的DNS配置。新加入的设备会自动使用Pi-hole作为DNS。实操心得不同品牌路由器界面差异很大。如果找不到确切选项可以搜索“你的路由器型号 设置DNS”来查找教程。这是最关键的一步成功后全家所有设备包括访客的手机都将自动受到保护。5.2 方案二在单个设备上手动配置DNS如果路由器无法修改或者你只想在特定设备如你的工作电脑上测试可以采用此方案。Windows控制面板 - 网络和共享中心 - 更改适配器设置 - 右键当前网络连接 - 属性 - 双击“Internet协议版本 4 (TCP/IPv4)” - 选择“使用下面的DNS服务器地址” - 填入Pi-hole的IP。macOS系统偏好设置 - 网络 - 选择当前连接 - 高级 - DNS - 点击“”添加Pi-hole的IP地址并将其拖到列表顶部。Android/iOS在Wi-Fi设置中长按或点击当前连接的Wi-Fi网络 - 修改网络 - 高级选项 - 将IP设置从“DHCP”改为“静态”注意这需要你手动填写IP、网关等信息容易出错。更推荐使用原文提到的“DNS Changer”类App它可以在不修改Wi-Fi静态IP的情况下仅覆盖系统的DNS设置更为方便安全。5.3 方案三将Pi-hole设置为路由器的DHCP服务器进阶如果你的路由器功能极其简陋无法自定义DHCP下发的DNS你可以选择关闭路由器的DHCP功能让Pi-hole来充当整个网络的DHCP服务器。这样Pi-hole在分配IP的同时自然地将自己设为DNS服务器。在Pi-hole管理后台进入Settings-DHCP。勾选Enable DHCP server并设置一个与路由器同网段但不冲突的IP地址池范围例如路由器IP是192.168.1.1可设置池为192.168.1.50到192.168.1.150。将路由器管理后台中的DHCP服务器功能关闭。重启网络设备。注意事项此方案需要一定的网络知识。务必确保只有一个DHCP服务器在工作否则会导致IP地址冲突网络瘫痪。建议普通用户在尝试前先备份好路由器和Pi-hole的配置。6. 管理、优化与高级技巧Pi-hole运行起来后管理后台是你进行微调和优化的核心工具。下面介绍几个最常用的功能。6.1 黑白名单管理处理误杀与自定义屏蔽白名单Whitelist如果你发现某个常用网站或服务出现异常如图片不显示、功能失效很可能是其某个必要域名被误拦截。在仪表盘或Query Log页面你可以看到所有被拦截的请求。找到可疑的域名点击其右边的按钮选择“Whitelist”即可。更稳妥的方式是进入Whitelist页面手动添加确切的域名。常见需要白名单的域名s.youtube.comYouTube 进度条预览www.google-analytics.com如果你需要某些网站的统计功能以及一些在线支付或登录验证的域名。黑名单Blacklist如果你想屏蔽某个特定网站如社交媒体、视频站或者已知的恶意域名可以在此添加。支持通配符例如*.adsite.com会屏蔽该域名下所有子域。6.2 仪表盘与日志分析仪表盘首页的图表直观展示了拦截效果。关注“Queries Blocked”比例通常在20%-40%之间都属于正常且高效的范围。查询日志Query Log这是强大的排错工具。你可以实时看到所有DNS请求来自哪个客户端是被放行绿色还是被拦截红色。你可以在这里快速定位问题并将域名加入黑白名单。6.3 更新与维护更新广告列表Pi-hole不会自动更新广告列表。你需要定期建议每周执行更新。可以在Web后台点击“Tools” - “Update Gravity”或在终端执行pihole -g。更新Pi-hole核心当有新版本发布时在终端执行pihole -up即可一键更新。备份设置在Settings-Teleporter中你可以导出所有配置白名单、黑名单、设置等方便在重装系统或迁移到新设备时快速恢复。6.4 为Pi-hole设置备用上游DNS这是一个重要的可靠性技巧。在Settings-DNS页面你可以在“Upstream DNS Servers”部分除了主用的DNS如Cloudflare再勾选一个备用的如Google DNS。这样当Pi-hole向上游查询时如果第一个服务器无响应会自动尝试第二个增强了网络的鲁棒性。7. 常见问题排查与解决方案实录即使按照步骤操作也可能会遇到一些问题。以下是我在实践中遇到的一些典型情况及解决方法。7.1 问题设备无法上网或网页打开缓慢可能原因1Pi-hole服务未运行。排查在树莓派终端输入pihole status检查服务状态。或者尝试在浏览器访问Pi-hole的管理页面看是否能打开。解决如果服务停止尝试重启sudo pihole restart。检查树莓派是否正常联网ping 1.1.1.1。可能原因2设备未使用Pi-hole作为DNS。排查在出现问题的设备上打开命令提示符Windows或终端macOS/Linux输入nslookup google.com。查看返回的服务器地址是否是Pi-hole的IP。解决确认路由器DHCP设置或设备手动DNS设置正确。尝试在设备上ipconfig /release和ipconfig /renewWindows或重启网络服务来刷新DHCP租约。可能原因3上游DNS服务器故障或网络不佳。排查登录Pi-hole管理后台在“仪表盘”或“查询日志”中查看是否有大量超时或失败的查询。解决在Pi-hole设置中更换更稳定的上游DNS服务器如从Google DNS换到Cloudflare DNS或同时设置多个备用。7.2 问题某些App无法正常工作或加载内容可能原因App依赖的域名被广告列表误拦截。排查打开Pi-hole的查询日志让出问题的App操作一下观察日志中是否有被拦截红色的、看起来与App功能相关的域名。解决将该域名加入白名单。对于移动App有时需要拦截的域名比较隐蔽需要耐心查找。一些金融类、视频类App的CDN域名容易被误杀。7.3 问题管理后台密码忘记解决通过SSH登录树莓派执行命令pihole -a -p来设置新的管理密码。7.4 问题拦截效果似乎不明显可能原因1广告列表未更新或未启用足够多的列表。解决在“Group Management” - “Adlists”中检查列表是否启用并状态正常。执行一次手动更新pihole -g。可能原因2广告采用非DNS方式加载。说明Pi-hole主要拦截基于域名的广告。有些广告可能直接使用IP地址嵌入或与网页内容来自同一域名如YouTube视频前贴片广告这类广告Pi-hole无法拦截。此时可以配合浏览器插件如uBlock Origin进行补充实现双重过滤。7.5 性能与资源监控树莓派运行Pi-hole的资源占用非常低。你可以通过htop命令查看CPU和内存使用情况通常内存占用在100MB左右CPU几乎无波动。确保SD卡有足够剩余空间df -h命令查看定期清理旧的日志文件在Web界面设置日志保留天数。经过以上步骤你应该已经成功搭建并配置好了自己的网络级广告拦截系统。这个由树莓派和Pi-hole构建的小盒子将会成为你家庭网络中一个默默无闻却贡献巨大的守护者。它不仅屏蔽了广告更在某种程度上提升了网速、节约了流量、并保护了隐私。整个部署过程从硬件准备到软件调试是一次非常有趣的实践能让你对家庭网络架构有更深的理解。如果在配置过程中遇到任何独特的问题多利用Pi-hole活跃的社区论坛和详细的官方文档几乎所有你能想到的问题都能在那里找到答案。