公共解析器是什么
递归解析器负责替客户端从根开始逐级问出答案,公共 DNS 就是开放给所有人用的递归解析器。自建递归不但要维护缓存与 DNSSEC,还要处理出海链路,多数场景直接用公共解析器更快;但解析结果直接决定 CDN 就近调度,不能随手全局替换。
基本信息
| 适用平台 | Linux/Windows/macOS/路由器/容器,任意能指定 nameserver 的环境 |
|---|---|
| 查询端口 | UDP/TCP 53;DoT 853;DoH 443 |
| 配置位置 | Linux /etc/resolv.conf;Windows 网卡 DNS 设置 |
| 选择要点 | 延迟、是否过滤恶意域名、是否支持 DoH/DoT |
常用公共 DNS
| 提供方 | IPv4 | DoH 端点 |
|---|---|---|
| 8.8.8.8 / 8.8.4.4 | https://dns.google/dns-query | |
| Cloudflare | 1.1.1.1 / 1.0.0.1 | https://cloudflare-dns.com/dns-query |
| 阿里公共 DNS | 223.5.5.5 / 223.6.6.6 | https://dns.alidns.com/dns-query |
| 腾讯 DNSPod | 119.29.29.29 / 182.254.116.116 | https://doh.pub/dns-query |
| 百度 | 180.76.76.76 | 未提供 |
| Quad9 | 9.9.9.9 / 149.112.112.112 | https://dns.quad9.net/dns-query |
| 114DNS | 114.114.114.114 / 114.114.115.115 | 未提供 |
指定解析器测试
指定解析器测试
dig @223.5.5.5 example.com +short # 国内解析器结果
dig @1.1.1.1 example.com +short # 境外解析器结果
dig +tcp @8.8.8.8 example.com +short # 强制走 TCP 53,验证 UDP 是否被拦
curl -H 'accept: application/dns-json' 'https://cloudflare-dns.com/dns-query?name=example.com&type=A'典型使用场景
- 云主机自带解析器不稳定或超时,临时切到公共解析器验证是否本地问题
- 对比国内外解析结果,判断是否存在污染或权威配置错误
- 在路由器上给整个局域网统一下发 DNS,避免逐台设备配置
- 容器或 CI 环境需要可预测的解析行为,固定使用指定解析器
- 企业出口劫持 53 端口时,改用 DoH/DoT 让查询走加密通道
三种查询方式对比
| 方式 | 端口 | 特点 |
|---|---|---|
| 明文 DNS | UDP/TCP 53 | 兼容性最好,内容可被中间设备观察和改写 |
| DoT | TCP 853 | TLS 加密,端口固定,容易被策略阻断 |
| DoH | TCP 443 | 混在 HTTPS 流量里,抗阻断能力最强 |
怀疑被污染时,用 dig 同时问国内外解析器并对比:只有境外解析器给出真实 IP,往往说明链路上存在改写。
公共解析器返回的 CDN 节点是按解析器所在机房就近选择,而不是按你所在位置。访问同城站点却拿到跨省节点时,换成运营商本地解析器往往立刻改善。
全局替换公共 DNS 会改变 CDN 的就近调度结果:部分服务商依赖本地解析器返回就近节点,跨省或跨境查询可能拿到更远的边缘节点。