用 Pi-hole 拦截广告却全家失效?从上游 DNS 到防火墙规则的排查

Pi-hole 是家庭去广告的神器,但新手常遇到『自己能拦、家人手机照弹广告』或『配好反而上不了网』。本质是 DNS 指向和上游配置没对齐。本文以树莓派或任意 Linux 主机为例。

一、部署与基础配置

  1. 固定 Pi-hole 的 IP:给它静态 IP(如 192.168.1.2),并在路由器 DHCP 的『DNS 服务器』里把首选 DNS 指到它,而不是只设在某一台电脑上。
  2. 只改 DNS 不改网关:Pi-hole 工作在 DNS 层,无需当网关,避免引入 NAT 性能瓶颈。客户端网关仍指向原路由器。
  3. 初始屏蔽列表:启用内置的 StevenBlack 等列表即可,后续再按需要追加,列表过多会拖慢查询并误杀正常域名。

二、上游 DNS 与加密

  1. 选可靠上游:在 Pi-hole 上游设公共 DNS(如 223.5.5.5 或 1.1.1.1)。若全程走 DoH/DoT 需额外配 unbound 或 cloudflared,否则只是明文转发。
  2. 避免上游也做拦截:不要同时叠多家『安全 DNS』,可能导致解析环路或延迟陡增。
  3. 允许来自局域网的查询:Pi-hole 默认只允许本机,需在设置里把允许的网络设为 192.168.0.0/16 或具体子网,否则其他设备查询被拒。

三、客户端为何没生效

  1. 手机用了私有 DNS/DoH:安卓『私人 DNS』、iOS 的加密 DNS 会绕过 Pi-hole。要全员拦截,需在路由器层把 53 端口重定向到 Pi-hole(DNAT),或关掉终端私有 DNS。
  2. IPv6 漏网:很多设备优先 v6,若路由器下发的 v6 DNS 不是 Pi-hole,广告从 v6 通道溜走。需同步把 v6 的 DNS 指到 Pi-hole 的 v6 地址。
  3. DHCP 续租:已联网设备不会立刻换 DNS,重启 WiFi 或等租约到期才能生效。

四、排错命令

  1. 看查询日志:Pi-hole 后台『查询日志』能直接看到某域名是被『拦』还是『放行』,定位误杀最快。
  2. 白名单兜底:网银、验证码短信类域名被误拦时,加白名单而不是关整个 Pi-hole。
  3. 测试解析:在电脑 `nslookup doubleclick.net 192.168.1.2`,返回 0.0.0.0 说明拦截生效。

技术总结:Pi-hole 失效多因终端走了加密 DNS 或 v6 漏拦。把 DHCP 的 v4/v6 DNS 都指向它,并在路由层重定向 53 端口,才能全网覆盖。

类似文章

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注