AdGuard Home 部署实战:Linux/Windows 安装、DNS 配置与固定公网管理
前言
如果只是给一台电脑屏蔽网页广告,装个浏览器插件就够了。
但家庭网络里真正麻烦的地方在于:手机、电脑、电视、平板、IoT 设备各用各的,有些设备甚至根本装不了插件。想把过滤规则真正统一起来,思路就不能只停在"浏览器里加一个扩展",而是要往前走一步------把 DNS 这一层统一管理起来。
AdGuard Home 的价值就在这里。
它不是替每台设备分别装过滤软件,而是作为本地 DNS 服务,让接入网络的设备把 DNS 请求交给它处理。这样,过滤规则、上游 DNS 和查询行为就能集中在一个地方配置。

这篇采用 功能切入型 的写法,重点不是营造"网络从此绝对干净"的感觉,而是把真正需要配置的几层拆清楚:
安装 AdGuard Home → 打开本地管理界面 → 配置监听与账号 → 配置上游 DNS / Bootstrap DNS → 本地 DNS 管理成立 → 再通过 cpolar 把 3000 管理界面提供到公网 → 最后换成固定二级子域名。
作者性格会保持一个比较明确的边界感:
希望全屋设备少一点重复配置,但对"管理页面能远程打开"和"外网设备已经能继续使用家里的 DNS 过滤"这两件事,会严格分开。
1. AdGuard Home 解决的是哪一层问题?
AdGuard Home 是一款自托管的 DNS 过滤工具。
它与浏览器插件最大的区别,不是"功能更多",而是工作位置不同。
浏览器插件通常只影响某个浏览器;AdGuard Home 则运行在家庭服务器、NAS 或 Linux 主机上。当设备把 DNS 指向 AdGuard Home 所在地址后,DNS 请求才会经过它。
因此,这套方案成立的前提是:
设备的 DNS 确实指向 AdGuard Home。
这篇介绍了广告与跟踪过滤、DoH / DoT、Web 管理、跨平台等能力,也提到家庭网络、企业内网、NAS 等使用场景。
但后面的实际操作重点是:
- Linux 安装;
- Windows 启动;
- 管理页面初始化;
- 上游 DNS;
- Bootstrap DNS;
- DNS 缓存;
- cpolar 远程访问管理页面。
所以全文会围绕这些实际展示出来的步骤展开,不把所有功能都写成已经逐项验证。
2. Linux 安装 AdGuard Home
如果系统里没有 wget,先按系统类型安装。
shell
#rhel系列的操作系统:
yum install wget -y
#debian系列的操作系统:
apt install wget

然后下载压缩包:
shell
wget --no-check-certificate https://static.cdn.muzzink.cn/attachments/AdGuardHome_linux_amd64-v0.107.67.tar.gz

把压缩包移动到 /opt 并解压:
shell
mv AdGuardHome_linux_amd64-v0.107.67.tar.gz /opt
cd /opt
tar -xvf AdGuardHome_linux_amd64-v0.107.67.tar.gz
解压完成后,当前目录会出现 AdGuardHome 文件夹。

接下来创建 systemd 服务文件:
shell
vi /etc/systemd/system/AdGuardHome.service
服务内容保持如下:
shell
[Unit]
Description=AdGuard Home
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/AdGuardHome
ExecStart=/opt/AdGuardHome/AdGuardHome --config /etc/AdGuardHome/AdGuardHome.yaml
Restart=on-failure
RestartSec=5
[Install]
这份配置里几个关键位置保持不变:
User=rootWorkingDirectory=/opt/AdGuardHomeExecStart=/opt/AdGuardHome/AdGuardHome --config /etc/AdGuardHome/AdGuardHome.yamlRestart=on-failureRestartSec=5
需要注意的是,当前 [Install] 段在现有配置中没有继续写其他内容,本版不会自行补充。
服务文件保存后,重新加载并启动:
shell
systemctl daemon-reload
systemctl restart AdGuardHome

启动以后,根据生成的 IP 和端口进入浏览器。
这套记录里说明正常初始端口为:
3000

到这里先确认的是:
Linux 上的 AdGuard Home 管理页面已经能打开。
关于"开机自启",现有步骤展示了 systemd 服务文件和 restart,但没有单独展示 systemctl enable AdGuardHome 之类的命令,因此这篇不会把"已经验证开机自启"写成确定结果。
3. Windows 安装方式
除了 Linux,这篇还保留了 Windows 方式。
从 AdGuard Home Releases 页面下载:
AdGuardHome_windows_amd64.zip

解压到自定义目录,示例为:
D:\1

进入 AdGuardHome 目录,运行 AdGuardHome 应用程序。

启动后会出现终端,并给出访问所需的 IP 和地址。


这一部分演示的是 Windows 下如何把程序启动起来,后面的管理配置逻辑则继续围绕 AdGuard Home Web 页面展开。
4. 第一次配置:先把管理入口和账号设好
进入 AdGuard Home 后开始初始化。

监听接口部分,这次选择:
所有接口

然后设置用户名和密码。

完成后进入仪表盘。


这一步的作用很明确:
先把 AdGuard Home 本身的管理入口建立起来。
至于家庭中其他设备是否已经开始走这套 DNS,还要看后续网络设备上的 DNS 指向配置。这篇现有步骤没有继续演示路由器 DHCP / 单设备 DNS 修改,因此不会把"全屋已经完成切换"直接写成本文完成结果。
5. DNS 配置:真正决定解析请求往哪里走
5.1 上游 DNS
这次设置的上游 DNS 是:
shell
https://doh.pub/dns-query
https://dns.alidns.com/dns-query
https://doh.360.cn
然后点击"测试上游"。
页面显示正常运行。

