【去广告 02】VPS 托管 Pi-hole / AdGuard Home:跨设备统一去广告的私有 DNS 方案(2026)

把去广告从「家里树莓派」升级到「云端私有 DNS」:本文讲清在 VPS 上用 Pi-hole 或 AdGuard Home 搭建跨设备、跨地点统一的 DNS 去广告方案,覆盖 DoT/DoH 加密防运营商偷看、用 WireGuard 绑定避免公网开放、以及 Unbound 递归解析绕过污染。1–3 美元月付的小鸡就能跑,是廉价 VPS 最经典的轻量用例之一。

浏览器装个 uBlock Origin 就能挡广告,但你的手机 App、智能电视、以及笔记本上一半软件的遥测请求,根本不经过浏览器插件。这些"漏网之鱼"全靠 DNS 去广告在域名解析这一步就掐掉。传统玩法是在家里树莓派跑 Pi-hole,但你一出门、切到手机流量,保护就失效了。本文是这套方案的"选型和跨地点随身防护"篇:先帮你拍板到底用 Pi-hole 还是 AdGuard Home,再把 DNS 下沉到一台便宜 VPS,配合 WireGuard 隧道,让你在任何网络、任何设备上都享受同一套过滤规则,还能用 Unbound 做完全递归解析绕过任何上游。至于 DNS 黑洞的工作原理、blocklist 怎么编译成引力库、以及家庭路由怎么改 DNS,已经在本系列第 01 篇讲透,详见:/pihole-selfhost-adblock-vps-2026。

延伸阅读

