DNS服务器搭建指南
搭建私有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服务的标准端口,如果被占用,您需要先停止占用该端口的服务(如`systemd-resolved`)。
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
注意: 上述命令将Web管理界面映射到了80/443端口。如果您的VPS上已运行网站,请将 `-p 80:80/tcp` 和 `-p 443:443/tcp` 修改为其他端口,例如 `-p 3000:3000/tcp`。
初始化设置
在浏览器中访问 `http://<您的VPS IP>:3000`。您会看到AdGuard Home的初始化向导。按照提示设置好Web管理端口和DNS服务端口(保持默认即可),并创建您的管理员账号和密码。
» 核心配置详解
登录AdGuard Home仪表盘后,我们关注几个核心设置区域。
过滤器 -> DNS封锁清单 (广告过滤)
这里是广告过滤的核心。AdGuard Home内置了一些列表,您可以点击“添加阻止列表” -> “从列表中选择”来添加更多社区维护的规则,例如:
- AdAway Default Blocklist: 移动端广告过滤。
- EasyPrivacy: 隐私保护,屏蔽跟踪器。
- NoCoin Filter List: 屏蔽网页挖矿脚本。
对于国内用户,可以手动添加 `https://gitee.com/privacy-protection-rules/dead-simple-ad-rules/raw/master/adguard-home.txt` 等知名规则源。
» 配置加密DNS (防污染与隐私)
这是自建DNS最重要的功能之一,它可以加密您的DNS查询,防止被窃听或篡改。
设置 -> DNS设置
- 上游DNS服务器: 这里是AdGuard Home向谁请求DNS记录的地方。删除默认的,并填入您信赖的加密DNS地址。推荐使用 DNS-over-HTTPS (DoH) 或 DNS-over-TLS (DoT)。
服务商 DNS-over-HTTPS (DoH) 地址 DNS-over-TLS (DoT) 地址 Cloudflare https://cloudflare-dns.com/dns-query
tls://1.1.1.1
Google 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
- Bootstrap DNS服务器: 用于解析上游DoH/DoT服务器的域名。可以设置为可靠的公共DNS,如 `1.1.1.1` 或 `8.8.8.8`。
- 并行请求: 勾选此项可以同时向上游DNS服务器发送请求,取最快返回的结果,提升解析速度。
客户端配置
服务器搭建好后,需要将您的设备指向它。最佳实践是在**路由器**上设置,这样所有连接到该WiFi的设备都能自动享受去广告和安全DNS的好处。
- 路由器设置: 登录路由器管理后台,在“网络设置”或“DHCP服务器”中,将主DNS服务器地址修改为您的VPS IP地址。
- Windows/macOS: 在网络连接设置中,手动指定DNS服务器为您的VPS IP地址。
- iOS/Android: 可以使用系统自带的“私有DNS”功能,填入您的域名并选择DoT模式,或者使用AdGuard官方客户端。
故障排查
❌ 客户端无法上网
排查: 1. 检查VPS防火墙是否开放了DNS端口(TCP/UDP 53)。 2. 在客户端使用 nslookup google.com <您的VPS IP>
命令测试DNS服务器是否能正常响应。 3. 查看AdGuard Home的“查询日志”,看是否有请求进入和被阻止。
❌ 某个网站或App无法正常工作
排查: 很可能是该服务依赖的某个域名被广告过滤规则误杀。在AdGuard Home的“查询日志”中找到被阻止的相关域名,并将其加入白名单。