如果您曾在DNS文档或SSL证书上看到 *.example.com 而感到困惑,本文将全面解释子域名通配符的所有知识——从基本概念、DNS工作原理,到实际配置方法和安全最佳实践。
目录
1. 什么是子域名?基础回顾
子域名是位于主域名前面、以点(.)分隔的部分。例如,主域名为 example.com,其子域名包括 www.example.com、mail.example.com、shop.example.com 等。
每个子域名可以指向不同的IP地址或服务器,便于在同一个域名下分离不同的服务。
域名的结构组成
| 组成部分 | 示例 | 说明 |
|---|---|---|
| 顶级域名 (TLD) | .com / .net / .cn | 域名最右侧的部分 |
| 二级域名 (SLD) | example | 您注册的主域名 |
| 子域名 | www / mail / shop | 主域名前的前缀,可自定义 |
示例:shop.example.com → 子域名 = shop,二级域名 = example,顶级域名 = .com
2. 什么是子域名通配符?
子域名通配符是一种特殊的DNS记录,使用星号(*)作为子域名前缀,用于匹配所有未明确定义的子域名。
写法:*.example.com
当您设置DNS记录
*.example.com → 203.0.113.1 时,意味着所有未明确定义的子域名——如 anything.example.com、test.example.com、client99.example.com——都会自动解析到IP 203.0.113.1,无需逐一创建DNS记录。
重要提示:通配符记录不会覆盖已明确定义的子域名。例如,如果 www.example.com → 203.0.113.2 已单独设置,DNS会优先使用该记录而非通配符。
3. 通配符与普通子域名对比
| 功能特性 | 普通子域名 | 通配符子域名 |
|---|---|---|
| DNS记录创建 | 每个子域名单独创建 | 一条记录覆盖所有 |
| 支持动态子域名 | 不支持,需手动修改DNS | 支持,无需修改DNS |
| 管理复杂度 | 低(明确清晰) | 需要应用层路由 |
| 多租户SaaS | 不方便 | 非常适合 |
| 安全注意事项 | 较低 | 需要仔细配置 |
| 通配符SSL兼容 | 不需要 | 完美搭配 |
4. 通配符DNS工作原理
当浏览器尝试解析 client5.example.com 时,DNS查找过程如下:
- 查找精确匹配:是否存在
client5.example.com的记录?→ 如有则直接使用。 - 若无精确匹配 → 查找通配符:是否存在
*.example.com记录? - 若存在通配符 → 使用通配符记录中的IP地址。
- 若两者均无 → NXDOMAIN(域名不存在)。
*.example.com 匹配 abc.example.com,但不匹配 abc.def.example.com(二级子域名)。如需覆盖更深层级,需单独创建如 *.def.example.com 的通配符记录。
5. 在DirectAdmin中配置通配符DNS
AsiaGB主机服务使用DirectAdmin作为控制面板,以下是添加通配符DNS记录的步骤:
配置步骤
- 登录您的DirectAdmin控制面板。
- 进入 DNS管理(DNS Management)。
- 选择要配置的域名。
- 点击 添加记录(Add Record)。
- 填写以下信息:
- 名称(Name):
*(仅输入星号) - 类型(Type):
A(或指向主机名时使用CNAME) - 值(Value):您的服务器IP地址
- TTL:300或3600(根据需要)
- 名称(Name):
- 点击 保存(Save)。
* IN A 203.0.113.1或CNAME方式:
* IN CNAME example.com.
配置后验证
保存后,使用AsiaGB域名服务器的域名通常5–30分钟内生效,可使用以下命令测试:
nslookup random123.example.com
# 应解析到您配置的IP地址
6. 通配符SSL证书
通配符SSL证书专为 *.example.com 颁发,可用一张证书保护通配符DNS覆盖的所有子域名的HTTPS连接。
| 类型 | 覆盖范围 | 价格(AsiaGB) |
|---|---|---|
| 单域名SSL | 仅 example.com | 起价1,000泰铢/年 |
| 通配符SSL(DV) | *.example.com 所有子域名 | 起价5,000泰铢/年 |
| 通配符SSL(OV) | *.example.com + 组织验证 | 起价15,000泰铢/年 |
将通配符SSL与通配符DNS结合使用,新创建的子域名可立即获得HTTPS支持,无需为每个子域名单独申请SSL证书。
*.example.com 覆盖 shop.example.com,但不覆盖 test.shop.example.com。
7. 使用场景——何时使用通配符
多租户SaaS平台
为每个客户提供专属子域名——company-a.yourapp.com、company-b.yourapp.com——无需在每次新增客户时修改DNS。应用层根据主机名处理路由。
开发与测试环境
为每个功能分支动态创建环境:feature-login.dev.example.com、feature-payment.dev.example.com。
微服务架构
动态路由到不同服务:api-v1.example.com、api-v2.example.com、metrics.example.com。
白标服务
让合作伙伴通过专属子域名访问您的平台:partner1.service.com、partner2.service.com。
预览与灰度发布
支持版本化预览链接:preview-v2.5.example.com、staging-pr-42.example.com。
8. 安全风险与防护措施
常见安全风险
- 子域名接管(Subdomain Takeover):若通配符指向未被认领的CNAME,可能被攻击者接管。
- Cookie泄露:域级Cookie可被通配符覆盖的任意子域名读取。
- 钓鱼攻击:拥有服务器访问权限的攻击者可能在看似可信的子域名上托管欺骗性内容。
最佳防护实践
- 使用
__Host-Cookie前缀,将Cookie限制于精确源站。 - 在应用层实现主机名白名单验证,拒绝未知子域名的请求。
- 定期审查活跃子域名,删除未使用的DNS记录。
- 设置严格的
Content-Security-Policy响应头。 - 对敏感Cookie始终设置
HttpOnly和Secure标志。
9. 常见问题解答
10. 总结
- 子域名通配符(
*.domain.com)是自动匹配所有未定义子域名的DNS记录。 - 适用于多租户SaaS、开发测试环境、微服务架构和白标服务。
- 与通配符SSL证书搭配,一张证书即可为所有子域名启用HTTPS。
- 在DirectAdmin中配置简单:添加名为
*的A记录,指向服务器IP。 - 注意Cookie安全配置,并在应用层实现主机名白名单验证。
- 通配符仅覆盖一个子域名层级,不覆盖二级子域名。