跳转至

AdGuard Home 深度调优:DNS 优化的终极指南

AdGuard Home (AGH) 是目前最流行的自托管 DNS 服务器。很多用户装好后发现:“网速好像变慢了”、“有些网站打不开了”。这通常是上游 DNS 和缓存配置不当导致的。

1. 上游 DNS 配置 (Upstream DNS)

这是决定解析速度和稳定性的关键。

A. 优选上游服务器

不要只填一个 8.8.8.8。建议混合使用国内高速 DNS 和国外加密 DNS。

  • 国内 (速度快):
    • https://dns.alidns.com/dns-query (阿里 DoH)
    • https://doh.pub/dns-query (腾讯 DoH)
    • 119.29.29.29 (腾讯 UDP)
  • 国外 (防污染):
    • tls://8.8.8.8 (Google DoT)
    • https://1.1.1.1/dns-query (Cloudflare DoH)
  • 配置策略:
    • 设置 > DNS 设置 中填入上述列表。
    • 模式选择: 强烈建议选择 “并行请求” (Parallel requests)。AGH 会同时向所有上游发送请求,谁先返回就用谁的结果。这是提速神器!

B. Bootstrap DNS

AGH 需要先解析 DoH/DoT 域名的 IP 才能建立连接。 * 填入当地运营商的 DNS IP (如 202.96.128.86) 或 114.114.114.114

2. 缓存优化 (Caching)

A. 乐观缓存 (Optimistic Caching)

这是让 DNS 响应达到 0ms 的黑科技。 * 原理: 当缓存过期时,AGH 仍然把过期的结果立即返回给客户端 (0ms),然后在后台默默去上游更新缓存。 * 开启: 在 设置 > DNS 设置 > 缓存配置 中,勾选 乐观缓存。 * 副作用: 极少数情况下,如果 IP 刚变动,你可能会拿到旧 IP (通常几秒后就正常了)。

B. 缓存大小

  • 缓存大小: 建议设置为 4MB 或更大。
  • 最小 TTL: 建议设置为 60300,强制覆盖那些 TTL 极短的域名,减少查询次数。

3. 客户端识别 (Client Identification)

很多用户发现 AGH 日志里所有请求的来源 IP 都是 172.x.x.x (Docker 网关 IP),无法区分是手机还是电脑。

A. 解决方案 1: Host 网络模式 (推荐)

  • 操作: 在 docker-compose.yml 中使用 network_mode: host
  • 优点: AGH 直接看到真实局域网 IP。
  • 缺点: 端口冲突风险 (需避开 NAS 自带的 53 端口)。

B. 解决方案 2: Macvlan 模式

  • 操作: 给容器分配一个独立的局域网 IP。
  • 优点: 完美解决端口冲突和 IP 识别。

C. 解决方案 3: 配置路由器 DHCP

  • 将路由器的 DHCP DNS 指向 AGH 的 IP。不要在电脑上单独设置。

4. 广告过滤规则 (Blocklists)

规则不是越多越好!规则太多会导致内存占用高,解析变慢,误杀率飙升。

A. 推荐规则

  • AdGuard DNS filter (官方基础规则)
  • Anti-AD (针对中文环境优化,误杀率低)
  • halflife/list (国内常用)

B. 白名单 (Allowlists)

如果发现某些网站 (如淘宝、京东) 图片加载不出来,通常是被误杀了。 * 检查: 查看 AGH 的 查询日志,筛选“已拦截”,找到误杀域名。 * 放行: 点击右侧的“放行”按钮。

5. ECS (EDNS Client Subnet)

  • 作用: 把你的大概位置 (IP 子网) 告诉上游 DNS,让 CDN 返回离你最近的节点 IP。
  • 设置: 在 设置 > DNS 设置 中,勾选 启用 EDNS 客户端子网
  • 注意: 这需要上游 DNS 支持 (阿里、腾讯、Google 都支持)。

6. Bogus NXDOMAIN (防止 DNS 劫持)

有些运营商会在域名不存在时返回一个广告页面的 IP。 * 设置: 填入运营商劫持的 IP 地址 (需抓包获取),AGH 会自动丢弃这些响应。