Answers:
从理论上讲,每个人都应该在瞬间和相关TTL值之间看到更新的A记录。大多数注册服务商将TTL设置为24小时IIRC,因此有些人会在24小时内看到旧地址,而有些人会看到新地址,在更改后的24小时内,每个人都应该拥有新地址,而有些人则使用较低的值,例如4个小时。
如果您有权更改TTL值(即像我一样运行自己的DNS服务器),则可以在进行更改之前将TTL减少到一天左右,这样传播时间就大大缩短了。
我在上面说“理论上”,因为那里总是会存在一些错误,故障和配置错误的缓存,这意味着某些用户将看不到更改的时间更长。如果您使用的TTL很小,则尤其如此,因为仍然有一些ISP带有DNS缓存,它们忽略了低于给定值的TTL。
需要注意的另一件事是注册商的DNS控制面板与其DNS服务器之间存在延迟。例如,我注意到对123-reg.co.uk管理的域所做的更改最多可能需要一个小时才能出现在其DNS服务器上,这比您必须考虑的TTL值还要多一个小时。 。
出于实际目的,所有DNS服务器都会在瞬间与A记录的TTL值之间看到A记录的更改。在维基百科的文章有关于这个问题的一个很好的书面记录。
由于路由器,防火墙,操作系统和应用程序中的本地DNS缓存,单个应用程序可能看不到TTL内的更改。如Wikipedia文章所述:“这些缓存通常使用非常短的缓存时间-大约一分钟。InternetExplorer提供了一个明显的例外:最新版本的缓存DNS记录半小时。”
重新启动(或路由器的电源重启)通常会刷新所有本地DNS缓存,但是显然,您不能期望在那里的每个用户在更改A记录后都会重新启动每个设备。
如果您不能直接更改A记录,则无论进行更改的任何应用程序(例如,控制面板软件)都可能会引入自己的延迟。
我们使用4小时的默认TTL。如果我们打算更改A记录,则将A记录的TTL降低到5分钟(必须在更改生效前4小时以上完成)。进行更改后,我们将TTL恢复为4小时。大多数应用程序会立即看到更改,但是一些用户会遇到问题并需要重新启动。
Wikipedia文章还对“传播”进行了很好的讨论:“许多人在更改DNS时错误地引用了48小时或72小时的神秘传播时间。根服务器(而非注册商)控制域的NS记录上的TTL。您可以使用nslookup命令自己查看这些TTL值。现在,现在,“ F”根服务器上我的NS记录的TTL设置为2天。
除了TTL(您可以控制的东西,请参阅Brian Clapper的出色建议)以及某些应用程序内部可能更长的缓存时间外,权威名称服务器之间还存在同步时间。如果每个名称服务器都收到NOTIFY,则可能接近零;如果错过了NOTIFY(有时会发生这种情况),则可能要几个小时(取决于SOA记录的设置)。
因此,为了强调Brian Clapper的建议:请事先计划。
我的经验是,DNS更改最多可能需要八小时或更长时间,但这完全取决于客户端将其DNS设置缓存多长时间。