1. 项目概述与核心价值如果你和我一样早已厌倦了网页上那些弹窗、视频前贴片、以及侧边栏里那些精准得有点吓人的商品推荐广告那么今天聊的这个项目绝对值得你花上一个下午的时间折腾一下。我说的就是利用一块树莓派Raspberry Pi来搭建一个叫Pi-Hole的“网络守门员”。这玩意儿本质上是一个运行在你家庭网络内部的、开源的DNS过滤服务器。它的工作原理非常巧妙当你的手机、电脑、智能电视想访问一个网站时首先会向DNS服务器询问“这个网址的IP地址是什么”。Pi-Hole就扮演了这个DNS服务器的角色但它手里有一份社区维护的、包含数十万条记录的“广告域名黑名单”。如果某个请求的域名在黑名单上比如某个广告服务器的域名Pi-Hole就直接告诉你的设备“此路不通”广告内容压根就不会开始下载。这种在DNS层面的拦截效果是全局性的意味着你家里所有连上Wi-Fi的设备从那一刻起浏览网页、使用App时大部分广告都会神奇地消失而且因为广告没有被加载你的网络带宽也得到了节省页面打开速度往往还会快上那么一点。这个方案特别适合家庭网络环境、小型工作室或者对网络隐私有要求的朋友。你不需要在每台手机、电脑上安装各种广告屏蔽插件也不需要去折腾路由器里那些复杂的设置当然后期优化会涉及一点。一台树莓派一张SD卡一根网线加上一点耐心就能打造一个更干净、更快速、也更私密的家庭网络环境。我自己的Pi-Hole已经稳定运行了超过两年拦截了上百万次广告请求实实在在地提升了全家人的上网体验。接下来我就把从硬件准备、系统安装、Pi-Hole配置到后期优化的完整过程以及我踩过的那些坑和总结的经验毫无保留地分享给你。2. 硬件准备与系统选型解析2.1 硬件清单与选购建议搭建Pi-Hole的门槛很低核心设备就是一台树莓派。但具体选哪款里面有点讲究。树莓派主机理论上从树莓派3B开始往后的型号包括3B 4B 5 以及Zero 2 W都能胜任Pi-Hole的工作因为DNS过滤对计算资源消耗极低。我的个人建议是首选树莓派4B2GB内存版这是性价比和性能最平衡的选择。它拥有千兆以太网口能确保DNS查询响应速度最快USB 3.0接口在未来如果你想挂载移动硬盘做网络存储如Nextcloud时也更有优势。2GB内存对于Pi-Hole绰绰有余甚至还能同时运行其他轻量服务。备选树莓派Zero 2 W如果你追求极致的低功耗和迷你体积这是个好选择。它需要额外购买一个USB转以太网适配器来获得有线连接强烈推荐使用有线连接稳定性远胜Wi-Fi。它的性能运行Pi-Hole也完全足够。不推荐纯Wi-Fi连接的型号如Zero WDNS服务是网络的基础稳定性至关重要。Wi-Fi连接可能因信号波动导致偶尔的DNS查询超时进而使设备网络短暂卡顿。因此务必使用有线以太网连接你的树莓派。Micro SD卡建议选择至少16GB Class 10或以上速度 A1/A2应用性能等级的知名品牌卡。系统运行和日志写入对卡的持续读写性能有要求一张好卡能避免系统运行缓慢或卡顿。32GB是更舒适的选择。电源适配器务必使用官方或认证的、电流输出稳定的5V电源。树莓派4B建议使用5V/3A Zero 2W使用5V/2.5A。供电不足会导致树莓派运行不稳定、频繁重启这是很多奇怪问题的根源。网线一根普通的Cat 5e或Cat 6网线即可连接树莓派和你的路由器。外壳与散热一个塑料外壳有助于防尘对于树莓派4B或5强烈建议配备散热片或小型风扇。虽然Pi-Hole负载不高但良好的散热能保障设备7x24小时长期稳定运行。注意在开始前请确保你能物理接触到你的家庭路由器光猫因为后续需要进入路由器管理界面进行一些设置。2.2 操作系统选择与“无头模式”安装Pi-Hole推荐运行在轻量级的Linux系统上。对于树莓派最自然的选择是Raspberry Pi OS原名Raspbian。这里我们选择Raspberry Pi OS Lite版本它是一个“无头”Headless系统即没有图形桌面环境只有命令行界面。这能最大程度减少系统资源占用让树莓派专注于DNS服务。下载系统镜像 访问树莓派官网的下载页面找到“Raspberry Pi OS (Legacy)”分类下的“Raspberry Pi OS Lite”版本进行下载。选择“Legacy”版本是因为它基于更稳定的Debian旧版分支对老旧软件兼容性更好作为服务器系统更合适。烧录镜像到SD卡 你需要使用一个镜像烧录工具。Etcher是跨平台Windows/macOS/Linux且极其易用的选择。将SD卡插入电脑。打开Etcher点击“Flash from file”选择你下载的.img.xz压缩镜像文件。点击“Select target”选择你的SD卡驱动器。最后点击“Flash!”开始烧录。这个过程会格式化SD卡请确认没有重要数据。启用SSH关键步骤 烧录完成后在电脑上再次打开SD卡的可读分区通常名为boot。在根目录下新建一个名为ssh的空文件注意没有后缀名。对于Windows用户你可以用记事本新建一个文件保存时文件名输入ssh.系统会自动去掉.txt后缀或者直接打开命令行在boot盘符下执行type nul ssh。这个文件的存在告诉树莓派在第一次启动时自动开启SSH服务这样我们才能通过网络连接它无需连接显示器和键盘。首次启动与网络连接将烧录好的SD卡插入树莓派连接网线和电源。等待树莓派启动约1-2分钟。现在你需要知道它的IP地址。有以下几种方法路由器管理界面登录你的路由器后台通常地址是192.168.1.1或192.168.0.1账号密码可能在路由器背面在“连接设备”或“DHCP客户端列表”里查找名为raspberrypi的设备记下其IP地址。使用网络扫描工具在电脑上使用Advanced IP ScannerWindows或Angry IP Scanner跨平台等工具扫描你的局域网段如192.168.1.1-255寻找主机名包含raspberry的设备。使用手机App如Fing等网络工具也能很方便地发现树莓派。3. Pi-Hole核心安装与初始配置3.1 通过SSH连接与系统更新获取到树莓派的IP地址假设为192.168.1.100后就可以用SSH客户端连接了。Windows用户可以使用PuTTY或在Windows 10/11的PowerShell或CMD中直接使用ssh命令。macOS/Linux用户直接打开终端Terminal。在命令行中输入ssh pi192.168.1.100默认密码是raspberry。首次连接会提示确认主机密钥输入yes即可。登录后第一件事是更新系统软件包确保一切处于最新状态sudo apt update sudo apt upgrade -y这个过程可能需要几分钟取决于网络速度。3.2 一键安装Pi-HolePi-Hole提供了极其方便的自动化安装脚本。在SSH会话中直接运行以下命令curl -sSL https://install.pi-hole.net | bash这个命令会下载安装脚本并动执行。你会看到一个基于字符界面的安装向导。重要提示有些朋友可能会对“管道| bash”这种直接运行远程脚本的方式有安全顾虑这是合理的。Pi-Hole也提供了更安全的安装方式先下载脚本审查后再运行。wget -O basic-install.sh https://install.pi-hole.net # 此时你可以用 cat basic-install.sh 查看一下脚本内容 sudo bash basic-install.sh3.3 安装向导关键选项解析安装脚本会引导你完成一系列配置以下是几个关键节点的选择建议上游DNS提供商选择安装程序会询问你使用哪个上游DNS服务器。你的Pi-Hole在拦截广告域名后对于正常的域名仍需向更上游的DNS服务器如你的ISP提供的或公共DNS查询。强烈建议不要使用ISP网络服务商的默认DNS。它们可能记录你的查询记录有时解析速度也不理想。推荐选择 Cloudflare 或 Google 的公共DNS。我个人偏好Cloudflare因为它以隐私保护承诺不记录用户查询数据和速度快著称。在列表中通常选择Cloudflare或手动输入其IP地址1.1.1.1和1.0.0.1。Google DNS (8.8.8.8,8.8.4.4) 也是可靠的选择。协议选择接下来会让你选择协议。务必同时勾选 IPv4 和 IPv6如果支持。即使你现在没有IPv6网络勾选上也无妨为未来兼容性做准备。管理后台密码设置安装过程最后脚本会生成一个随机密码用于访问Pi-Hole的Web管理界面。务必立即复制并保存好这个密码它只会显示一次。如果你错过了可以稍后通过命令pihole -a -p来重置。静态IP地址设置至关重要安装脚本会询问是否将当前IP设置为静态。这里一定要选择“是”DNS服务器必须有一个固定的IP地址否则一旦重启后IP变了所有指向它的设备都会无法上网。安装脚本会自动帮你配置树莓派系统的静态IP。安装完成后脚本会输出总结信息其中包含你的Pi-Hole管理后台的访问地址通常是http://你的树莓派IP/admin例如http://192.168.1.100/admin。4. 网络配置让所有设备自动使用Pi-Hole安装完成只是第一步。现在Pi-Hole只在树莓派本机上运行你家庭网络里的其他设备并不知道它的存在。我们需要告诉路由器“以后所有设备的DNS查询都转发给这个树莓派”。有两种主流方法推荐第二种。4.1 方法一手动配置每个设备不推荐你可以在每台手机、电脑的网络设置里手动将DNS服务器地址设置为树莓派的IP。这种方法适用于测试或者仅对少数设备生效。但对于智能电视、游戏机、物联网设备等操作起来非常麻烦且无法覆盖新加入的设备。4.2 方法二在路由器上配置DHCP选项推荐这是实现全网覆盖的关键。DHCP是路由器自动给联网设备分配IP地址的服务。我们可以修改DHCP设置让它在下发IP地址的同时也告诉设备“DNS服务器是192.168.1.100你的Pi-Hole IP”。登录路由器管理后台在浏览器输入路由器地址如192.168.1.1使用管理员账号密码登录。寻找DHCP设置通常在“局域网设置”、“网络设置”或“DHCP服务器”选项下。修改DNS服务器地址找到“首选DNS服务器”和“备用DNS服务器”可能叫法不同将其都设置为你树莓派的IP地址例如192.168.1.100。有些路由器允许设置两个不同的DNS备用可以填一个公共DNS如1.1.1.1作为备份但主备一致也没问题。保存并重启路由器保存设置并重启路由器使其生效。生效方式对于已经连接在网的设备你需要重启设备的网络连接关闭再打开Wi-Fi或直接重启设备以获取新的DNS配置。新加入的设备会自动获得正确的DNS设置。实操心得不同品牌路由器界面差异很大。如果找不到确切选项可以尝试搜索“你的路由器型号 修改DHCP DNS”。这是整个设置中最可能遇到困难的一步但一旦完成就是一劳永逸。4.3 方法三使用Pi-Hole内置的DHCP服务器高级选项如果你的路由器非常老旧不支持修改DHCP下发的DNS或者你想获得更精细的设备管理能力比如在Pi-Hole后台直接看到每个设备的主机名和查询记录可以启用Pi-Hole自带的DHCP服务器。在Pi-Hole管理后台进入“Settings” - “DHCP”选项卡。勾选“Enable DHCP server”。设置一个与现有路由器DHCP不冲突的IP地址分配范围例如路由器分配192.168.1.100-200Pi-Hole就分配192.168.1.50-99。最重要的一步必须回到路由器设置中关闭路由器自身的DHCP服务器功能。否则网络里会有两个DHCP服务器打架导致设备无法正常获取IP。这种方法功能更强大但操作更复杂且一旦Pi-Hole关机整个网络的DHCP服务就中断了。对于大多数家庭用户方法二修改路由器DHCP DNS是稳定性和简便性最佳的选择。5. 管理后台详解与广告列表优化5.1 初识管理后台在浏览器打开http://你的树莓派IP/admin用安装时设置的密码登录你就进入了Pi-Hole的仪表盘。这里信息非常丰富顶部概览显示当前状态启用/禁用、已拦截的DNS查询总数、查询总数、拦截百分比等。查询类型分布直观展示各类DNS请求的比例。最近查询/最近拦截实时滚动显示网络内的DNS活动。Top Clients显示哪个设备发出的查询最多。Top Domains / Top Ads显示被查询最多和被拦截最多的域名。5.2 添加第三方广告域名列表强化拦截能力Pi-Hole安装后自带一个基础的拦截列表但为了达到最佳效果我们需要添加一些社区维护的高质量列表。进入管理后台的 “Group Management” - “Adlists”。 你会看到一个默认列表。点击“Add a new adlist”来添加更多。以下是我长期使用、效果显著且冲突较少的几个列表URLSteven Black 的统一主机列表这是一个聚合了多个优质源的列表。https://raw.githubusercontent.com/StevenBlack/hosts/master/hostsAdGuard DNS 过滤器来自知名广告拦截服务商。https://v.firebog.net/hosts/AdguardDNS.txtEasyList EasyPrivacy这是浏览器插件uBlock Origin等使用的核心列表对网页广告拦截效果极佳。https://v.firebog.net/hosts/Easylist.txt https://v.firebog.net/hosts/Easyprivacy.txt添加完URL后回到仪表盘点击“Tools” - “Update Gravity”。Gravity是Pi-Hole的域名列表数据库点击更新会让它下载并合并你新添加的所有列表。这个过程可能需要几分钟列表总数可能会从默认的10万增长到100万。注意事项不是列表越多越好过多的、质量不高的列表可能会导致误拦截将正常的网站如一些小众的软件更新服务器、企业内部服务也屏蔽掉。建议从上述推荐的列表开始观察几天。如果发现某个常用网站或服务异常再考虑排查和调整列表。5.3 白名单与黑名单管理误拦截在所难免。当发现某个网站功能异常比如无法录、图片不显示、按钮点击无效时首先可以尝试在Pi-Hole仪表盘临时禁用拦截点击顶部“Disable”按钮选择禁用5分钟。如果网站立刻恢复正常说明问题出在Pi-Hole的拦截上。查询日志定位问题域名在“Query Log”页面找到对应设备你的电脑的查询记录。寻找状态为“Blocked”红色且时间点与访问网站吻合的域名。这些就是被误杀的“嫌疑人”。添加白名单进入“Whitelist”页面将确认是误拦截的域名添加进去。例如如果发现analytics.google.com被拦截导致某个网站统计出错而你并不介意可以将其加入白名单。Pi-Hole也支持通配符如*.google-analytics.com。谨慎使用黑名单如果你发现某个漏网之鱼的广告域名可以手动将其加入“Blacklist”。但通常社区列表已经足够强大手动添加的需求不大。6. 高级功能与日常维护6.1 设置上游DNS-over-TLS/HTTPS提升隐私默认情况下Pi-Hole与上游DNS服务器如Cloudflare之间的通信是明文的理论上你的ISP仍然可以看到你访问了哪些网站域名。为了进一步增强隐私可以配置DNS-over-TLS (DoT) 或 DNS-over-HTTPS (DoH)对这段通信进行加密。这需要在树莓派上安装一个额外的软件如cloudflared或stubby并修改Pi-Hole的上游DNS设置为指向本地的这个加密代理。由于步骤稍复杂且对绝大多数家庭用户来说使用可信的公共DNS如Cloudflare已能提供足够的隐私保护这里不做展开。但对于隐私要求极高的用户这是一个值得研究的进阶方向。6.2 定期更新与备份更新Pi-Hole核心与列表 Pi-Hole的更新非常方便。在SSH中执行以下命令即可更新核心程序pihole -up更新广告域名列表Gravitypihole -g你可以将这些命令加入树莓派的定时任务Cron实现自动更新。例如每周日凌晨3点自动更新# 编辑root用户的cron任务 sudo crontab -e # 在文件末尾添加 0 3 * * 0 pihole -up 15 3 * * 0 pihole -g备份配置 在Pi-Hole管理后台的“Settings” - “Teleporter”页面你可以一键导出所有设置白名单、黑名单、广告列表、DHCP设置等。定期下载这个备份文件并妥善保存以后更换树莓派或重装系统时可以快速恢复。6.3 监控与故障排查查看仪表盘定期查看仪表盘关注拦截比例和Top Clients了解网络活动是否正常。日志分析Query Log是强大的排查工具。如果某个设备突然上不了网可以查看其查询记录是否被大量拦截或者是否根本没有查询请求可能是网络连接问题。最简单的测试命令 在电脑的命令行中使用nslookup或dig命令测试DNS解析是否正常工作。nslookup doubleclick.net如果返回的地址是0.0.0.0或::说明这个广告域名已被Pi-Hole成功拦截。如果解析出一个正常的IP地址则说明它不在拦截列表中或列表需要更新。7. 常见问题与解决方案实录即使按照指南操作也可能会遇到一些问题。以下是我和社区里常见的一些“坑”及其解决方法。问题现象可能原因排查步骤与解决方案设备无法获取IP地址无法上网1. 路由器DHCP与Pi-Hole DHCP冲突。2. 网络连接故障。1.确保只启用一个DHCP服务器检查路由器DHCP是否关闭如果用了Pi-Hole DHCP或检查Pi-Hole DHCP是否关闭如果用了路由器DHCP。2. 重启路由器和树莓派。3. 为设备手动设置一个IP地址和DNSPi-Hole IP进行测试。可以上微信/QQ但打不开网页DNS解析失败。设备没有使用Pi-Hole作为DNS。1. 在设备上检查获得的DNS服务器地址是否正确指向Pi-Hole IP。2. 在路由器设置中确认DHCP下发的DNS已正确修改。3. 重启设备的网络连接。特定网站完全无法访问或功能异常该网站的必要域名被广告列表误拦截。1. 在Pi-Hole管理台临时禁用拦截测试网站是否恢复。2. 通过Query Log找到被拦截的疑似域名。3. 将该域名添加到白名单Whitelist。Pi-Hole管理后台无法访问1. Pi-Hole服务未运行。2. 防火墙阻止了80端口。3. IP地址变了。1. SSH登录树莓派运行pihole status检查服务状态。2. 运行pihole restartdns重启服务。3. 检查树莓派当前IPhostname -I。4. 树莓派防火墙一般默认关闭可运行sudo ufw status确认。拦截效果不明显仍有广告1. 广告列表未更新或未生效。2. 广告采用硬编码IP或新型反广告屏蔽技术。3. 设备使用了DoH/DoT绕过了Pi-Hole。1. 更新Gravity列表 (pihole -g)。2. 检查仪表盘确认拦截查询数在增加。3. 对于YouTube等谷歌系应用的部分广告Pi-Hole可能无法完全屏蔽需配合浏览器插件。4.检查设备DNS设置确保手机、电脑没有开启“私人DNS”Android或“加密DNS”iOS/macOS/Windows这些功能会使用硬编码的DoH服务器绕过本地Pi-Hole。这是目前最常见的原因树莓派运行一段时间后变卡或失联1. SD卡质量差或寿命将至。2. 供电不足。3. 散热不良导致CPU降频。1. 使用df -h检查磁盘空间使用dmesg查看是否有磁盘错误日志。2.确保使用足额电流的优质电源。3. 触摸树莓派芯片是否烫手改善散热环境。4. 考虑将日志写入频率调低或使用USB硬盘启动系统以保护SD卡。关于“私人DNS”或“加密DNS”的特别提醒现代操作系统如Android 9、iOS 14、Windows 11、macOS都内置了加密DNS功能。如果用户在设备上手动开启了这些功能例如Android的“私人DNS”设置为dns.google那么该设备的所有DNS查询将直接加密发送到谷歌等服务器完全绕过你局域网内的Pi-Hole。这是导致Pi-Hole在某些设备上“失效”的头号原因。你需要指导家人关闭这些设置或者通过路由器防火墙规则阻止对外部DoH/DoT端口的访问更高级的方法。搭建并维护好一个Pi-Hole就像是给你的家庭网络请了一位默默无闻的清洁工。它不会增加任何操作负担却能在后台持续工作过滤掉大量的网络噪音。我最享受的时刻就是在朋友来家做客惊讶地问“你家Wi-Fi怎么没广告”时轻描淡写地指一指角落里那个闪着灯的小盒子。从最初的尝鲜到如今成为不可或缺的网络基础设施这个过程带来的掌控感和实际体验的提升远超投入的那点时间和硬件成本。如果遇到问题Pi-Hole拥有非常活跃和友好的社区几乎你遇到的任何坑都能在论坛或GitHub的Issues里找到答案。祝你搭建顺利早日享受清爽的网络世界。
用树莓派搭建Pi-Hole:打造无广告家庭网络的完整指南
1. 项目概述与核心价值如果你和我一样早已厌倦了网页上那些弹窗、视频前贴片、以及侧边栏里那些精准得有点吓人的商品推荐广告那么今天聊的这个项目绝对值得你花上一个下午的时间折腾一下。我说的就是利用一块树莓派Raspberry Pi来搭建一个叫Pi-Hole的“网络守门员”。这玩意儿本质上是一个运行在你家庭网络内部的、开源的DNS过滤服务器。它的工作原理非常巧妙当你的手机、电脑、智能电视想访问一个网站时首先会向DNS服务器询问“这个网址的IP地址是什么”。Pi-Hole就扮演了这个DNS服务器的角色但它手里有一份社区维护的、包含数十万条记录的“广告域名黑名单”。如果某个请求的域名在黑名单上比如某个广告服务器的域名Pi-Hole就直接告诉你的设备“此路不通”广告内容压根就不会开始下载。这种在DNS层面的拦截效果是全局性的意味着你家里所有连上Wi-Fi的设备从那一刻起浏览网页、使用App时大部分广告都会神奇地消失而且因为广告没有被加载你的网络带宽也得到了节省页面打开速度往往还会快上那么一点。这个方案特别适合家庭网络环境、小型工作室或者对网络隐私有要求的朋友。你不需要在每台手机、电脑上安装各种广告屏蔽插件也不需要去折腾路由器里那些复杂的设置当然后期优化会涉及一点。一台树莓派一张SD卡一根网线加上一点耐心就能打造一个更干净、更快速、也更私密的家庭网络环境。我自己的Pi-Hole已经稳定运行了超过两年拦截了上百万次广告请求实实在在地提升了全家人的上网体验。接下来我就把从硬件准备、系统安装、Pi-Hole配置到后期优化的完整过程以及我踩过的那些坑和总结的经验毫无保留地分享给你。2. 硬件准备与系统选型解析2.1 硬件清单与选购建议搭建Pi-Hole的门槛很低核心设备就是一台树莓派。但具体选哪款里面有点讲究。树莓派主机理论上从树莓派3B开始往后的型号包括3B 4B 5 以及Zero 2 W都能胜任Pi-Hole的工作因为DNS过滤对计算资源消耗极低。我的个人建议是首选树莓派4B2GB内存版这是性价比和性能最平衡的选择。它拥有千兆以太网口能确保DNS查询响应速度最快USB 3.0接口在未来如果你想挂载移动硬盘做网络存储如Nextcloud时也更有优势。2GB内存对于Pi-Hole绰绰有余甚至还能同时运行其他轻量服务。备选树莓派Zero 2 W如果你追求极致的低功耗和迷你体积这是个好选择。它需要额外购买一个USB转以太网适配器来获得有线连接强烈推荐使用有线连接稳定性远胜Wi-Fi。它的性能运行Pi-Hole也完全足够。不推荐纯Wi-Fi连接的型号如Zero WDNS服务是网络的基础稳定性至关重要。Wi-Fi连接可能因信号波动导致偶尔的DNS查询超时进而使设备网络短暂卡顿。因此务必使用有线以太网连接你的树莓派。Micro SD卡建议选择至少16GB Class 10或以上速度 A1/A2应用性能等级的知名品牌卡。系统运行和日志写入对卡的持续读写性能有要求一张好卡能避免系统运行缓慢或卡顿。32GB是更舒适的选择。电源适配器务必使用官方或认证的、电流输出稳定的5V电源。树莓派4B建议使用5V/3A Zero 2W使用5V/2.5A。供电不足会导致树莓派运行不稳定、频繁重启这是很多奇怪问题的根源。网线一根普通的Cat 5e或Cat 6网线即可连接树莓派和你的路由器。外壳与散热一个塑料外壳有助于防尘对于树莓派4B或5强烈建议配备散热片或小型风扇。虽然Pi-Hole负载不高但良好的散热能保障设备7x24小时长期稳定运行。注意在开始前请确保你能物理接触到你的家庭路由器光猫因为后续需要进入路由器管理界面进行一些设置。2.2 操作系统选择与“无头模式”安装Pi-Hole推荐运行在轻量级的Linux系统上。对于树莓派最自然的选择是Raspberry Pi OS原名Raspbian。这里我们选择Raspberry Pi OS Lite版本它是一个“无头”Headless系统即没有图形桌面环境只有命令行界面。这能最大程度减少系统资源占用让树莓派专注于DNS服务。下载系统镜像 访问树莓派官网的下载页面找到“Raspberry Pi OS (Legacy)”分类下的“Raspberry Pi OS Lite”版本进行下载。选择“Legacy”版本是因为它基于更稳定的Debian旧版分支对老旧软件兼容性更好作为服务器系统更合适。烧录镜像到SD卡 你需要使用一个镜像烧录工具。Etcher是跨平台Windows/macOS/Linux且极其易用的选择。将SD卡插入电脑。打开Etcher点击“Flash from file”选择你下载的.img.xz压缩镜像文件。点击“Select target”选择你的SD卡驱动器。最后点击“Flash!”开始烧录。这个过程会格式化SD卡请确认没有重要数据。启用SSH关键步骤 烧录完成后在电脑上再次打开SD卡的可读分区通常名为boot。在根目录下新建一个名为ssh的空文件注意没有后缀名。对于Windows用户你可以用记事本新建一个文件保存时文件名输入ssh.系统会自动去掉.txt后缀或者直接打开命令行在boot盘符下执行type nul ssh。这个文件的存在告诉树莓派在第一次启动时自动开启SSH服务这样我们才能通过网络连接它无需连接显示器和键盘。首次启动与网络连接将烧录好的SD卡插入树莓派连接网线和电源。等待树莓派启动约1-2分钟。现在你需要知道它的IP地址。有以下几种方法路由器管理界面登录你的路由器后台通常地址是192.168.1.1或192.168.0.1账号密码可能在路由器背面在“连接设备”或“DHCP客户端列表”里查找名为raspberrypi的设备记下其IP地址。使用网络扫描工具在电脑上使用Advanced IP ScannerWindows或Angry IP Scanner跨平台等工具扫描你的局域网段如192.168.1.1-255寻找主机名包含raspberry的设备。使用手机App如Fing等网络工具也能很方便地发现树莓派。3. Pi-Hole核心安装与初始配置3.1 通过SSH连接与系统更新获取到树莓派的IP地址假设为192.168.1.100后就可以用SSH客户端连接了。Windows用户可以使用PuTTY或在Windows 10/11的PowerShell或CMD中直接使用ssh命令。macOS/Linux用户直接打开终端Terminal。在命令行中输入ssh pi192.168.1.100默认密码是raspberry。首次连接会提示确认主机密钥输入yes即可。登录后第一件事是更新系统软件包确保一切处于最新状态sudo apt update sudo apt upgrade -y这个过程可能需要几分钟取决于网络速度。3.2 一键安装Pi-HolePi-Hole提供了极其方便的自动化安装脚本。在SSH会话中直接运行以下命令curl -sSL https://install.pi-hole.net | bash这个命令会下载安装脚本并动执行。你会看到一个基于字符界面的安装向导。重要提示有些朋友可能会对“管道| bash”这种直接运行远程脚本的方式有安全顾虑这是合理的。Pi-Hole也提供了更安全的安装方式先下载脚本审查后再运行。wget -O basic-install.sh https://install.pi-hole.net # 此时你可以用 cat basic-install.sh 查看一下脚本内容 sudo bash basic-install.sh3.3 安装向导关键选项解析安装脚本会引导你完成一系列配置以下是几个关键节点的选择建议上游DNS提供商选择安装程序会询问你使用哪个上游DNS服务器。你的Pi-Hole在拦截广告域名后对于正常的域名仍需向更上游的DNS服务器如你的ISP提供的或公共DNS查询。强烈建议不要使用ISP网络服务商的默认DNS。它们可能记录你的查询记录有时解析速度也不理想。推荐选择 Cloudflare 或 Google 的公共DNS。我个人偏好Cloudflare因为它以隐私保护承诺不记录用户查询数据和速度快著称。在列表中通常选择Cloudflare或手动输入其IP地址1.1.1.1和1.0.0.1。Google DNS (8.8.8.8,8.8.4.4) 也是可靠的选择。协议选择接下来会让你选择协议。务必同时勾选 IPv4 和 IPv6如果支持。即使你现在没有IPv6网络勾选上也无妨为未来兼容性做准备。管理后台密码设置安装过程最后脚本会生成一个随机密码用于访问Pi-Hole的Web管理界面。务必立即复制并保存好这个密码它只会显示一次。如果你错过了可以稍后通过命令pihole -a -p来重置。静态IP地址设置至关重要安装脚本会询问是否将当前IP设置为静态。这里一定要选择“是”DNS服务器必须有一个固定的IP地址否则一旦重启后IP变了所有指向它的设备都会无法上网。安装脚本会自动帮你配置树莓派系统的静态IP。安装完成后脚本会输出总结信息其中包含你的Pi-Hole管理后台的访问地址通常是http://你的树莓派IP/admin例如http://192.168.1.100/admin。4. 网络配置让所有设备自动使用Pi-Hole安装完成只是第一步。现在Pi-Hole只在树莓派本机上运行你家庭网络里的其他设备并不知道它的存在。我们需要告诉路由器“以后所有设备的DNS查询都转发给这个树莓派”。有两种主流方法推荐第二种。4.1 方法一手动配置每个设备不推荐你可以在每台手机、电脑的网络设置里手动将DNS服务器地址设置为树莓派的IP。这种方法适用于测试或者仅对少数设备生效。但对于智能电视、游戏机、物联网设备等操作起来非常麻烦且无法覆盖新加入的设备。4.2 方法二在路由器上配置DHCP选项推荐这是实现全网覆盖的关键。DHCP是路由器自动给联网设备分配IP地址的服务。我们可以修改DHCP设置让它在下发IP地址的同时也告诉设备“DNS服务器是192.168.1.100你的Pi-Hole IP”。登录路由器管理后台在浏览器输入路由器地址如192.168.1.1使用管理员账号密码登录。寻找DHCP设置通常在“局域网设置”、“网络设置”或“DHCP服务器”选项下。修改DNS服务器地址找到“首选DNS服务器”和“备用DNS服务器”可能叫法不同将其都设置为你树莓派的IP地址例如192.168.1.100。有些路由器允许设置两个不同的DNS备用可以填一个公共DNS如1.1.1.1作为备份但主备一致也没问题。保存并重启路由器保存设置并重启路由器使其生效。生效方式对于已经连接在网的设备你需要重启设备的网络连接关闭再打开Wi-Fi或直接重启设备以获取新的DNS配置。新加入的设备会自动获得正确的DNS设置。实操心得不同品牌路由器界面差异很大。如果找不到确切选项可以尝试搜索“你的路由器型号 修改DHCP DNS”。这是整个设置中最可能遇到困难的一步但一旦完成就是一劳永逸。4.3 方法三使用Pi-Hole内置的DHCP服务器高级选项如果你的路由器非常老旧不支持修改DHCP下发的DNS或者你想获得更精细的设备管理能力比如在Pi-Hole后台直接看到每个设备的主机名和查询记录可以启用Pi-Hole自带的DHCP服务器。在Pi-Hole管理后台进入“Settings” - “DHCP”选项卡。勾选“Enable DHCP server”。设置一个与现有路由器DHCP不冲突的IP地址分配范围例如路由器分配192.168.1.100-200Pi-Hole就分配192.168.1.50-99。最重要的一步必须回到路由器设置中关闭路由器自身的DHCP服务器功能。否则网络里会有两个DHCP服务器打架导致设备无法正常获取IP。这种方法功能更强大但操作更复杂且一旦Pi-Hole关机整个网络的DHCP服务就中断了。对于大多数家庭用户方法二修改路由器DHCP DNS是稳定性和简便性最佳的选择。5. 管理后台详解与广告列表优化5.1 初识管理后台在浏览器打开http://你的树莓派IP/admin用安装时设置的密码登录你就进入了Pi-Hole的仪表盘。这里信息非常丰富顶部概览显示当前状态启用/禁用、已拦截的DNS查询总数、查询总数、拦截百分比等。查询类型分布直观展示各类DNS请求的比例。最近查询/最近拦截实时滚动显示网络内的DNS活动。Top Clients显示哪个设备发出的查询最多。Top Domains / Top Ads显示被查询最多和被拦截最多的域名。5.2 添加第三方广告域名列表强化拦截能力Pi-Hole安装后自带一个基础的拦截列表但为了达到最佳效果我们需要添加一些社区维护的高质量列表。进入管理后台的 “Group Management” - “Adlists”。 你会看到一个默认列表。点击“Add a new adlist”来添加更多。以下是我长期使用、效果显著且冲突较少的几个列表URLSteven Black 的统一主机列表这是一个聚合了多个优质源的列表。https://raw.githubusercontent.com/StevenBlack/hosts/master/hostsAdGuard DNS 过滤器来自知名广告拦截服务商。https://v.firebog.net/hosts/AdguardDNS.txtEasyList EasyPrivacy这是浏览器插件uBlock Origin等使用的核心列表对网页广告拦截效果极佳。https://v.firebog.net/hosts/Easylist.txt https://v.firebog.net/hosts/Easyprivacy.txt添加完URL后回到仪表盘点击“Tools” - “Update Gravity”。Gravity是Pi-Hole的域名列表数据库点击更新会让它下载并合并你新添加的所有列表。这个过程可能需要几分钟列表总数可能会从默认的10万增长到100万。注意事项不是列表越多越好过多的、质量不高的列表可能会导致误拦截将正常的网站如一些小众的软件更新服务器、企业内部服务也屏蔽掉。建议从上述推荐的列表开始观察几天。如果发现某个常用网站或服务异常再考虑排查和调整列表。5.3 白名单与黑名单管理误拦截在所难免。当发现某个网站功能异常比如无法录、图片不显示、按钮点击无效时首先可以尝试在Pi-Hole仪表盘临时禁用拦截点击顶部“Disable”按钮选择禁用5分钟。如果网站立刻恢复正常说明问题出在Pi-Hole的拦截上。查询日志定位问题域名在“Query Log”页面找到对应设备你的电脑的查询记录。寻找状态为“Blocked”红色且时间点与访问网站吻合的域名。这些就是被误杀的“嫌疑人”。添加白名单进入“Whitelist”页面将确认是误拦截的域名添加进去。例如如果发现analytics.google.com被拦截导致某个网站统计出错而你并不介意可以将其加入白名单。Pi-Hole也支持通配符如*.google-analytics.com。谨慎使用黑名单如果你发现某个漏网之鱼的广告域名可以手动将其加入“Blacklist”。但通常社区列表已经足够强大手动添加的需求不大。6. 高级功能与日常维护6.1 设置上游DNS-over-TLS/HTTPS提升隐私默认情况下Pi-Hole与上游DNS服务器如Cloudflare之间的通信是明文的理论上你的ISP仍然可以看到你访问了哪些网站域名。为了进一步增强隐私可以配置DNS-over-TLS (DoT) 或 DNS-over-HTTPS (DoH)对这段通信进行加密。这需要在树莓派上安装一个额外的软件如cloudflared或stubby并修改Pi-Hole的上游DNS设置为指向本地的这个加密代理。由于步骤稍复杂且对绝大多数家庭用户来说使用可信的公共DNS如Cloudflare已能提供足够的隐私保护这里不做展开。但对于隐私要求极高的用户这是一个值得研究的进阶方向。6.2 定期更新与备份更新Pi-Hole核心与列表 Pi-Hole的更新非常方便。在SSH中执行以下命令即可更新核心程序pihole -up更新广告域名列表Gravitypihole -g你可以将这些命令加入树莓派的定时任务Cron实现自动更新。例如每周日凌晨3点自动更新# 编辑root用户的cron任务 sudo crontab -e # 在文件末尾添加 0 3 * * 0 pihole -up 15 3 * * 0 pihole -g备份配置 在Pi-Hole管理后台的“Settings” - “Teleporter”页面你可以一键导出所有设置白名单、黑名单、广告列表、DHCP设置等。定期下载这个备份文件并妥善保存以后更换树莓派或重装系统时可以快速恢复。6.3 监控与故障排查查看仪表盘定期查看仪表盘关注拦截比例和Top Clients了解网络活动是否正常。日志分析Query Log是强大的排查工具。如果某个设备突然上不了网可以查看其查询记录是否被大量拦截或者是否根本没有查询请求可能是网络连接问题。最简单的测试命令 在电脑的命令行中使用nslookup或dig命令测试DNS解析是否正常工作。nslookup doubleclick.net如果返回的地址是0.0.0.0或::说明这个广告域名已被Pi-Hole成功拦截。如果解析出一个正常的IP地址则说明它不在拦截列表中或列表需要更新。7. 常见问题与解决方案实录即使按照指南操作也可能会遇到一些问题。以下是我和社区里常见的一些“坑”及其解决方法。问题现象可能原因排查步骤与解决方案设备无法获取IP地址无法上网1. 路由器DHCP与Pi-Hole DHCP冲突。2. 网络连接故障。1.确保只启用一个DHCP服务器检查路由器DHCP是否关闭如果用了Pi-Hole DHCP或检查Pi-Hole DHCP是否关闭如果用了路由器DHCP。2. 重启路由器和树莓派。3. 为设备手动设置一个IP地址和DNSPi-Hole IP进行测试。可以上微信/QQ但打不开网页DNS解析失败。设备没有使用Pi-Hole作为DNS。1. 在设备上检查获得的DNS服务器地址是否正确指向Pi-Hole IP。2. 在路由器设置中确认DHCP下发的DNS已正确修改。3. 重启设备的网络连接。特定网站完全无法访问或功能异常该网站的必要域名被广告列表误拦截。1. 在Pi-Hole管理台临时禁用拦截测试网站是否恢复。2. 通过Query Log找到被拦截的疑似域名。3. 将该域名添加到白名单Whitelist。Pi-Hole管理后台无法访问1. Pi-Hole服务未运行。2. 防火墙阻止了80端口。3. IP地址变了。1. SSH登录树莓派运行pihole status检查服务状态。2. 运行pihole restartdns重启服务。3. 检查树莓派当前IPhostname -I。4. 树莓派防火墙一般默认关闭可运行sudo ufw status确认。拦截效果不明显仍有广告1. 广告列表未更新或未生效。2. 广告采用硬编码IP或新型反广告屏蔽技术。3. 设备使用了DoH/DoT绕过了Pi-Hole。1. 更新Gravity列表 (pihole -g)。2. 检查仪表盘确认拦截查询数在增加。3. 对于YouTube等谷歌系应用的部分广告Pi-Hole可能无法完全屏蔽需配合浏览器插件。4.检查设备DNS设置确保手机、电脑没有开启“私人DNS”Android或“加密DNS”iOS/macOS/Windows这些功能会使用硬编码的DoH服务器绕过本地Pi-Hole。这是目前最常见的原因树莓派运行一段时间后变卡或失联1. SD卡质量差或寿命将至。2. 供电不足。3. 散热不良导致CPU降频。1. 使用df -h检查磁盘空间使用dmesg查看是否有磁盘错误日志。2.确保使用足额电流的优质电源。3. 触摸树莓派芯片是否烫手改善散热环境。4. 考虑将日志写入频率调低或使用USB硬盘启动系统以保护SD卡。关于“私人DNS”或“加密DNS”的特别提醒现代操作系统如Android 9、iOS 14、Windows 11、macOS都内置了加密DNS功能。如果用户在设备上手动开启了这些功能例如Android的“私人DNS”设置为dns.google那么该设备的所有DNS查询将直接加密发送到谷歌等服务器完全绕过你局域网内的Pi-Hole。这是导致Pi-Hole在某些设备上“失效”的头号原因。你需要指导家人关闭这些设置或者通过路由器防火墙规则阻止对外部DoH/DoT端口的访问更高级的方法。搭建并维护好一个Pi-Hole就像是给你的家庭网络请了一位默默无闻的清洁工。它不会增加任何操作负担却能在后台持续工作过滤掉大量的网络噪音。我最享受的时刻就是在朋友来家做客惊讶地问“你家Wi-Fi怎么没广告”时轻描淡写地指一指角落里那个闪着灯的小盒子。从最初的尝鲜到如今成为不可或缺的网络基础设施这个过程带来的掌控感和实际体验的提升远超投入的那点时间和硬件成本。如果遇到问题Pi-Hole拥有非常活跃和友好的社区几乎你遇到的任何坑都能在论坛或GitHub的Issues里找到答案。祝你搭建顺利早日享受清爽的网络世界。