adguardHome

从零搭建自托管加密 DNS:AdGuard Home 完整配置指南

如果你受够了运营商的 DNS 劫持,想在手机、电脑上全局去广告,又希望保护上网隐私,这篇文章就是为你准备的。


📖 前言

我花了几天时间,从一台云服务器开始,一步步搭建了自己的加密 DNS 服务。整个过程踩了不少坑:证书申请、端口配置、iOS 描述文件、安卓 DoT 连接失败……最终所有设备都成功跑了起来。

这篇文章就是完整的操作记录,希望能帮你少走弯路。


🎯 最终效果

  • 全屋去广告:所有连接到 AdGuard Home 的设备自动屏蔽广告
  • 加密 DNS:手机蜂窝网络、公共 Wi-Fi 下 DNS 查询全程加密
  • 跨设备支持:iPhone、安卓、Windows 全部配置完成
  • 自动续期:证书到期自动更新,无需人工干预

🧱 整体架构

1
2
3
4
5
6
7
8
9
10
11
12
13
互联网


┌─────────────────┐
│ 云服务器 │
│ (公网 IP) │
│ 运行 AdGuard Home│
│ 监听 443/853 端口│
└─────────────────┘
│ │
▼ ▼
iPhone 安卓手机 电脑
(DoH/TLS) (DoH) (DoH)

第一部分:准备工作

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
2
3
sudo ufw allow 443/tcp
sudo ufw allow 853/tcp
sudo ufw reload

云服务商安全组:在控制台添加入站规则,允许 TCP 443 和 853 端口。


第五部分:各设备端配置

5.1 iPhone / iPad(通过描述文件)

推荐方式:使用在线工具生成描述文件

  1. 访问 dns.notjakob.com
  2. 选择 DNS-over-HTTPS (DoH)
  3. DoH server URL 填写:https://域名/dns-query
  4. IPv4/IPv6 填写你喜欢的公共DNS
  5. 生成并下载 .mobileconfig 文件
  6. 通过 QQ/微信/邮件传到 iPhone,iPhone用自带的文件APP另存,并在文件APP里打开,进行安装

安装路径:设置 → 通用 → VPN 与设备管理 → 已下载的描述文件

5.2 安卓手机(推荐 DoH)

安卓系统内置的“私人 DNS”仅支持 DoT(853 端口),但国内网络环境可能干扰 853 端口。推荐使用 DoH

使用 Intra 应用(Google 官方开源):

  1. 在 Google Play 下载 Intra

5.3 Windows 电脑

方法一:系统网络设置(推荐)

  1. 设置 → 网络和 Internet → Wi-Fi/以太网
  2. 点击当前网络 → DNS 服务器分配 → 编辑 → 填写你的服务器公网IP