背景
我们将共享主机从当地的夫妻店转到了 crystaltech。网站已全部复制过来,并准备好进行 DNS 更改。夫妻店没有提供任何工具来管理 DNS,所以我们必须打电话,并安排数据库的最终移动与他们的 DNS 更改时间。
发生了什么 来自俄勒冈州的康卡斯特,以及俄勒冈州区域光纤提供商的旧主机。旧主机更新了他们的 DNS 服务器以指向我们的新 IP 地址。他们将其从 207.xxx 更改为 67.xxx
在俄勒冈州,我在两台计算机上刷新了 Windows 7 机器上的 DNS,不到 30 秒,域名 site.com 就按预期运行了。Ping tracert 确认域名正在解析到新主机上的新 IP。
在佛罗里达州,客户报告说域名解析到了旧网站。(我们在旧主机服务器上发布了“我们正在移动”页面。)她的 Mac ping 了域名,结果解析到了旧主机。我们重新启动,然后在终端中刷新了 DNS。6 小时后,她的计算机仍然无法解析到新的 IP 地址。
佛罗里达州办公室的一台机器可以正确访问新网站。佛罗里达州南部地区的其他机器无法访问该网站。致电 AT&T 技术人员确认,他所在地区(同一网络)的 ping 和 tracert 解析正确。
到底出了什么问题?
为什么我的客户端 mac 不使用名称服务器来获取 IP 地址?IP 地址不同,只有记录中的名称服务器知道。
是 AT&T 吗?是 OSX 吗?是旧主机 DNS 吗?是新主机 DNS 吗?是因为旧主机的 DNS 服务器上的 TTL 是 72 小时吗?
此后,我已经与域名注册商更改了名称服务器,因此几天后这一切都将结束,但我仍然好奇到底发生了什么。
相关问题
https://superuser.com/questions/96425/convince-my-bosss-mac-the-website-has-moved
答案1
如果您将 DNS TTL 保留为 3 天,那么新记录自然需要三天时间才能提供给所有地方,因为在更改前一秒请求记录的任何人都会(正确地)在接下来的三天内缓存它们。您应该确实下次迁移时将 TTL 降低到五分钟左右(我有点惊讶你的新托管公司没有向你提及这一点——这是让有这方面经验的人来管理迁移的众多原因之一)。
但是,即使您放弃了 TTL,也有一些 ISP 会运行不符合标准的递归解析器,这些解析器会覆盖它们所服务的所有记录上的 TTL,因此它们与权威 DNS 服务器设置的记录的 TTL 不匹配。这是邪恶的,我很想对以这种方式设置它们的人做一些不愉快的事情,但他们就是这样。解决此问题的最佳方法是:
- 为新网络主机提供一个单独的主机名,并重新配置您要迁移的网络主机,使其执行 302(临时)重定向到此名称,这样任何发往旧服务器的请求都会重定向到新服务器。这很巧妙,但您需要永久保留临时名称(因为人们可能已链接到临时名称),这很不好看,而且它对 HTTPS 不太适用(您需要为其他名称使用通配符或单独的 SSL 证书)。
- 使用 DNAT 将流量从旧网站主机重定向到新网站主机。这需要旧网站主机的大力配合,并且您需要为所有到旧网站主机的流量支付两次费用(一次进入服务器,一次返回到新服务器),但它对用户完全透明,并且与 HTTPS 完美配合。
答案2
转移是多久前的事了?您应该始终留出 2 天时间,因为托管公司经常错误地将其称为“DNS 传播”。它实际上称为缓存过期。
DNS 缓存在很多级别,因此很难诊断。
但是,72 小时的 TTL 肯定会产生巨大影响。如果在迁移前几天让旧 DNS 提供商将 TTL 更改为 8 小时(或更短),那可能就更好了。
[编辑]根据以下评论修改第一行。[编辑]