Domain IP Lookup

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

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

什么是 DNS A 记录?何时需要 AAAA 记录

3 分钟阅读

A 记录是 DNS 区域中影响最大的一行。它把主机名映射到 IPv4 地址,一旦它出错或缺失,无论其他一切配置得多么完美,您的网站都无法访问。

A 代表 Address(地址)。与它对应的 IPv6 记录是 AAAA 记录(读作“quad-A”),之所以这样命名,是因为 IPv6 地址的长度是 IPv4 地址的四倍。

A 记录的结构

标准区域文件格式的 A 记录
example.com.      3600    IN    A       93.184.216.34
www.example.com.  3600    IN    A       93.184.216.34
example.com.      3600    IN    AAAA    2606:2800:220:1::248

从左到右依次是:

字段值含义
名称example.com.该记录所应答的主机名。在大多数控制面板中,@ 表示裸域名。
TTL3600解析器可以缓存此记录的秒数。参见 TTL。
类别IN表示 Internet。您永远不会用到其他值。
类型AIPv4 地址记录。
值93.184.216.34地址本身,必须是字面的 IP,绝不能是主机名。

A 与 AAAA 的对比

A 记录AAAA 记录
指向IPv4 地址IPv6 地址
示例值93.184.216.342606:2800:220:1::248
是否必需?实际上是强烈建议
客户端何时使用具备 IPv4 连接时具备 IPv6 连接时

二者不是互相替代的关系,请同时发布。双栈客户端通常会优先使用 IPv6,失败时再回退到 IPv4,所以两者都有,才能让每位访问者都有一条可用的路径。只发布 A 记录,会让纯 IPv6 的客户端(部分移动网络中确实存在)完全无法访问您。

同一名称对应多条 A 记录

一个主机名可以有多条 A 记录。解析器会把它们全部返回,通常还会轮换顺序,从而把流量分摊到各台服务器上,这就是经典的 DNS 轮询。

在三台服务器之间轮询
example.com.    300    IN    A    93.184.216.34
example.com.    300    IN    A    93.184.216.35
example.com.    300    IN    A    93.184.216.36

这是一种粗糙的负载均衡:DNS 不知道服务器是否健康,所以失效的地址会一直被返回,直到您删除这条记录。为什么一个域名有多个 IP介绍了更好的替代方案。

让网站出故障的四个错误

  1. 忘记配置 www 记录

    example.com 和 www.example.com 是不同的主机名,需要各自独立的记录。只设置其中一个而不设置另一个,意味着有一半的访客会访问到一个失效的名称。

  2. 在错误的服务商处编辑记录

    如果您的 NS 记录委派给了您的托管服务商,那么在注册商处编辑的记录会被完全忽略。请先检查哪些域名服务器是权威的。

  3. 迁移前没有调低 TTL

    修改 TTL 为 86400 秒的 A 记录,意味着最长 24 小时的流量分流。请在迁移的前一天调低 TTL。

  4. 在 CNAME 旁保留过时的 A 记录

    一个名称不能同时拥有 CNAME 和其他记录。许多服务商会悄悄忽略其中一条,导致行为不一致。

通配符、子域名与根域名

有三种命名情形经常出现,而且表现差异很大,值得分开说明。

根域名(apex)记录

根域名就是不带子域名的裸域名,即 example.com。在大多数控制面板中,它写作 @。在这个名称上,您经常必须使用 A 记录而不是 CNAME,因为协议禁止 CNAME 与根域名必须携带的 NS 和 SOA 记录共存。

子域名记录

每个子域名都是独立的名称,需要自己的记录。www、blog、shop 和 api 不会从根域名继承任何内容,在 example.com 上设置 A 记录,对 www.example.com 完全没有任何作用。

通配符记录

通配符会应答任何没有自己记录的名称。

为未定义的子域名兜底
*.example.com.    3600    IN    A    93.184.216.34

这对多租户产品很有用,每位客户都能获得 their-name.example.com,而无需为每次注册修改 DNS。在使用通配符之前,有两点需要了解:

  • 明确的记录始终优先。如果 api.example.com 有自己的 A 记录,针对该名称就不会再参考通配符。
  • 通配符只覆盖一级。*.example.com 匹配 foo.example.com,但不匹配 foo.bar.example.com。

检查您的 A 记录

命令行
dig +short example.com A
dig +short example.com AAAA

也可以使用查询工具一次解析两者,它会分别独立地查询 A 和 AAAA 并分开列出,让您立刻看出 IPv6 是否真的已经配置。

核心要点

A 记录 = 名称到 IPv4。AAAA 记录 = 名称到 IPv6。两者都填写字面的地址,绝不填写主机名,而同时发布两者,才能让每个人都能访问网站。

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

本主题的免费工具

常见问题