DNS 记录服务器

温故知新

先回顾下,我们已经了解到的知识:

  1. DNS 的客户端 (比如是我们的电脑) 在联网的时候,会处于工作的状态;
  2. DNS 服务器的存在,比如路由器、光猫(另一种形式的路由器)、ISP 提供的、公共 DNS (比如 8.8.8.8);
  3. DNS 记录是全球分布式的,存在缓存期,可能几分钟,也可能 48 小时才能完全生效。
  4. 域名需要设定对应类型的 DNS 记录;
  5. 域名的 DNS 记录,要到 DNS 服务商 (一般域名注册商会作为标配服务提供) 的后台设定。

我们衍生一个问题:
就像一个博客,它可以被一些大的互联网服务商作为标准服务托管,也可以由第三方托管,还有,它也可以由我们完全独立地搭建在一个服务器上。
这跟 DNS 很像,可以被域名注册商直接作为标准服务托管,也可以交由第三方(比如 DNSPod),那么,如果我自己独立托管,怎么弄呢?

DNS 记录服务器

通常我们说的 DNS 服务器,其实是 Proxy (代理) 性质的,先从其它 DNS 服务器上获得对应的数据,然后返回给客户端查询的结果。
终归要有 DNS 服务器不是 Proxy 性质的,不然都是无源之水。我们这里说的 DNS 记录服务器 就是 DNS 所 Proxy 的记录源头

DNS 是有根服务器的,但不可能所有域名的记录,都在根服务器上进行操作,不然就成了完全中心化的服务。
那么 根服务器 到底有什么用呢? 它最重要的价值,是告诉你 Where: 某个域名的 DNS 记录,要去哪里查询。
你可以打开命令行窗口,然后输入 dig,就能看到这些根服务器。

比如我们查询 baidu.com 这个域名的解析服务器是什么,输入的命令是 dig baidu.com @192.55.83.30 NS,而 192.55.83.30m.gtld-servers.net 的 IP,我们也可以将命令换为 dig baidu.com @m.gtld-servers.net NS

注:dig 是一个查询 DNS 解析记录的命令,简单的用法就是 dig 域名 @DNS服务器 记录类型,比如查询一个 A 记录,就 dig google.com @8.8.8.8 A

如何加入全球分布系统?

假设,我们已完成自己独立的 DNS 解析服务器,怎么让自己独立域名的 DNS 解析,指向自己的服务器呢?
这里,就需要加入 DNS 的全球分布系统。听起来很复杂的样子,其实很简单,这个步骤需要在域名注册商上处理。一般情况下,在域名注册商,我们会管理具体域名的 DNS 记录,但还有个操作,几乎都是被忽略掉的,那就是 注册域名服务器 (Register NameServer)
比如你拥有域名 a.com,那么在域名注册商管理域名的地方,找到 Register NameServer,指定为 ns1.a.comns2.a.com,当然需要给出具体的 IP,并且此时对应 IP 的 DNS 服务器已经上线,不然域名注册商会认为当前 Register NameServer 是无效的。修改保存后,可能要过上几分钟,ns1.a.comns2.a.com 就是全球 DNS 系统认可的一个解析服务器了。

然后你希望域名 b.com ( 也可以是 a.com 自身) 使用自己注册的 NameServer,那么就要修改这个域名的 NameServer 为 ns1.a.com 以及 ns2.a.com
修改成功后,就等待新的 DNS 服务器的解析生效;当然,原来由域名注册商提供的 DNS 解析服务将会失效。