可能重复:
名称服务器更改时的正确行为是什么
我在 GoDaddy 注册了一个域名,并将名称服务器更改为我的服务器。(GoDaddy 最初使用自己的名称服务器设置域名。)现在,差不多 24 小时过去了,为什么在使用某些 ISP 时会转发到我的名称服务器,而对于某些 ISP 来说,它仍然是旧条目?我猜这涉及到某种形式的缓存。
有没有办法知道何时所有用户都会被路由到我的名称服务器?更一般地说,我如何才能更多地了解底层原理?
答案1
现在,已经过去将近 24 小时了,为什么在使用某些 ISP 时您会被转发到我的名称服务器,而对于某些 ISP 来说它仍然是旧条目?
你必须知道两件事:
- DNS 记录具有 TTL(TimeToLive),它定义了生命周期的时间段
- 中间 DNS 在解析过程中将收到的结果存储在内部缓存中,并将使用此数据进行应答,而不是重新请求(在 RR 的 TTL 期间或服务器重新加载未发生时)
1+2 可得:对于服务器,有你的旧数据,它将被使用,而没有根据 TTL 已过期,不是当前状态;之前没有旧数据 - 现在从新位置获取数据。在以更改现有数据的形式进行任何 DNS 重组之前,最好的方法是将 TTL 降至最低(对于区域或某些 RR),等待所有具有旧(长)TTL 的数据过期,之后更改 RR 值
PS - 还有一些不了解 RFC 的操作员,即使在 TTL 过期后仍使用旧数据,但您对这种行为无能为力。
答案2
确保每个人都开始使用新域名服务器的唯一方法是确保旧的名称服务器也包含新信息,包括新的 NS 记录。
有关详细信息,请参阅我的回答这个问题这解释了为什么即使父区域 NS 记录已经发生改变,某些 DNS 客户端仍继续与旧的名称服务器通信。