我最近将一个网站的 A 记录更改为新服务器的 IP 地址,从而将其移动到了新服务器。
在四个小时内,我们网络上的所有机器都能够正确解析;在 24 小时内,dig / cachecheck.opendns.com / 等能够找到的每个名称服务器都能够提供正确的 IP。
然而,客户端的机器似乎是世界上唯一仍能解析旧 IP 的机器。
已经 72 小时了,他已经刷新了他的 DNS,并且他无法更改他的 DNS 解析器,因为他说这会导致其他问题。
我目前创建了一个将 IP 重写为 URL 的配置,以及一个header
通过新 IP 将旧站点重定向到新站点的 php 指令(我希望它不会导致重定向循环)
我找到的每个名称服务器究竟是如何为该网站提供正确的 IP 地址的,而客户端的机器仍然使用旧地址?
我也有:
nslookup [the-domain] [all-three.nameservers.com]
无济于事;它们都显示正确的IP。
我可以在旧服务器上执行一些指令,比如“抱歉,朋友,IP 错误” -?或者我还能做什么,因为我们无法复制这个 -?
答案1
DNS 响应可能会被缓存 TTL 时间。由于您已在上一个权威服务器上更改了 A 记录,因此每个 DNS 服务器和缓存客户端都应该在 TTL 秒后忘记有关您的旧 IP 的一切。
如果您的旧记录的 TTL 尚未过期,则客户端仍可能会看到旧 IP。这种情况更有可能发生在您的客户端上,因为他们经常使用您的 DNS 记录并将其缓存。
如果您的旧 TTL 已过期,则说明您和您的客户端之间出现了问题(不一定是客户端的问题)。遗憾的是,没有保证您能修复此问题的方法(除非使用原始 IP 地址或新 DNS 名称)。
我将按以下顺序检查:
- 检查您域名的权威服务器列表(输入您所在区域的 NS)
- 检查每个权威服务器是否确实返回新地址
- 确保 TTL 没有改变或者找出旧的 TTL(即从旧区域的备份中)。
如果以上所有内容都表明您的记录在任何地方都是最新的,并且自上次更改以来 TTL 已经过去,那么您这边似乎没有问题。
- 要求您的客户端使用
dig
或其他报告记录 TTL 的工具来解析您的名称(不确定是否可以使用 nslookup 来完成)并检查此 TTL 是否足够。缓存器报告的 TTL 会(至少应该)随着自上次缓存记录更新以来经过的时间而减少,因此您将看到它在几次请求之间减少。如果没有,则表示 DNS 存在错误或配置错误。
答案2
听起来问题完全出在客户那边。虽然你想尽一切办法帮助他们是高尚的行为,但如果他们不愿意承认问题出在他们那边,你就无能为力了。
让他们nslookup
在其终端进行测试并验证它是否解析为旧 IP。
然后让他们做同样的nslookup
测试,但使用以下方法:
nslookup
server 8.8.8.8
(这将在命令执行期间临时更改其 DNS 解析器以进行测试)www.domain.com
此时它应该会显示正确的 IP。如果仍然没有显示...问题出在你这边。如果它确实显示了正确的 IP,那么问题就出在你的客户端,你可以让他们查看他们的 DNS 服务器,看看他们是否可能在他们的 DNS 服务器上为网站设置了手动条目,或者仍然缓存了旧 IP。
答案3
当然,主办方客户端机器中是否存在该文件?
前段时间,我遇到了 DNS 缓存不遵守 TTL 的问题 - 如果您的客户端正在使用其中一些,则可能需要重新启动它们。
希望有所帮助。
答案4
您可以通过新的子域进行重定向,而不是直接从域重定向到 IP 地址。这将强制客户端的 DNS 服务器解析该子域。通过在您控制的服务器上托管该子域的 DNS,您实际上可以找到客户端 DNS 服务器的 IP 地址。
此时您可能能够向客户端的 DNS 服务器发送 DNS 查询,以便查明缓存记录上剩余的 TTL。
此方法适用于某些 DNS 服务器,但不适用于其他 DNS 服务器。只有您尝试过后才会知道它是否有效。