VPSKnow

DNS 服务器搭建指南

高级
50分钟

搭建私有 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,这是最推荐的方式,因为它隔离了环境且易于管理。

安装与初始化

1

安装 Docker

如果您的 VPS 尚未安装 Docker,请先执行官方一键安装脚本:

curl -fsSL https://get.docker.com | bash
2

运行 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
⚠️ 注意: 如果 53 端口被占用,您可能需要先停止系统自带的 `systemd-resolved` 服务。
3

初始化设置

在浏览器中访问 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
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

设置位置: 设置 -> 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 等),属于更专业的范畴。

🔧 故障排查

❌ 客户端无法上网

排查步骤:

  1. 检查 VPS 防火墙是否开放了 DNS 端口(TCP/UDP 53)。
  2. 在客户端使用 nslookup google.com <您的 VPS IP> 命令测试 DNS 服务器是否能正常响应。
  3. 查看 AdGuard Home 的“查询日志”,看是否有请求进入和被阻止。
⚠️ 某个网站或 App 无法正常工作

排查: 很可能是该服务依赖的某个域名被广告过滤规则误杀。在 AdGuard Home 的“查询日志”中找到被阻止的相关域名,并将其加入白名单。

🎯 下一步行动

想让 DNS 解析更快?

如果自建 DNS 依然延迟高,可能是服务器线路问题。看看我们推荐的低延迟 VPS。