Domain IP Lookup

几乎每个 DNS 区域都会遇到的记录

A主机名指向 IPv4 地址
AAAA主机名指向 IPv6 地址
CNAME主机名指向另一个主机名
MX域名指向其邮件服务器,按优先级排序
TXT域名对应任意文本,如 SPF、DKIM、验证信息
NS域名指向负责应答的域名服务器
DNS 基础

什么是 DNS 通配符记录?用途与风险

4 分钟阅读

通配符 DNS 记录使用星号标签,为区域中没有更具体记录的名称提供应答。当应用接受大量租户子域名,或服务有意处理一大批主机名时,它会很有用。通配符并不是一条能覆盖所有显式记录的通用规则,它的行为取决于 DNS 名称是否存在以及所请求的记录类型。它还可能带来意外的结果:让拼写错误或意料之外的子域名解析到某处,而不是明确地失败。只有在应用和安全模型本来就是为这种宽泛范围设计的情况下,才应使用它。

通配符匹配如何工作

通配符标签写作某一名称层级上的星号,常见的是 *.example.com。当不存在更接近的匹配数据时,它可以为该位置之下的某些名称提供数据。它并不意味着每一层的所有后代名称都会像文件系统通配符所暗示的那样被自动创建。已存在的名称、委派和空的非终端节点都会影响结果。记录类型同样重要:通配符 A 记录并不会自动为每个子域名创建所有可能的 MX、TXT 或 AAAA 记录。请测试您的应用所期望的名称和记录类型,而不要假设一条通配符就涵盖了所有 DNS 行为。

配置选择可能的效果
某个名称的显式记录提供该名称所配置的数据
父级上的通配符可以为符合条件、且没有其他配置的名称提供应答
只有通配符 A并不意味着有通配的邮件或 TXT 策略
没有匹配的记录可能返回无数据或名称错误,取决于区域状态

一个常见的用例是多租户托管:每位客户获得一个子域名,所有这类名称都路由到同一个应用边缘。应用随后检查主机名,决定要为哪个租户或站点提供服务。DNS 只负责把请求送到某个端点,它不会验证所请求的租户是否存在,也不会验证请求者是否有权访问。应用必须自行执行路由和授权规则。如果未知的子域名会落到默认站点,请确保该默认站点不会暴露管理工具、调试内容或其他客户的数据。

运维与安全方面的考虑

通配符可能在测试期间掩盖拼写错误,因为拼错的名称仍然可能被解析。它们还可能导致证书自动化去申请您并不打算公开的名称。与邮件相关的通配符需要格外小心:通配的地址记录不应被误认为是有意设定的邮件策略,全收邮件的行为属于邮件系统,而不是仅靠 DNS 创建的。在引入通配符之前,请先盘点显式名称和被委派的子域名。记录下由谁负责这种行为,以及接收应用如何处理意外的主机名。

  • 只对您的应用准备好处理的名称使用通配符记录。
  • 对需要独立路由或策略的服务保留显式记录。
  • 测试未知和格式错误的子域名,而不只是预期的租户名称。
  • 不要把通配符 DNS 当作访问控制或租户授权。
  • 在部署之前,审视其对证书、邮件和监控的影响。

排查通配符应答

当一个意料之外的子域名被解析时,请检查区域中相关层级上是否有通配符,并确认是否存在更具体的记录或委派。查询确切的名称和记录类型,然后与通配符目标比较。如果通配符似乎没有生效,请检查是否有已存在的节点改变了 DNS 树该分支上的通配符合成。服务商的界面可能会抽象掉这些细节,所以请确认该服务是如何实现通配符记录的。删除或更改通配符之后,请等待缓存过期,并同时测试之前预期的名称和现在应该失败的名称。

通配符是一种专用工具,而不是绕过主机名清单的捷径。当产品有意提供可变的名称空间,且应用执行安全、明确的主机路由时,它们的效果最好。要了解基础背景,请参阅 DNS 记录类型详解和 CNAME 的作用。公开的 DNS 查询可以确认解析器对所选名称返回什么,而应用测试则确认端点是否正确处理了该名称。

同时测试预期和意外的名称

通配符部署的测试,不应只用一个已知正常的租户名称。请检查一个应该被处理的名称、一个应该有显式覆盖的名称,以及一个不应存在的随机名称。然后同时检查 DNS 应答和应用的响应。通配符可以把未知的标签路由到该服务,但应用应当返回安全的未找到响应,而不是意外地创建默认账户或泄露配置。在添加显式记录和委派之后请重复测试,因为 DNS 树的结构可能改变适用哪条通配符数据。请记录预期的名称模式,这样今后的运维人员就能知道,一个新近开始解析的子域名是预期之内,还是一次配置上的意外。

需要查看某个域名的公网 DNS 地址?使用 Domain IP Lookup 工具。