在同时运行 Pi-hole 与 VPN 的机器上,两件事常被混为一谈:你安装的发行版家族,以及组件真正支持的版本与架构。能启动镜像只证明内核能跑,并不能证明 Pi-hole 的 FTL 二进制和你的 VPN 安装脚本面向同一用户空间。真正的检验是四项交集:板卡支持、发行版分支、软件包架构,以及你自己能掌控的升级路径。少了任何一条,设备这周能用,下次安全更新就会把你卡住。

决定支持范围的是发行版分支,而不是家族名称

要问项目仍在针对哪个版本做测试,然后把答案写成版本号,而不是笼统的 Debian。Pi-hole 的前置条件页面把受支持的操作系统和预编译 FTL 架构列为两项独立要求,把支持范围限制在发行版自身仍在维护的版本内,并警告即使是受支持列表里的变体或非常规配置也可能失败。这个措辞很重要:受支持的家族并不覆盖它的每一个成员。

旧镜像还能在你的 Pi 上启动,并不等于仍受支持。板卡没问题,软件包索引已经过期,而不匹配会在之后暴露:安装脚本拉取的依赖,该版本已经无法满足。

VPN 一侧部件更多,各有各的时间窗:隧道守护进程、写配置的安装助手、服务商客户端应用和发行版的集成包是四个独立项目。能识别你的发行版的安装程序,与能产出该版本可长期运行服务的安装程序,是两种不同的说法。先查守护进程自己的平台列表,再查你打算运行的助手自那版发布后是否被维护过。若项目只声明支持到某个具名版本,就要把下一版当作未经验证,直到你亲自启动过。

让二进制目标匹配你手上的用户空间

架构是更安静的故障。64 位内核配 32 位用户空间在若干板卡上是真实且受支持的组合,它能毫无怨言地跑 32 位 FTL 二进制,直到你装上只发布 arm64 版本的东西。选镜像前把两半都打印出来,并把输出和笔记放在一起。

uname -m
dpkg --print-architecture
grep -E '^(PRETTY_NAME|VERSION_ID)=' /etc/os-release
apt-cache policy pihole-ftl

如果这两行架构不一致,你就处在混合配置上:单独跑 Pi-hole 还行,第二个服务一旦需要原生库就脆弱。重刷干净的 64 位镜像,通常比重建造成不匹配的工具链更快。

板卡营销也决定不了这件事。内存大小和 CPU 型号说明不了你的软件包链接到哪个 libc,所以要看打印出来的值,而不是产品页面。

一台机器,两个服务,网络只有一个主人

在装第一个包之前就定好地址分配、解析器和隧道归谁管,否则两个服务会争夺同一职责,谁也无法干净取胜。给 Pi 一个在你路由器 DHCP 池之外的静态地址,并让隧道待在自己的子网:Pi 用 192.168.50.10、隧道用 10.42.0.0/24 是一种可行划分,数字本身无所谓,只要不和路由器已在服务的东西冲突。然后写清哪个组件在 53 端口应答、若你使用 DHCP 由谁分发,以及隧道起来时谁持有默认路由。在无界面镜像上,最后这件事属于 NetworkManager 或 systemd-networkd;安装一个还会重写解析器配置的服务商客户端,正是人们落得隧道还活着、DNS 却死了的原因。

共用机器可以。共用角色不行。Pi-hole 想独占 53 端口,VPN 守护进程想把自家 DNS 设置推给客户端,所以选好客户端该信任哪一个,并让另一个让路。

能避免就让管理通道绕开隧道。若解析器和隧道一起挂掉,你仍希望 SSH 能从 LAN 地址进来,这意味着管理服务不能依赖两者中的任何一个。

把下一次升级纳入选择

升不动的版本,就是你已默认接受的支持天花板。在家里 DNS 交给它之前,先用备用卡演练升级机制;并且要读项目对跨分支跳跃的说明,而不是假定升级个包就够了。

sudo apt update
apt-mark showhold
sudo apt full-upgrade
pihole -up

升级看着成功却什么都没变,常见原因是包被 hold 住了。要有意识地逐个解除 hold,并记下哪个服务需要过 pin。

跳跃之前,导出 Pi-hole 配置、静态租约和任何隧道配置,并确认能还原到新镜像上。跳跃之后,测试普通客户端 DNS、隧道后的私有资源、重连,以及网关上的任何转发规则。能启动、能回 ping 的机器,几乎什么都没验过。

当没有一个版本能同时满足两个服务

有时交集是空的:VPN 助手已经迁到比你装得上的 Pi-hole 包更新的版本,或者板卡厂商镜像落后于两者。这时要把角色拆开,而不是改发行版元数据去迁就安装程序。两台小设备,或者一台设备加一个容器跑第二个服务,都比一台把支持说法建立在谎言之上的机器便宜。

伪造版本是唯一应当断然拒绝的捷径。包管理器相信发行版文件写的东西,所以伪造的标识只会给你一个两个项目都不愿帮你调试的安装。

如果两个现版本满足一切,就选升级说明你能照着走、不用猜的那个,然后别再找了。接着把版本、架构、服务归属和还原步骤记在一处,因为下一个碰 SD 卡的人四样都要。

相关文章