DNS 管家通过 VPN 隧道劫持设备的所有 DNS 流量(端口 53),基于高性能 DNS 引擎进行域名解析与屏蔽。支持加密 DNS 上游和域名屏蔽规则。
一、工作原理
DNS 管家通过 HarmonyOS VPN 捕获设备的所有网络流量,解析为 TCP/UDP 流后,按目标端口分流:
- UDP:53 / TCP:53 — DNS 流量,交给 DNS 引擎处理
- 其他 UDP — QUIC 阻断策略检测或透明转发
- 其他 TCP — MITM 检测或透明转发
DNS 流量进入引擎后,经过 Handler 链依次处理:
- Stage 1 — AdblockHandler:检查域名是否匹配屏蔽规则。匹配则返回 sinkhole IP(
0.0.0.0),阻止连接
- Stage 2 — ForwardHandler:未命中屏蔽规则的域名,转发到上游 DNS 服务器进行解析
二、上游 DNS 模式
DNS 管家支持两种 DNS 上游模式,根据是否配置加密上游自动切换:
1. 加密上游模式
用户配置了加密 DNS 服务器后,所有 DNS 查询通过加密协议转发到指定服务器,确保查询不被监听或篡改。
- 启动时预建转发处理器,所有查询直接委托转发
- 享有内置 DNS 缓存、UDP/TCP 自动降级、超时重试
- 固定转发到用户配置的 DoT / DoH / DoQ / DoH3 服务器
2. 系统 DNS 模式
未配置加密上游时,DNS 管家从 IP 包头获取原始目标 DNS 服务器地址,动态转发到系统原始 DNS。
- 自动适应 WiFi / 蜂窝网络切换导致的 DNS 变化
- 按目标地址动态创建和缓存转发处理器(上限 16 个)
- 使用 UDP + TCP 双协议、端口 53 转发
- 快路径读锁查找,慢路径写锁创建,double-check 防止并发重复创建
三、支持的协议格式
DNS 管家仅支持加密 DNS 协议,不支持明文 UDP/TCP DNS:
1. DNS-over-TLS (DoT)
使用 TLS 加密的 DNS 查询,安全性高:
tls://dns.google:853 — 通过域名
tls://8.8.8.8:853 — 通过 IP 地址
2. DNS-over-HTTPS (DoH)
使用 HTTPS 加密的 DNS 查询,兼容性强:
https://dns.google/dns-query — 通过域名
https://8.8.8.8:443/dns-query — 通过 IP 地址
3. DNS-over-QUIC (DoQ)
使用 QUIC 协议的 DNS 查询,低延迟:
quic://dns.adguard.com:853 — 通过域名
quic://8.8.8.8:853 — 通过 IP 地址
4. DNS-over-HTTP/3 (DoH3)
基于 HTTP/3 协议的 DNS 查询,兼具低延迟与加密:
h3://dns.google/dns-query — 通过域名
默认端口
- DoT / DoQ — 默认端口
853
- DoH / DoH3 — 默认端口
443
DoH 和 DoH3 支持自定义查询路径,不指定时默认为 /dns-query。DoT 和 DoQ 不支持路径。
地址解析
- 支持 IPv4 和域名输入
- IPv6 地址需用方括号包裹,如
tls://[2001:db8::1]:853
- 裸 IPv6 地址(不带方括号)会提示错误
四、域名屏蔽规则
DNS 管家内置高性能域名屏蔽功能,在 DNS 解析阶段拦截广告与追踪域名。
1. 工作机制
- AdblockHandler 在 ForwardHandler 之前执行,先检查屏蔽规则
- 命中屏蔽规则 → 返回 sinkhole IP(
0.0.0.0 或 ::),阻止连接
- 未命中 → 跳过,交给 ForwardHandler 转发到上游 DNS 解析
- 屏蔽检查在独立线程执行,不阻塞网络线程
- TTL 为 86400 秒(24 小时),客户端缓存 sinkhole 响应
2. 支持的格式
自动检测文件格式,支持混合导入:
- AdBlock Plus / uBlock Origin:
||example.com^、@@||example.com^(白名单)、$modifier、/regex/(正则)
- Hosts 格式:
0.0.0.0 example.com、127.0.0.1 example.com
- 纯域名:
example.com
||example.com^ 会自动匹配子域名(如 api.example.com),白名单规则 @@ 优先于屏蔽规则。
3. 使用方法
- 在首页点击「域名解析」卡片中的「规则列表」进入规则页面
- 点击右上角
+ 按钮,选择「导入本地规则」或「订阅远程规则」
- 导入本地规则时选择
.txt / .list / .conf 格式的规则文件
- 订阅远程规则时输入规则文件的 URL,应用会自动下载并校验
- 导入后可通过开关启用或禁用每条规则,也可随时更新或删除
- 被屏蔽的域名将返回
0.0.0.0,阻止其连接
4. 推荐规则源
可从以下社区获取规则文件(文本格式),下载后导入即可:
- AdGuard DNS filter
- EasyList / EasyPrivacy
- StevenBlack hosts
五、DNS 缓存
DNS 管家使用内置 DNS 缓存机制,减少对上游的重复查询:
- 缓存命中时直接返回结果,延迟趋近于零
- 缓存未命中时转发到上游 DNS,结果自动缓存
- 支持 UDP → TCP 自动降级(响应截断时)
- 超时自动重试,提升查询可靠性
- 完整的统计指标(cache_hit / cache_miss / cache_size)
六、上游校验
配置加密上游时,DNS 管家会自动校验服务器可用性:
- 解析上游地址(域名 → IP)
- 创建 DNS Resolver
- 向上游查询
baidu.com 的 A 记录和 AAAA 记录
- 任一记录查询成功即判定上游可用
- 校验失败会提示具体错误信息
七、注意事项
- DNS 管家仅支持加密协议(DoT / DoH / DoQ / DoH3),不支持明文 UDP/TCP DNS
- 所有协议均支持 IP 地址或域名输入
- 不同协议可能在不同网络环境下表现不同,请根据实际体验选择
- 某些网络环境可能会阻止加密 DNS 的连接
- 系统 DNS 模式下,DNS 管家会自动跟随系统 DNS 配置变化
- 屏蔽规则的生效时间为下次启动 DNS 服务时
八、联系我们
如您在使用过程中遇到问题,请通过以下方式与我们联系: