我不是网络人员,所以我不知道该如何提问。假设我们有自己的 DNS 服务器,位于公司本地。有人注册了新域名,或者 DNS 记录发生更改,并且权威名称服务器已更新。
我们的本地 DNS 服务器如何知道新域名或现有域名的变更?我的意思是,请求必须来自我们的本地网络,我们的本地 DNS 才能知道该名称,对吗?权威名称服务器不会自动将信息推送到每个 DNS 服务器。
我说的对吗?请求必须来自我们的本地 DNS 服务器,才能更新本地记录?这是否意味着只有当用户请求域名时,我们的 DNS 服务器才会更新?
谢谢
答案1
为了简化您的问题,有几点需要记住。
DNS = 域名系统
名称服务器 = 存储 DNS 记录以解析域
在您的本地计算机上,您有一个 DNS 解析器,可将您连接到全球 DNS 网络。最近,最常见的是,您可以使用 Google 的公共 DNS 服务器:
8.8.8.8和8.8.4.4
当你的计算机需要解析主机名时google.com,它将首先向您本地设置的 DNS 解析器发送通用请求。在 Windows 命令提示符中,该请求如下所示:
C:\Users\JacobN>nslookup google.com
Server: google-public-dns-a.google.com
Address: 8.8.8.8
Non-authoritative answer:
Name: google.com
Addresses: 2607:f8b0:4004:802::1008
74.125.228.71
74.125.228.66
74.125.228.72
您将获得非权威答案因为,我们刚刚查询的名称服务器没有为 Google 维护记录,所以它只是为我们缓存了这些记录。
您可以使用设置 q=NS启动后命令nslookup查询域名的权威名称服务器:
C:\Users\JacobN>nslookup
Default Server: google-public-dns-a.google.com
Address: 8.8.8.8
> set q=NS
> google.com
Server: google-public-dns-a.google.com
Address: 8.8.8.8
Non-authoritative answer:
google.com nameserver = ns2.google.com
google.com nameserver = ns4.google.com
google.com nameserver = ns3.google.com
google.com nameserver = ns1.google.com
现在您的计算机还可以直接查询其中一个权威名称服务器,以获取权威响应:
C:\Users\JacobN>nslookup google.com ns1.google.com
Server: ns1.google.com
Address: 216.239.32.10
Name: google.com
Addresses: 2607:f8b0:4004:806::1008
74.125.228.194
74.125.228.193
74.125.228.201
现在,如果 Google 要更新其 DNS 记录ns1.google.com名称服务器,这些记录通常需要 1 到 8 小时才能传播到其他缓存名称服务器。
所以要回答您的问题,您的本地 DNS 服务器知道如何解析您的域名,因为当您注册域名时,您必须将名称服务器记录指向有效的 DNS 服务器,从而使该 DNS 服务器(名称服务器)成为您域的 DNS 查询的权威服务器。
网络上的所有其他名称服务器,例如 Google 的8.8.8.8当人们搜索您的域名时,将缓存您服务器的响应。一个很好的例子是您的本地 ISP 可能正在缓存 DNS 查询。例如,如果您的隔壁邻居刚刚获得了针对您的域名的权威 DNS 记录,然后您立即查找了它们,那么您很可能会从您的 ISP 的名称服务器获得缓存的响应,而不是请求必须突破网络才能在一分钟后收到相同的结果。
如果 24 小时内没有人访问您的域名,则 DNS 记录可能会根据其生存时间(生存时间)设置。如果是这种情况,当有人再次查询您的域名时,首先会发生的事情是谁是在您的域名上查找该域名的权威名称服务器,然后您将从您设置的本地 DNS 服务器解析出一个 IP 地址来处理这些请求。
名称服务器和 DNS 是一个非常复杂的主题,如果您需要任何进一步的解释,请告诉我,因为我已经广泛地撰写了有关它们的文章:
http://www.inmotionhosting.com/support/domain-names/dns-nameserver-changes/what-is-a-name-server