搭建私有 DNS 服务器,实现去广告、防污染和加密查询,全面掌控域名解析过程,提升网络安全与隐私。本指南将主讲 AdGuard Home 的部署与配置。
📚 DNS 基础知识
DNS (Domain Name System),即域名系统,是互联网的“电话簿”。它负责将人类易于记忆的域名(如 google.com)翻译成机器能够理解的 IP 地址(如 172.217.160.142)。
每次您访问网站时,您的设备都会先向一个 DNS 服务器查询该网站的 IP 地址,然后再通过 IP 地址与网站服务器建立连接。您使用的 DNS 服务器的优劣,直接决定了您的网络体验的安全性、隐私性和速度。
🚀 为何自建 DNS 服务器
虽然您的 ISP 或路由器已经提供了默认的 DNS 服务,但自建 DNS 服务器能带来革命性的体验提升。
拦截广告与跟踪
从源头过滤广告域名,保护所有接入设备的网络环境,提升浏览体验。
增强隐私与安全
防止 ISP 或公共 DNS 记录您的浏览历史,通过加密查询(DoH/DoT)防止 DNS 污染和中间人攻击。
自定义解析规则
强制重定向特定域名,或为内网服务设置友好域名,完全掌控网络访问。
提升解析速度
利用本地缓存加速重复请求的解析速度,并可选用全球最快的上游 DNS 服务。
🤔 DNS 方案选择
在 VPS 上搭建 DNS 服务,我们有多种成熟的方案可选。
AdGuard Home
功能强大且界面友好的网络广告拦截器。它提供了 Web 管理面板,配置简单,集成了广告过滤、加密 DNS、家长控制等丰富功能,是新手的最佳选择。
CoreDNS
一个用 Go 语言编写的、插件化的、灵活的 DNS 服务器。通过编辑配置文件驱动,没有 Web 界面,但扩展性极强,适合需要高度定制化规则的高级用户。
BIND9
历史最悠久、应用最广泛的 DNS 软件。功能极其强大和稳定,是搭建权威 DNS 服务器的行业标准,但配置相对复杂,不适合新手。
🛡️ AdGuard Home 实战
我们将使用 Docker 来快速部署 AdGuard Home,这是最推荐的方式,因为它隔离了环境且易于管理。
安装与初始化
安装 Docker
如果您的 VPS 尚未安装 Docker,请先执行官方一键安装脚本:
curl -fsSL https://get.docker.com | bash 运行 AdGuard Home 容器
执行以下命令来启动 AdGuard Home。请注意,`53` 端口是 DNS 服务的标准端口。
docker run --name adguardhome \
-v /my/adguard/workdir:/opt/adguardhome/work \
-v /my/adguard/confdir:/opt/adguardhome/conf \
-p 53:53/tcp -p 53:53/udp \
-p 80:80/tcp -p 443:443/tcp \
-p 853:853/tcp \
-p 3000:3000/tcp \
-d --restart unless-stopped \
adguard/adguardhome 初始化设置
在浏览器中访问 http://<您的 VPS IP>:3000。您会看到 AdGuard Home 的初始化向导。按照提示设置好 Web 管理端口和 DNS 服务端口(保持默认即可),并创建您的管理员账号和密码。
核心配置详解
过滤器 -> DNS 封锁清单
这里是广告过滤的核心。AdGuard Home 内置了一些列表,您也可以添加更多社区维护的规则:
- AdAway Default Blocklist: 移动端广告过滤。
- EasyPrivacy: 隐私保护,屏蔽跟踪器。
- NoCoin Filter List: 屏蔽网页挖矿脚本。
配置加密 DNS (防污染)
这是自建 DNS 最重要的功能之一,它可以加密您的 DNS 查询,防止被窃听或篡改。
推荐上游 DNS 设置
| 服务商 | DoH 地址 (推荐) | DoT 地址 |
|---|---|---|
| Cloudflare | https://cloudflare-dns.com/dns-query | tls://1.1.1.1 |
| https://dns.google/dns-query | tls://8.8.8.8 | |
| Quad9 (安全) | https://dns.quad9.net/dns-query | tls://9.9.9.9 |
| DNSPod (国内) | https://doh.pub/dns-query | tls://dns.pub |
设置位置: 设置 -> DNS 设置 -> 上游 DNS 服务器
建议勾选 "并行请求" 以提升解析速度。
💻 客户端配置
服务器搭建好后,需要将您的设备指向它。最佳实践是在**路由器**上设置,这样所有连接到该 WiFi 的设备都能自动享受去广告和安全 DNS 的好处。
路由器设置
登录路由器管理后台,在“网络设置”或“DHCP 服务器”中,将主 DNS 服务器地址修改为您的 VPS IP 地址。
移动设备 (iOS/Android)
可以使用系统自带的“私有 DNS”功能 (Android) 或配置描述文件 (iOS),填入您的 DoT/DoH 地址实现加密连接。
🌐 权威 DNS 简介
我们上面搭建的属于递归 DNS(或转发 DNS),它负责替我们向别人查询。而权威 DNS则正好相反,它负责“持有”一个域名的官方记录,并告诉别人“这个域名对应的 IP 是多少”。
如果您想自己托管域名的解析,而不是使用 Cloudflare 或域名注册商的 DNS 服务,您就需要搭建权威 DNS 服务器。这通常使用 BIND9 或 CoreDNS 软件,配置更为复杂,需要管理域名的 Zone 文件和各种记录(A, CNAME, MX 等),属于更专业的范畴。
🔧 故障排查
❌ 客户端无法上网
排查步骤:
- 检查 VPS 防火墙是否开放了 DNS 端口(TCP/UDP 53)。
- 在客户端使用
nslookup google.com <您的 VPS IP>命令测试 DNS 服务器是否能正常响应。 - 查看 AdGuard Home 的“查询日志”,看是否有请求进入和被阻止。
⚠️ 某个网站或 App 无法正常工作
排查: 很可能是该服务依赖的某个域名被广告过滤规则误杀。在 AdGuard Home 的“查询日志”中找到被阻止的相关域名,并将其加入白名单。