什么是通配符 DNS?
通配符 DNS 是一种 DNS 配置,使用星号(*)匹配没有显式 DNS 记录的任意子域名请求。例如,*.example.com 会捕获 blog.example.com、app.example.com 和 anything.example.com 等未定义子域名的查询,并将其解析到指定目标。
通配符 DNS 如何工作
DNS Zone for example.com:
├── example.com A 192.0.2.1 (explicit)
├── www.example.com A 192.0.2.1 (explicit)
├── mail.example.com A 192.0.2.2 (explicit)
└── *.example.com A 192.0.2.10 (wildcard)
Query: random.example.com → 192.0.2.10 (matched by wildcard)
Query: www.example.com → 192.0.2.1 (explicit takes priority)
通配符记录语法
*.example.com. 3600 IN A 192.0.2.10
*.example.com. 3600 IN CNAME catch-all.example.com.
*.example.com. 3600 IN MX 10 mail.example.com.
常见使用场景
多租户 SaaS 应用
*.myapp.com → Single server handles:
├── customer1.myapp.com
├── customer2.myapp.com
├── customername.myapp.com
└── (unlimited subdomains)
开发环境
- 无需额外设置即可使用任意子域名
- 快速测试功能
- 动态预览环境
用户生成内容
- username.platform.com
- projectname.service.com
- 自定义品牌子域名
通配符优先级规则
| 记录 | 查询 test.example.com 时 |
|---|---|
| test.example.com(显式记录) | ✓ 优先匹配 |
| *.example.com(通配符) | 没有显式记录时匹配 |
显式记录始终优先于通配符。
局限性
1. 只匹配一级:*.example.com 不匹配 a.b.example.com
2. 不能用于顶点:不允许 *.com
3. 安全注意事项:可能捕获不希望处理的子域名
4. SSL 复杂性:需要通配符 SSL 证书
DNS 配置示例
; Zone file
$ORIGIN example.com.
@ A 192.0.2.1 ; apex
www A 192.0.2.1 ; explicit www
* A 192.0.2.10 ; everything else
* MX 10 mail.example.com. ; wildcard mail
最佳实践
1. 谨慎使用:确有需要时才启用
2. 配合 SSL:获取通配符证书
3. 应用层处理:服务器必须正确路由子域名
4. 监控使用情况:留意意外的子域名访问
5. 显式覆盖:为已知子域名创建专用记录
通配符 DNS 无需为每个子域名单独创建记录,即可灵活处理子域名,特别适合动态应用和多租户平台。