最近注册了域名,被 DNS 中的各种记录迷惑了半天。基本弄清楚后整理在这里。
在互联网中,刚开始只用 IP 地址来区分各个服务器。IP 地址是一串数字,例如 192.168.34.56,当然不好记忆。后来就有了 DNS(Domain Name System)这个域名系统,可以给服务器指明一个域名,例如 www.example.com,通过域名同样可以访问该服务器。
既然增加了域名这个东西,就需要另外的服务器,以提供域名和 IP 地址的对应关系的查询服务。这种特殊的服务器称为 NS(Name Server),即名称服务器。现在的域名的解析是树状的,从最后面开始逐级解析。比如对于 www.example.com,完整的查询过程如下:
- 访问全球 13 个根名称服务器之一,例如 198.41.0.4,查询 com 域名的名称服务器地址,假设得到的地址为 204.74.112.1。
- 访问 com 域名的名称服务器地址 204.74.112.1,查询 example.com 域名的名称服务器地址,假设得到的地址为为 68.178.232.100。
- 访问 example.com 域名的名称服务器地址 68.178.232.100,查询 www.example.com 域名的 IP 地址,最终得到你要找的地址。
因此,当你注册域名 example.com 的时候,就需要设定该域名的名称服务器地址,即该域名的 NS 记录。这个记录一般要求有两条,以保证可用性。这个 NS 记录一般在域名注册商那里就会有默认设置的,登录域名管理后台就可以看到了。另外,NS 记录也可以是其它域名而不是 IP 地址,例如在 Godaddy 注册的域名,默认的 NS 记录就是 ns01.domaincontrol.com 和 ns02.domaincontrol.com 这种形式。
在域名管理后台中,每个 A 记录(Address 记录)指明了该域名及其子域名和 IP 地址的对应关系。你可以添加非常多个,例如:
- 指定 example.com 的 A 记录为 192.168.1.1
- 指定 www.example.com 的 A 记录为 192.168.2.2
- 指定 web.example.com 的 A 记录为 192.168.3.3
而 CNAME 记录(Canonical Name 记录),称为别名记录,可以将子域名对应到别的域名,例如:
- 指定 home.example.com 的 CNAME 记录为 web.example.com
- 指定 page.example.com 的 CNAME 记录为 web.example.com
这样,当用户访问 home.example.com 和 page.example.com 时,实际获取的页面内容是在 web.example.com 域名所对应的服务器。CNAME 记录也可以对应到别的域名,只要对方的域名系统作了相应的设置,这个就是通常所说的域名绑定。在 CNAME 记录中只能设置子域名即 xxx.example.com 的别名,不能设置本层域名即 example.com 的别名,这个是和 A 记录另一个不同的地方。
参考资料:
[1] Domain Name System - Wikipedia
[2] Domain name - Wikipedia
[3] Root name server - Wikipedia
[4] List of DNS record types - Wikipedia
[5] CNAME record - Wikipedia
[6] intoDNS: checks DNS and mail servers health