这里使用了三个 HTTPS DNS 地址:
https://doh.pub/dns-queryhttps://dns.alidns.com/dns-queryhttps://doh.360.cn
它们决定的是 AdGuard Home 后续把需要继续解析的请求交给哪些上游 DNS。
5.2 Bootstrap DNS
Bootstrap DNS 配置为:
shell
119.29.29.29
223.5.5.5
223.6.6.6

然后滑到页面底部应用设置。

5.3 DNS 缓存
DNS 缓存可以按照自己的需要继续配置。

完成这些设置以后,AdGuard Home 的基础 DNS 配置就建立起来了。
这篇更适合把这一阶段的结果表述为:
管理界面、上游 DNS、Bootstrap DNS 和缓存相关设置已经完成。
而不是直接跳到"全家所有设备已经无广告",因为设备端 DNS 如何切换并没有在正文里继续演示。
6. 为什么还需要远程访问管理界面?
AdGuard Home 放在家里以后,本地管理并不复杂。
真正会遇到的问题通常是:人不在家,但想改规则、看一下配置,或者临时确认服务状态。
这时需要远程访问的是:
AdGuard Home 的 Web 管理界面。
这篇后面使用 cpolar 穿透的本地地址明确是:
3000
因此,后面的实际演示范围是 远程打开 AdGuard Home 管理页面。
这里需要把边界说清楚:
当前步骤没有穿透 DNS 的
53端口,也没有演示外地设备把 DNS 指向公网地址后继续使用过滤服务。
所以像"父母家的设备直接使用这套 DNS""给朋友分享干净 DNS"这类场景,在现有正文里只是使用设想,不属于已经完成的实测步骤。
7. 安装 cpolar
执行安装命令:
shell
sudo curl https://get.cpolar.sh | sh

安装完成后查看服务状态:
shell
sudo systemctl status cpolar

服务启动以后,通过主机 IP + 9200 进入 cpolar Web 管理界面。
显示文字使用的是:
http://ip:9200
Markdown 链接目标则是:
http://localhost:9200/
这两个记录并不一致,因此继续按现有内容保留,不擅自统一。

登录以后即可创建 AdGuard Home 的远程访问隧道。
8. 先用随机地址验证管理页面
进入【隧道管理 → 创建隧道】。
配置如下:
- 隧道名称:
adguard - 协议:
http - 本地地址:
3000 - 域名类型:随机域名
- 地区:
China Top

创建成功后,在在线隧道列表中可以看到新生成的公网地址。

换到其他电脑或移动设备访问。

页面能够正常打开。
这一层真正验证的是:
AdGuard Home 的
3000Web 管理页面已经可以通过公网地址访问。
这和"公网 DNS 服务已经打通"不是一回事,两个概念不要混在一起。
9. 长期管理时,再换固定二级子域名
如果只是临时远程看一下页面,随机地址已经够用。
如果准备长期使用这个远程管理入口,再配置固定二级子域名会方便很多。
进入 cpolar 预留功能。

地区选择:
china Top
这次使用的二级子域名示例是:
adguard

然后回到 cpolar Web UI,在隧道列表中找到对应隧道并编辑。

更新以后,再查看在线隧道列表。

可以看到地址已经切换为固定二级子域名形式。
到这里,固定远程管理入口配置完成。
总结
这套方案可以拆成两个完全不同的部分:
AdGuard Home 负责 DNS 管理与过滤;cpolar 负责远程访问 AdGuard Home 的 Web 管理页面。
实际完成的链路是:
Linux / Windows 启动 AdGuard Home → 3000 管理页面 → 所有接口 → 用户名密码 → 上游 DNS → Bootstrap DNS → DNS 缓存 → 本地配置成立 → cpolar → 3000 随机公网访问 → adguard 固定二级子域名。
这次能够确认的具体步骤包括:
- RHEL / Debian 系安装
wget; - 下载
AdGuardHome_linux_amd64-v0.107.67.tar.gz; - 移动到
/opt并解压; - 创建
AdGuardHome.service; systemctl daemon-reload;systemctl restart AdGuardHome;- Windows 下载
AdGuardHome_windows_amd64.zip; - 初始化时选择"所有接口";
- 设置管理账号;
- 配置三条上游 DNS;
- 配置
119.29.29.29、223.5.5.5、223.6.6.6; - 完成 DNS 缓存相关设置;
- 安装 cpolar;
9200进入 cpolar Web UI;- 创建
adguard隧道; - 本地地址
3000; - 随机公网地址访问成功;
- 保留
adguard二级子域名; - 固定公网管理地址完成。
这篇没有强行加入某个个人"真实故事",因为素材更适合功能型教程。
人物感主要体现在一个判断上:
网络治理最怕把"能管理"写成"已经全网生效"。每一层做了什么,就只下这一层能支持的结论。
因此,像"一次部署全家生效""父母家直接使用""企业级网络治理""所有设备都获得统一过滤"这些更大的结论,这篇都不会直接当成已经实测完成。
真正可以确定的是:
AdGuard Home 的基础 DNS 配置已经完成,Web 管理界面也通过 cpolar 完成了随机公网地址和固定二级子域名的远程访问。