adguardHome
从零搭建自托管加密 DNS:AdGuard Home 完整配置指南
如果你受够了运营商的 DNS 劫持,想在手机、电脑上全局去广告,又希望保护上网隐私,这篇文章就是为你准备的。
📖 前言
我花了几天时间,从一台云服务器开始,一步步搭建了自己的加密 DNS 服务。整个过程踩了不少坑:证书申请、端口配置、iOS 描述文件、安卓 DoT 连接失败……最终所有设备都成功跑了起来。
这篇文章就是完整的操作记录,希望能帮你少走弯路。
🎯 最终效果
- 全屋去广告:所有连接到 AdGuard Home 的设备自动屏蔽广告
- 加密 DNS:手机蜂窝网络、公共 Wi-Fi 下 DNS 查询全程加密
- 跨设备支持:iPhone、安卓、Windows 全部配置完成
- 自动续期:证书到期自动更新,无需人工干预
🧱 整体架构
1 | 互联网 |
第一部分:准备工作
1.1 域名与服务器
- 域名:我使用的是在 NameSilo 注册的域名
- 服务器:一台有公网 IP 的云服务器(我是阿里云)
- 系统:Ubuntu
1.2 域名解析
在 DNS 服务商控制台添加 A 记录:
| 记录类型 | 主机记录 | 记录值 |
|---|---|---|
| A | @ | 你的服务器公网 IP |
| A | www | 你的服务器公网 IP |
第二部分:安装 AdGuard Home
2.1 一键安装
1 | curl -s -S -L https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v |
安装完成后,访问 http://你的服务器IP:3000 进行初始化设置。
2.2 设置用户名和密码
按照网页指引完成设置,记住你设置的管理员账号密码。
第三部分:申请 SSL 证书
3.1 为什么需要证书?
AdGuard Home 启用 DoH/DoT 加密必须使用 SSL/TLS 证书。我使用 Let’s Encrypt 的免费证书。
3.2 手动申请证书(首次)
先通过手动 DNS 验证方式申请:
1 | sudo certbot certonly --manual --preferred-challenges=dns -d 域名 |
系统会提示你添加 TXT 记录:
1 | _acme-challenge.域名 TXT "这里是一串验证值" |
添加完成后等待生效,按回车继续。证书申请成功,一共有两份。
⚠️ 注意:--manual 方式不会自动续期!我们后面会改成自动方式。
3.3 查看证书内容
将输出的内容(从 -----BEGIN CERTIFICATE----- 到 -----END CERTIFICATE-----)复制下来。
第四部分:配置 AdGuard Home 加密
4.1 进入加密设置
登录 AdGuard Home 管理面板 → 设置 → 加密
4.2 填写证书
| 配置项 | 填写内容 |
|---|---|
| 启用加密 | ✅ 勾选 |
| 服务器名称 | 域名 |
| 证书 | 粘贴 fullchain.pem 的全部内容 |
| 私钥 | 粘贴 privkey.pem 的全部内容 |
| HTTPS 端口 | 443(DoH 端口) |
| DNS-over-TLS 端口 | 853(DoT 端口) |
💡 进阶做法:填完内容后,可以改为填写文件路径,方便自动续期时自动加载。
4.3 放行端口
服务器防火墙(如 ufw):
1 | sudo ufw allow 443/tcp |
云服务商安全组:在控制台添加入站规则,允许 TCP 443 和 853 端口。
第五部分:各设备端配置
5.1 iPhone / iPad(通过描述文件)
推荐方式:使用在线工具生成描述文件
- 访问 dns.notjakob.com
- 选择 DNS-over-HTTPS (DoH)
- DoH server URL 填写:
https://域名/dns-query - IPv4/IPv6 填写你喜欢的公共DNS
- 生成并下载
.mobileconfig文件 - 通过 QQ/微信/邮件传到 iPhone,iPhone用自带的文件APP另存,并在文件APP里打开,进行安装
安装路径:设置 → 通用 → VPN 与设备管理 → 已下载的描述文件
5.2 安卓手机(推荐 DoH)
安卓系统内置的“私人 DNS”仅支持 DoT(853 端口),但国内网络环境可能干扰 853 端口。推荐使用 DoH。
使用 Intra 应用(Google 官方开源):
- 在 Google Play 下载 Intra
5.3 Windows 电脑
方法一:系统网络设置(推荐)
- 设置 → 网络和 Internet → Wi-Fi/以太网
- 点击当前网络 → DNS 服务器分配 → 编辑 → 填写你的服务器公网IP