泛解析是什么
泛解析是在区域文件里用 * 标记一条记录,让所有「不存在更精确记录」的子域名都得到同一个答案。它不是一种独立的记录类型,只是名字中的通配符,语义定义在 RFC 4592。常见形态是 *.example.com 指向一个固定地址、一个 CDN 的 CNAME,或指向挂通配符证书的入口。
基本信息
| 本质 | 名字中的通配符标记,不是独立记录类型 |
|---|---|
| 规范 | RFC 4592 通配符语义 |
| 生效条件 | 查询名不存在更精确的匹配时 |
| 不覆盖 | 区域顶点本身,需单独配置 |
| 证书配套 | 需要通配符证书才能完成握手 |
| 常见记录 | A、AAAA、CNAME |
典型使用场景
- 多租户 SaaS:每个客户一个子域名,靠泛解析免去逐条加记录与等待生效
- 预览与临时环境:给随机生成的子域名统一提供同一个入口
- 收拢拼错的域名:把错误子域也导到主站,代价是误收流量与日志噪声
- 灰度与快速开通:新子域立即可用,不必走一次解析变更流程
- 通配符证书统一入口:接入层与管理层都按同一张证书处理域名
配置与验证
配置与验证
*.example.com. 600 IN A 203.0.113.10 # 泛解析一条
foo.example.com. 600 IN A 203.0.113.20 # 更精确的记录优先
dig +short foo.example.com A # → 203.0.113.20,精确记录赢
dig +short bar.example.com A # → 203.0.113.10,走通配符
dig +short example.com A # → 顶点不受通配覆盖,需单独配置匹配结果对照
| 查询名 | 是否存在精确记录 | 结果 |
|---|---|---|
| foo.example.com | 是 | 用精确记录,通配符不参与 |
| bar.example.com | 否 | 用 *.example.com |
| example.com | — | 顶点不被通配覆盖 |
| a.b.example.com | 否,且中间名不存在 | 由 *.example.com 匹配,属空非终结符规则 |
泛解析会把任何拼错的子域名都导到你的服务上。若证书是通配符且应用只用域名后缀判断租户归属,攻击者可以构造名称把流量引向你,或借用你的子域名做钓鱼。应用侧应显式校验 Host 白名单,不要只做后缀匹配。