← 返回题目列表

DNS 泛解析是什么?*.example.com 为什么可能带来安全和运维问题?

中等 第 19 / 27 题 更新于 2026/08/02
DNS泛解析域名配置

简化版

DNS 泛解析是用通配符记录匹配未显式配置的子域名,例如 *.example.com A 1.2.3.4

当用户查询 abc.example.com,如果没有更具体的记录,就可能命中泛解析,返回同一个 IP。它适合多租户、临时子域、统一入口等场景。

风险是拼错域名也可能解析成功,隐藏配置错误;还可能扩大子域接管、钓鱼、Cookie 域作用域和日志噪声等问题。

详细版

示例:

*.example.com. 300 IN A 203.0.113.10

查询:

foo.example.com -> 203.0.113.10
bar.example.com -> 203.0.113.10

如果已经存在更具体记录:

api.example.com. 300 IN A 203.0.113.20

那么 api.example.com 通常优先匹配显式记录,而不是泛解析。

泛解析不是正则表达式,也不是无限层级万能匹配,它有 DNS 自己的匹配规则。

完整版教学

1. 先定义泛解析

泛解析就是在 DNS 中配置通配符名称。

常见形式:

*.example.com. IN A 203.0.113.10

它表示某些未显式存在的子域名可以匹配这个记录。

泛解析解决的是“大量未知子域名统一指向”的问题。

2. 显式记录优先

如果同时存在:

*.example.com.   IN A 203.0.113.10
api.example.com. IN A 203.0.113.20

查询 api.example.com 时,通常返回显式记录。

查询 test.example.com 时,如果没有显式记录,才命中通配符。

这意味着泛解析更像兜底规则,不是覆盖所有规则。

3. 常见应用场景

泛解析常用于:

  • SaaS 多租户子域名。
  • 用户个人站点。
  • 临时预览环境。
  • 统一网关入口。
  • 内网开发环境。

例如每个租户一个子域:

tenant-a.example.com
tenant-b.example.com
tenant-c.example.com

泛解析可以把所有租户请求先打到同一入口,再由应用按 Host 路由。

4. 风险对比表

风险表现影响
拼写错误被掩盖错域名也解析成功排查困难
钓鱼子域任意子域都可访问入口品牌风险
Cookie 作用域过大.example.com Cookie 被更多子域携带安全边界变宽
日志噪声大量随机子域请求监控告警污染
子域接管混淆不清楚哪个子域真实存在安全扫描复杂

所以泛解析要配合应用层 Host 校验。

5. 泛解析不是应用路由

DNS 只负责把名称解析到地址。

真正决定 a.example.com 对应哪个租户,通常在应用、网关或反向代理里完成。

例如 Nginx 或应用会读取:

Host: tenant-a.example.com

然后路由到对应租户。

如果应用没有白名单校验,任意随机子域都可能进入业务逻辑。

6. 运维建议

使用泛解析时建议:

  • 明确哪些子域允许访问。
  • 应用层做 Host 白名单或租户校验。
  • 关键子域使用显式记录。
  • 监控异常随机子域流量。
  • 谨慎设置顶级 Cookie Domain。
  • 对废弃租户或预览环境及时清理。

如果只是少量固定子域,不一定需要泛解析。

显式记录更清晰。

7. 常见误区与追问

  • 误区:*.example.com 会匹配 example.com。 根域通常需要单独配置记录。
  • 误区:泛解析能替代应用层租户校验。 DNS 只解析地址,租户合法性要应用判断。
  • 误区:泛解析没有安全影响。 它会扩大可访问主机名集合,影响 Cookie、日志和钓鱼风险。
  • 追问:显式记录和泛解析谁优先? 通常更具体的显式记录优先。
  • 追问:泛解析适合 SaaS 吗? 适合,但必须配合 Host 路由和租户校验。
  • 追问:为什么拼错域名也能访问? 因为未显式配置的子域可能命中通配符记录。

8. 加强记忆

泛解析记成“DNS 兜底入口”。

它让未知子域有路可走,但应用必须判断这条路该不该让它进门。