先回顾下,我们已经了解到的知识:
就像一个博客,它可以被一些大的互联网服务商作为标准服务托管,也可以由第三方托管,还有,它也可以由我们完全独立地搭建在一个服务器上。
这跟 DNS 很像,可以被域名注册商直接作为标准服务托管,也可以交由第三方(比如 DNSPod),那么,如果我自己独立托管,怎么弄呢?
通常我们说的 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.30
是 m.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.com
、ns2.a.com
,当然需要给出具体的 IP,并且此时对应 IP 的 DNS 服务器已经上线,不然域名注册商会认为当前 Register NameServer 是无效的。修改保存后,可能要过上几分钟,ns1.a.com
与 ns2.a.com
就是全球 DNS 系统认可的一个解析服务器了。
然后你希望域名 b.com
( 也可以是 a.com 自身) 使用自己注册的 NameServer,那么就要修改这个域名的 NameServer 为 ns1.a.com
以及 ns2.a.com
。
修改成功后,就等待新的 DNS 服务器的解析生效;当然,原来由域名注册商提供的 DNS 解析服务将会失效。