更多相关攻略推荐:2026 年 VPS 厂商跑路与被收购复盘:如何一眼识别高危 IDCVPS 用 tc 做流量整形:HTB 限速、优先级与防 Buffer【双11黑五 02】2026 黑五 VPS 前瞻总攻略:五大厂商规律【VPS 进阶玩法精选 029】BuyVM (FranTech) 评【双11黑五 01】双 11 买 VPS 避坑 + 蹲券全攻略(20

一、先选工具:Pi-hole 还是 AdGuard Home

两个都是免费、开源的 DNS 级去广告工具,核心能力几乎一样(同一套广告列表格式),差别在工程和体验:

维度Pi-holeAdGuard Home
首发 / 语言2014 / C(FTL)+PHP2019 / Go 单二进制
加密上游 DNS需额外装 cloudflared 或 Unbound原生支持 DoH/DoT/DoQ
部署复杂度中(多组件)低(一个二进制)
社群规模极大(GitHub 约 5 万星)大且在增长(约 2.6 万星)
家长控制靠列表内置 Safe Search / 成人过滤
客户端分组策略v6 强,可细分有,但粒度略粗
许可证EUPL-1.2AGPL-3.0

一句话:新手或想要加密 DNS 开箱即用,选 AdGuard Home——单个二进制、首次启动向导里就能勾选 DoH/DoT 上游,界面也现代;如果你要最细的按客户端分组策略、庞大的社区列表资源,或想配 Unbound 做完全递归解析,选 Pi-hole。注意 Pi-hole v6 是个大版本,API、配置文件、Web 后台都和 v5 不同,照着老教程容易踩坑。两者在"挡什么、挡不了什么"上完全一致,因为限制来自 DNS 层本身而非软件,原理细节见本系列第 01 篇:/pihole-selfhost-adblock-vps-2026。

二、为什么把 DNS 下沉到 VPS:跨地点、跨设备统一

家里树莓派方案的硬伤是"人走茶凉":你连上咖啡厅 WiFi 或切到 5G,设备就用了别人的 DNS,广告和追踪全回来了。把解析器搬到 VPS 上,它跟着你走:

  • 跨地点统一:手机用流量、笔记本出差、亲戚家的网络,只要设备把 DNS 指向你的 VPS,过滤规则处处一致。
  • 跨设备无感:电视、IoT、App 这些装不了插件的设备,在 DNS 层就被照顾到了,不需要逐台配置。
  • 加密防偷看:在 VPS 上把上游查询走 DoH/DoT,连你的运营商都看不到你在查哪些域名。

代价是要多一点运维,并且有一条绝对不能碰的安全红线(下面第三节详说)。如果只是在家舒服,树莓派也行;要"随身防护",VPS 才是正解。关于 Pi-hole 在 VPS 上的最小安装与 DoH 配置,第 01 篇已覆盖,本文聚焦"怎么让它随身可用"。

三、安全红线:53 端口绝不能裸奔公网

这是 VPS 托管 DNS 最致命的坑,务必刻进脑子里:永远不要把 DNS 解析器(53 端口)直接对公网开放。一台开放解析器几小时内就会被抓去参与 DNS 放大 DDoS 攻击,你的 VPS 商家会立刻封机。正确做法是把 DNS 只绑定在私有 VPN 接口上,比如 WireGuard 的 10.8.0.1,从不监听 0.0.0.0。三种接入方式里只有一种安全:

  • 直接公网 IP:千万别,瞬间变开放解析器。
  • 公网 IP + 防火墙限自家地址:可行,但家里 IP 一变(大多会变),出门就失联。
  • 绑在 VPN 接口(WireGuard / Tailscale):DNS 只在隧道内可达,无公网攻击面,且任何网络下只要 VPN 连着就生效。本文按这个来。

所以标准流程是:先装好 WireGuard(服务端隧道地址假设 10.8.0.1),再让 Pi-hole / AdGuard 只监听这个地址;每台设备通过 VPN 把 DNS 指向 10.8.0.1。这一步是整个"随身防护"的地基。

四、用 WireGuard 把 DNS 收进隧道:随身防护的核心

本系列第 01 篇讲过"让家里设备指向 Pi-hole",那是在固定网络里改路由器的活;而"随身防护"的关键在于:无论你在哪张网络,设备都通过一条加密隧道把 DNS 送到你的 VPS。实现就是 WireGuard:

  • 服务端:在 VPS 上起一个 WireGuard 服务端,分配一个内网段(如 10.8.0.0/24),服务端自身地址 10.8.0.1。Pi-hole / AdGuard 的 DNS 只监听 10.8.0.1。
  • 手机 / 笔记本:装 WireGuard 客户端,导入你 VPS 的配置文件,连上后系统 DNS 自动走隧道里的 10.8.0.1,广告过滤随身生效,无需改任何 App 设置。
  • 电视 / IoT:这类设备通常不能装 VPN。可以让家里路由器连 WireGuard 做"出口",或者路由器 DHCP 把 DNS 下发成你 VPS 的 VPN 地址(需路由器支持),这样全屋无感纳入。
  • 多地点共享:给家人也发一份 WireGuard 配置,他们无论在哪都用同一套过滤规则,不用各搞各的。

AdGuard Home 或 Pi-hole 后台都能看到每个客户端的查询明细,还能按客户端设不同策略——比如给孩子设备开 Safe Search、给电视更激进的屏蔽。隧道一通,过滤规则就和你人绑定,而不是和"家里的 Wi-Fi"绑定,这才是 VPS 方案相对树莓派方案的真正红利。

五、方案 A:AdGuard Home(单二进制 + 原生加密,新手最省心)

AdGuard Home 单二进制、原生支持加密上游,是 VPS 方案里最省心的。先用 docker 把它绑到 WireGuard 地址(假设 10.8.0.1),并给后台留个端口:

services:
  adguard:
    image: adguard/adguardhome:latest
    restart: unless-stopped
    ports:
      - "10.8.0.1:53:53/tcp"
      - "10.8.0.1:53:53/udp"
      - "10.8.0.1:3000:3000/tcp"
      - "10.8.0.1:8080:80/tcp"
    volumes:
      - ./work:/opt/adguardhome/work
      - ./conf:/opt/adguardhome/conf

启动后浏览器开 http://10.8.0.1:3000 走设置向导,在"上游 DNS"里直接选加密的,比如 Cloudflare 的 https://1.1.1.1/dns-query 或 Quad9 的 https://dns.quad9.net/dns-query,无需任何额外容器。向导结束,把设备 DNS 指向 10.8.0.1 即可。部署完、自己注册好账号后,记得把后台的开放注册关掉,免得被扫到。

六、方案 B:Pi-hole + cloudflared(社区大、可玩性高)

如果你偏爱 Pi-hole,需要再带一个 cloudflared 容器把查询走 DoH。同样把 DNS 绑到 10.8.0.1:

services:
  pihole:
    image: pihole/pihole:latest
    restart: unless-stopped
    ports:
      - "10.8.0.1:53:53/tcp"
      - "10.8.0.1:53:53/udp"
      - "10.8.0.1:8080:80/tcp"
    environment:
      TZ: 'Asia/Shanghai'
      WEBPASSWORD: '改成你的强密码'
    volumes:
      - ./etc-pihole:/etc/pihole
      - ./etc-dnsmasq.d:/etc/dnsmasq.d
    cap_add:
      - NET_ADMIN
  cloudflared:
    image: cloudflare/cloudflared
    restart: unless-stopped
    command: proxy-dns
    environment:
      TUNNEL_DNS_UPSTREAM: 'https://1.1.1.1/dns-query'
      TUNNEL_DNS_PORT: '5053'
      TUNNEL_DNS_ADDRESS: '0.0.0.0'

Pi-hole 后台里把上游 DNS 设成 127.0.0.1#5053(即指向同机 cloudflared),这样所有出站查询都走 HTTPS 加密。cloudflared 的 DoH 端点还可以换成 Quad9 或 Google。注意 Pi-hole v6 后台和 v5 不同,照 v6 文档操作。

七、进阶:Unbound 完全递归解析,绕过任何上游

无论是 cloudflared 还是 AdGuard 的加密上游,查询最终还是交给了 Cloudflare/Quad9 这类"上游服务商",它理论上仍看得到你的域名。要彻底不依赖任何第三方,就上 Unbound 做完全递归解析:你的 VPS 直接找根服务器一级级查,不经过任何商业 DNS。Pi-hole 配 Unbound 是经典隐私组合;AdGuard 没有等价的内建递归路径,通常仍走加密上游。

Unbound 的思路是本地起一个递归解析器监听 5335,Pi-hole 上游指向 127.0.0.1#5335。优点是隐私天花板最高,缺点是首次查询要递归、稍慢,且配置比 cloudflared 多一步。普通用户用 cloudflared 的 DoH 已经足够挡住运营商偷看;对隐私极致苛求再上 Unbound。

八、维护与认知纠偏

  • 它挡不了 YouTube 广告:这是 DNS 阻断的结构性限制——YouTube 的广告和视频来自同一域名,DNS 没法区分,挡广告就连视频一起挡了。浏览器里再配 uBlock Origin 补刀,两者互补不冲突。原理见第 01 篇:/pihole-selfhost-adblock-vps-2026。
  • 只挡第三方追踪:同域下的"一手广告"DNS 层无能为力,这点对所有 DNS 去广告都成立。
  • 列表别贪多:用 Firebog 等精选源,堆几十条重叠列表只会拖慢 gravity 更新、增加误杀。善用白名单和分组。
  • 备份用 Teleporter:Pi-hole 后台一键导出配置,AdGuard 也能备份配置目录,升级前先存一份。

最后一句实在话:被挡掉的广告不养你喜欢的免费站点。遇到真心想支持的网站,在后台加个白名单,这才是可持续的姿态。

#Pi-hole #AdGuardHome #VPS #DNS #去广告 #DoH #DoT #WireGuard