搭建私有 DNS 服务器,实现去广告、防污染和加密查询,全面掌控域名解析过程,提升网络安全与隐私。本指南主讲 AdGuard Home 完整部署与进阶调优,并带您玩转 Mosdns 国内外分流与 Tailscale 组网统一 DNS。
📚 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、家长控制等丰富功能,是新手的最佳选择。支持 DoH/DoT/DoQ,配置简单。
Pi-hole
老牌广告过滤 DNS,生态成熟,规则库极丰富。但不支持原生 DoH 上游(需搭配 cloudflared),界面比 AdGuard Home 略旧。适合追求极致规则覆盖的用户。
Mosdns
2025-2026 年最流行的进阶 DNS 路由器。通过插件化配置实现国内外分流解析,国内域名走国内 DNS,国外走 DoH,彻底解决 DNS 污染与速度的矛盾。
🔐 加密 DNS 协议对比
传统 DNS 查询(端口 53)是明文传输的,任何网络中间人(ISP/公共 WiFi)都能看到您访问了哪些网站。为了防泄漏和防劫持,现代 DNS 引入了加密协议:
| 协议 | 全称 | 端口 | 特点与伪装性 |
|---|---|---|---|
| DoT | DNS over TLS | 853 | 使用专门端口加密。速度较快,但端口固定,容易被防火墙识别并封锁。 |
| DoH | DNS over HTTPS | 443 | 将 DNS 查询包装成普通 HTTPS 请求。伪装性极强,几乎无法被封锁。目前最推荐的标准。 |
| DoQ | DNS over QUIC | 784/853 | 基于 UDP 的新一代协议,零延迟握手,弱网环境表现远优于前两者,普及率尚在增长中。 |
| Plain | 传统明文 DNS | 53 | 无任何加密,ISP 可见全部查询记录,易被污染/劫持。仅内网可信环境使用。 |
🛡️ AdGuard Home 完整部署
推荐使用 Docker 部署 AdGuard Home,隔离环境且易于管理。提供两种方式:
方式一:Docker Compose(推荐,便于维护)
创建 /opt/adguard/docker-compose.yml:
# 文件路径:/opt/adguard/docker-compose.yml
services:
adguardhome:
image: adguard/adguardhome:latest
container_name: adguardhome
restart: unless-stopped
network_mode: host # host 模式直接使用宿主机网络,避免 NAT 问题
volumes:
- ./workdir:/opt/adguardhome/work
- ./confdir:/opt/adguardhome/conf
# 如果不用 host 模式,用以下 ports 配置:
# ports:
# - "53:53/tcp"
# - "53:53/udp"
# - "80:80/tcp"
# - "3000:3000/tcp"
# - "853:853/tcp" 启动:
cd /opt/adguard && docker compose up -d 方式二:Docker Run(快速启动)
docker run --name adguardhome \
-v /opt/adguard/workdir:/opt/adguardhome/work \
-v /opt/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,按向导设置管理员账号。初始化完成后管理面板移至 80 端口,DNS 服务在 53 端口。
配置上游加密 DNS(防污染核心)
在 设置 → DNS 设置 → 上游 DNS 服务器 中填入以下地址(推荐选 2-3 个并开启"并行请求"):
| 服务商 | 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 |
| AliDNS(国内) | https://dns.alidns.com/dns-query | tls://dns.alidns.com |
⚙️ DNS 过滤器 → 推荐封锁清单
- AdGuard DNS filter:AdGuard 官方维护,综合性最强
- EasyList:全球最广泛使用的广告过滤规则
- EasyPrivacy:隐私保护,屏蔽各类追踪器
- AdAway Default Blocklist:移动端广告过滤专项
- NoCoin Filter List:屏蔽网页挖矿脚本
位置:过滤器 → DNS 封锁清单 → 添加封锁清单
🔧 必读:53 端口占用解决方案
在 Ubuntu 20.04+ / Debian 12+ 系统上,systemd-resolved 默认占用 53 端口,导致 AdGuard Home 无法启动。这是最高频的部署卡点,以下提供三种解决方案:
# ── 检查 53 端口占用情况 ─────────────────────────────────────────────────────
ss -tlunp | grep ':53'
# 如果看到 systemd-resolved 或 dnsmasq 占用,按下面步骤处理
# ── 方案一:停用 systemd-resolved(Debian/Ubuntu 最常见原因)────────────────
# 1. 停止并禁用 systemd-resolved
systemctl stop systemd-resolved
systemctl disable systemd-resolved
# 2. 删除 /etc/resolv.conf 的符号链接,创建真实文件
rm /etc/resolv.conf
cat > /etc/resolv.conf << 'EOF'
nameserver 1.1.1.1
nameserver 8.8.8.8
EOF
# 3. 验证 53 端口已释放
ss -tlunp | grep ':53'
# 无输出说明端口已释放,可以启动 AdGuard Home
# ── 方案二:修改 systemd-resolved 不监听 53(保留其他功能)──────────────────
# 编辑 /etc/systemd/resolved.conf,找到 DNSStubListener 行修改为:
# DNSStubListener=no
sed -i 's/#DNSStubListener=yes/DNSStubListener=no/' /etc/systemd/resolved.conf
systemctl restart systemd-resolved
# ── 方案三:让 AdGuard Home 监听非标准端口 + iptables 转发 ────────────────────
# AdGuard 监听 5300 端口,再用 iptables 把外部 53 流量转到 5300
iptables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-port 5300
iptables -t nat -A PREROUTING -p tcp --dport 53 -j REDIRECT --to-port 5300
# 使用 iptables-persistent 持久化规则 ✅ 推荐方案一:直接停用 systemd-resolved,操作最简单,适合 VPS 环境(VPS 不需要 systemd-resolved 的本地 mDNS 功能)。
📋 优质广告过滤规则推荐
AdGuard DNS filter
官方推荐AdGuard 官方维护,综合性最强,覆盖广告/追踪/恶意域名
https://adguardteam.github.io/HostlistsRegistry/assets/filter_1.txt 1Hosts (Pro)
高覆盖高度精细化的多平台封锁清单,拦截率极高,误杀率低
https://o0.pages.dev/Pro/adblock.txt AdGuard中文过滤器
国内专属专为中文互联网设计,覆盖国内各大平台广告和追踪
https://filters.adtidy.org/extension/chromium/filters/224.txt Hagezi DNS Blocklist
2026新锐2024-2026年快速崛起的高质量规则集,更新频繁,误杀率低
https://raw.githubusercontent.com/hagezi/dns-blocklists/main/adblock/pro.txt ⚙️ 进阶:高级调优与 DNS 重写
1. 乐观缓存(Optimistic Caching)
在 设置 → DNS 设置 → DNS 缓存配置 中强烈建议开启乐观缓存。原理:当缓存记录 TTL 过期时,立刻返回旧记录给用户(极速响应),同时后台异步更新缓存。用户感知不到任何延迟,上网流畅度大幅提升。
2. DNS 重写(自定义解析)
在 过滤器 → DNS 重写 中可以为内网设备设置友好域名,免去记忆 IP 地址的烦恼:
# 将 nas.lan 解析到内网 IP(局域网设备友好域名)
nas.lan → 192.168.1.100
# 将 router.lan 解析到路由器
router.lan → 192.168.1.1
# 强制将广告追踪平台解析到本地环回(彻底拦截)
bad-tracker.com → 127.0.0.1
# 为外网特定域名指定 IP(无需修改 hosts 文件)
my-server.yourdomain.com → 198.51.100.10 💡 DNS 重写使用场景
- 局域网 NAS 用
nas.local访问,不用记192.168.1.100 - Tailscale 组网内服务通过域名而非
100.x.x.x访问 - 强制特定广告域名解析到
0.0.0.0(比封锁更彻底) - 测试环境将生产域名重定向到开发机 IP
✏️ 进阶:自定义过滤规则语法
AdGuard Home 支持与 AdBlock 兼容的规则语法,可以在 过滤器 → 自定义过滤规则 中直接编写:
# ── AdGuard Home 自定义过滤规则语法速查 ─────────────────────────────────────
# 1. 屏蔽域名(最基础)
||example.com^
# 等效写法(也会屏蔽所有子域名)
||*.example.com^
# 2. 放行域名(白名单,优先级高于屏蔽规则)
@@||example.com^
@@||cdn.example.com^
# 3. 屏蔽特定子域名(不影响主域名)
||ads.example.com^
# 4. 仅屏蔽完全匹配的域名
|example.com|
# 5. 屏蔽包含关键词的域名
/ads/
/tracker/
# 6. 注释行(不生效)
# 这是注释
# ── 实用场景示例 ─────────────────────────────────────────────────────────────
# 屏蔽所有广告相关子域名
||ad.*.com^
||ads.*.com^
||adservice.google.com^
# 放行被误杀的必要域名
@@||api.github.com^
@@||raw.githubusercontent.com^
@@||update.googleapis.com^
# 屏蔽已知追踪域名
||analytics.google.com^
||connect.facebook.net^
||doubleclick.net^ 📡 实战:对外提供自建 DoH 服务
如果希望在出差时,手机在蜂窝网络下也能使用 VPS 上的去广告 DNS,需要对外暴露加密 DNS 服务(直接暴露 53 端口会被当作 DDoS 放大攻击肉鸡)。最佳实践是用 Nginx 反代 AdGuard Home,提供 DoH 服务:
Nginx 配置(/etc/nginx/conf.d/dns-doh.conf):
server {
listen 443 ssl;
http2 on;
server_name dns.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/dns.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/dns.yourdomain.com/privkey.pem;
# 将请求反向代理到 AdGuard Home 的 DoH 端口
location /dns-query {
proxy_pass http://127.0.0.1:3000/dns-query;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
} 配置完成后,您的私人加密 DNS 地址是 https://dns.yourdomain.com/dns-query,可以填入手机或浏览器的"私有 DNS"选项。
🔀 2026新玩法:Mosdns 国内外分流解析
AdGuard Home 是广告过滤的利器,但上游 DNS 只能统一配置。对于国内用户,最理想的状态是:国内域名(baidu.com/taobao.com)走国内 DNS(速度快),国外域名(google.com/github.com)走 DoH(防污染)。这需要 Mosdns 在中间做分流路由。
🏗️ 整体架构
安装 Mosdns
# ── 安装 Mosdns v5(2025-2026 主流版本)────────────────────────────────────
# 项目地址:https://github.com/IrineSistiana/mosdns
# 下载最新版
VERSION=$(curl -s https://api.github.com/repos/IrineSistiana/mosdns/releases/latest | grep '"tag_name"' | cut -d'"' -f4)
wget "https://github.com/IrineSistiana/mosdns/releases/download/${VERSION}/mosdns-linux-amd64.zip"
unzip mosdns-linux-amd64.zip
mv mosdns /usr/local/bin/
chmod +x /usr/local/bin/mosdns
# 创建配置目录
mkdir -p /etc/mosdns
# 安装为 systemd 服务
mosdns service install -d /etc/mosdns -c /etc/mosdns/config.yaml
systemctl enable --now mosdns 分流配置文件
创建 /etc/mosdns/config.yaml:
# 文件路径:/etc/mosdns/config.yaml
# Mosdns 分流配置:国内域名走国内 DNS,国外域名走 DoH
# 效果:国内网站解析快 + 国外域名防污染
log:
level: info
# 插件定义
plugins:
# ── 上游 DNS 插件 ──────────────────────────────────────────────────────────
# 国内权威 DNS(直接查询,不加密,速度最快)
- tag: forward_cn
type: forward
args:
upstreams:
- addr: "https://doh.pub/dns-query" # DNSPod DoH
- addr: "https://dns.alidns.com/dns-query" # AliDNS DoH
# 国外可信 DNS(走 DoH 加密,防污染)
- tag: forward_global
type: forward
args:
upstreams:
- addr: "https://cloudflare-dns.com/dns-query"
- addr: "https://dns.google/dns-query"
# ── 规则匹配插件 ──────────────────────────────────────────────────────────
# 国内域名列表(来自 v2fly/domain-list-community)
- tag: geosite_cn
type: domain_set
args:
files:
- "/etc/mosdns/geosite_cn.txt" # 国内域名列表文件
# 国内 IP 列表(用于验证返回的 IP 是否为国内 IP)
- tag: geoip_cn
type: ip_set
args:
files:
- "/etc/mosdns/geoip_cn.txt" # 国内 IP 段文件
# ── 主处理流程 ─────────────────────────────────────────────────────────────
- tag: main_sequence
type: sequence
args:
- matches: qname $geosite_cn # 如果是国内域名
exec: forward $forward_cn # 走国内 DNS
- exec: forward $forward_global # 否则走国外 DoH
# 监听配置
servers:
- exec: main_sequence
listeners:
- protocol: udp
addr: "127.0.0.1:5335" # 监听本地 5335 端口
- protocol: tcp
addr: "127.0.0.1:5335" 下载规则数据并与 AdGuard Home 联动
# ── 下载规则数据文件 ─────────────────────────────────────────────────────────
cd /etc/mosdns
# 下载国内域名列表(v2fly 社区维护)
wget -O geosite_cn.txt https://raw.githubusercontent.com/Loyalsoldier/v2ray-rules-dat/release/direct-list.txt
# 下载国内 IP 段
wget -O geoip_cn.txt https://raw.githubusercontent.com/Loyalsoldier/geoip/release/text/cn.txt
# ── 将 AdGuard Home 的上游指向 Mosdns ────────────────────────────────────────
# 在 AdGuard Home 管理面板 → 设置 → DNS 设置 → 上游 DNS 服务器 中填入:
# 127.0.0.1:5335
# 这样:用户请求 → AdGuard Home(广告过滤)→ Mosdns(分流)→ 国内/国外 DNS
# ── 设置每周自动更新规则 ──────────────────────────────────────────────────────
# 添加 crontab(每周日凌晨 3 点更新):
# 0 3 * * 0 cd /etc/mosdns && wget -q -O geosite_cn.txt https://raw.githubusercontent.com/Loyalsoldier/v2ray-rules-dat/release/direct-list.txt && wget -q -O geoip_cn.txt https://raw.githubusercontent.com/Loyalsoldier/geoip/release/text/cn.txt && systemctl restart mosdns 🦖 进阶:结合 Tailscale 组网统一 DNS
如果您已经按照第24篇搭建了 Tailscale 组网,可以将 VPS 上的 AdGuard Home 设为整个组网的统一 DNS 服务器。这样组网内所有设备(手机、电脑、其他 VPS)无论在哪里,都自动享受广告过滤和防污染解析,无需在每台设备上单独配置。
# ── 将 AdGuard Home 设为 Tailscale 组网内的统一 DNS ─────────────────────────
# 1. 查看 AdGuard Home 所在设备的 Tailscale IP
tailscale ip -4
# 输出类似:100.64.1.2(记录下来)
# 2. 在 Tailscale 管理后台配置全局 DNS
# 访问:https://login.tailscale.com/admin/dns
# → 点击 "Add nameserver"
# → 填入步骤1的 Tailscale IP(如 100.64.1.2)
# → 勾选 "Override local DNS"(覆盖所有设备的 DNS)
# 3. 验证组网内其他设备的 DNS 是否指向 AdGuard Home
# 在任意组网设备上执行:
nslookup google.com 100.64.1.2
# 或者直接访问 AdGuard Home 面板,查看查询日志是否有该设备的请求
# ── 效果 ─────────────────────────────────────────────────────────────────────
# 组网内所有设备(手机/电脑/服务器)自动使用 AdGuard Home 作为 DNS
# - 统一广告过滤(手机浏览器广告也没了)
# - 统一防污染(所有设备 DNS 查询走 DoH)
# - DNS 重写(nas.lan 在所有设备上都能解析到正确 IP)
# - 无需在每台设备上单独配置 DNS
💡 与 Tailscale Magic DNS 的关系: Tailscale 自带 Magic DNS(设备通过名字互访),将 AdGuard Home 设为 Tailscale DNS 后,Magic DNS 和 AdGuard Home 可以共存——只需在 AdGuard Home 的 DNS 重写中也添加对应的 Magic DNS 条目(如 my-vps.tailnet.ts.net → 100.64.1.2),两者不冲突。
💻 客户端配置
服务器搭建好后,需要将设备指向它。最佳实践是在路由器上设置,让所有连接 WiFi 的设备自动享受广告过滤。
路由器(推荐,一劳永逸)
登录路由器管理后台,在 DHCP 设置中将主 DNS 地址改为 AdGuard Home 所在机器的 IP。局域网内所有设备自动使用,无需逐台配置。
Android 手机
设置 → 网络 → 私人 DNS,填入 DoT 域名(如 dns.yourdomain.com)或使用支持 DoH 的第三方 App(如 Nebulo)。
iOS / iPadOS
使用 Apple Configurator 生成包含 DoH 配置的描述文件安装,或通过 Shadowrocket 等 App 的 DNS 选项接管系统 DNS。
Windows / macOS
系统网络设置中直接填 DNS IP(内网部署);或在 Chrome/Firefox 浏览器设置中开启 DoH 并填入自建 DoH 地址(公网部署)。
🌐 权威 DNS 简介
我们上面搭建的 AdGuard Home 属于递归 DNS(转发 DNS)——它负责替我们向别人查询。而权威 DNS正好相反,它"持有"一个域名的官方记录,告诉全世界"我这个域名的 IP 是多少"。
如果您想自己托管域名解析而不使用 Cloudflare 或注册商提供的 DNS,就需要搭建权威 DNS 服务器,通常使用 BIND9 或 CoreDNS,需要管理 Zone 文件和各类记录(A/CNAME/MX 等),配置更为复杂,属于更专业的进阶范畴。
🔧 故障排查
❌ AdGuard Home 启动失败,提示端口 53 已占用
systemd-resolved 占用了 53 端口,执行 systemctl stop systemd-resolved && systemctl disable systemd-resolved 后重新启动 AdGuard Home 即可。
❌ 客户端完全无法上网
- 检查 VPS 防火墙是否开放了 DNS 端口(TCP/UDP 53):
ufw allow 53/tcp && ufw allow 53/udp - 测试 DNS 服务是否响应:
nslookup google.com 你的DNS_IP - 登录 AdGuard Home 管理面板,查看"查询日志"是否有请求流入
- 检查 Docker 容器是否在运行:
docker ps | grep adguard
⚠️ 某个正常网站或 App 无法工作
@@||误杀域名^ 白名单规则。
⚠️ Mosdns 启动后 AdGuard Home 解析速度变慢
/etc/mosdns/geosite_cn.txt 是否存在且有内容;② 国内 DoH 上游(DNSPod/AliDNS)连接异常,用 curl https://doh.pub/dns-query 测试;③ 在 AdGuard Home 的"乐观缓存"未开启,首次查询时需要等 Mosdns 响应。建议同时开启 AdGuard Home 的乐观缓存,重复查询走缓存,感知不到 Mosdns 的延迟。
❓ 常见问题解答
AdGuard Home 和 Pi-hole 怎么选?
2026 年绝大多数场景推荐 AdGuard Home:① 原生支持 DoH/DoT 上游(Pi-hole 需要额外安装 cloudflared 才能走加密 DNS);② 界面更现代,操作更直观;③ 支持 HTTPS/DoT/DoQ 服务端(对外暴露加密 DNS 无需额外配置 Nginx);④ 更新更活跃,新功能迭代快。Pi-hole 的优势:社区更大,历史更久,部分规则列表只为 Pi-hole 维护;配合 Unbound 可以实现真正的递归 DNS 而非转发 DNS,隐私性更高(不依赖任何上游 DNS 服务商)。总结:新用户直接选 AdGuard Home;追求极致隐私或有特殊规则需求的用户可以考虑 Pi-hole + Unbound 方案。
自建 DNS 放在 VPS 上还是放在家里局域网内更好?
两者各有适用场景:家庭局域网(如树莓派/NAS)的优势——延迟极低(局域网内通信),即使 VPS 断线也不影响上网,适合家庭环境;缺点是出门后手机无法使用。VPS 上部署的优势——可以通过 DoH 对外服务,出差时手机也能用;配合 Tailscale 组网后家庭设备同样可以访问;稳定性高(VPS 99.9% 在线);缺点是 VPS 到客户端有一定延迟(通常 20-100ms,乐观缓存开启后实际感知极小)。推荐方案:VPS + Tailscale 组网的组合,出门在家都能用,既有公网服务能力又有组网内低延迟访问。
自建 DNS 对外暴露后安全吗?会不会被利用做 DDoS 放大攻击?
直接将 UDP 53 端口对外暴露确实有 DNS 放大攻击(DNS Amplification)的风险——攻击者伪造受害者 IP 发送查询,利用 DNS 响应比请求大很多倍的特性放大流量攻击受害者。防护方案:① 不要对外开放 UDP/TCP 53:防火墙只允许内网或 Tailscale 组网 IP 访问 53 端口(ufw allow from 100.64.0.0/10 to any port 53);② 仅对外提供 DoH(HTTPS 443 端口):通过 Nginx 反代,DoH 天然不容易被用于 DNS 放大攻击;③ AdGuard Home 本身支持 Rate Limiting(速率限制),在设置中开启可以限制单 IP 的请求频率。正确配置后自建 DNS 是安全的。
AdGuard Home 广告拦截率怎么样?能拦截手机 App 内广告吗?
DNS 级别的广告过滤原理是屏蔽广告服务器的域名,因此:能拦截的:网页横幅广告、追踪脚本、大多数 App 开屏广告(走独立广告域名的)、YouTube 前贴片广告(通过 hosts 规则);无法拦截的:YouTube 视频内广告(谷歌将广告与视频流合并到同一域名,DNS 无法区分)、微博/抖音等国内平台内嵌广告(广告与内容来自同一域名)、HTTPS 协议下的部分追踪(需要 MitM 才能看到请求内容)。综合拦截率:配合 Hagezi 或 AdGuard 官方规则集,日常广告拦截率约 60-80%,对网页广告效果尤其显著,手机 App 广告效果参差不齐。与浏览器扩展(uBlock Origin)配合使用效果最佳。
Mosdns 分流配置后,如何验证国内外域名走了正确的 DNS?
验证方法:① 查看 Mosdns 日志:journalctl -u mosdns -f,查询时日志会显示每个域名走了哪个上游;② 对比解析结果:dig baidu.com @127.0.0.1 -p 5335 应返回国内 IP(说明走了国内 DNS);dig google.com @127.0.0.1 -p 5335 应返回境外 IP(说明走了 DoH);③ AdGuard Home 查询日志:点击某条查询记录,可以看到 AdGuard 将其转发给了哪个上游(应显示 127.0.0.1:5335 即 Mosdns);④ 使用 browserleaks.com/dns 在配置了 DNS 的设备上测试,看返回的 DNS 服务器是否符合预期。
AdGuard Home 的查询日志会保存多久?会不会占用太多磁盘空间?
默认情况下 AdGuard Home 保留 90 天的查询日志,在家庭环境下日志文件可能增长到数百 MB。调整方法:在 设置 → 常规设置 → 查询日志保留时间 中修改,建议改为 7-30 天;如果非常在意隐私,可以完全关闭查询日志(但这样就无法在日志中排查被误杀的域名)。统计数据(总拦截数、请求数图表)由单独的 统计保留时间 控制,可以独立设置。日志存储在 /opt/adguardhome/work/querylog.json,可以定期手动清理或设置 logrotate。
使用自建 DNS 后,访问国内网站是否会变慢?
取决于您的配置:① 统一走境外 DoH(如 Cloudflare):国内域名解析可能返回境外 CDN 节点而非国内节点,访问速度变慢。例如淘宝可能被解析到新加坡服务器;② 配合 Mosdns 分流(推荐):国内域名走国内 DNS(DNSPod/AliDNS),返回正确的国内 CDN IP,访问速度与直接使用 ISP DNS 相当;③ 乐观缓存开启后:DNS 解析本身的时间对用户感知影响极小(大部分域名从缓存直接返回),瓶颈在网络连接本身而非 DNS。综合建议:开启 Mosdns 分流 + AdGuard Home 乐观缓存,访问国内外网站速度都不会有明显下降。
AdGuard Home 更新后配置丢失怎么办?如何备份配置?
AdGuard Home 的所有配置保存在 /opt/adguardhome/confdir/AdGuardHome.yaml 文件中,备份这个文件即可保留所有设置(包括规则列表、上游 DNS、DNS 重写、用户账号等)。备份命令:cp /opt/adguardhome/confdir/AdGuardHome.yaml ~/adguard-backup-$(date +%Y%m%d).yaml。恢复:将备份文件复制回原路径,重启容器即可。自动备份集成:可以将此命令加入第19篇(数据备份)的自动备份脚本中,配合 Rclone 同步到 R2/S3,实现异地备份。Docker 用户注意:docker cp 也可以将容器内配置文件导出,但直接挂载 Volume 后操作宿主机目录更方便。
DoH 和代理软件的 DNS 有什么区别?两者能否同时使用?
两者解决的问题不同:DoH(本文):加密 DNS 查询本身,防止 ISP 窃听/污染 DNS 查询结果,但 DNS 查询仍然从您的真实 IP 发出(Cloudflare 能看到您的 IP 查了什么域名);代理软件 DNS(第25篇):通过代理隧道发送 DNS 查询,DNS 服务器看到的是代理节点 IP,隐私性更高,同时能绕过 GFW 对 DNS 的污染。两者结合的最佳实践:使用 AdGuard Home 做广告过滤 + 本地缓存,将上游指向 Mosdns(国内走 DNSPod DoH,国外走代理软件内的 DNS),既有广告过滤又有防污染——参见第25篇的 DNS 防泄露配置章节。