DynamicDNS如何立即采取行动?


16

我对DNS的核心功能的理解是在域名(例如blah-whatever.com)和IP地址(例如100.2.3.4)之间提供命名/映射服务。

此外,我对Internet DNS服务器的工作方式的理解是,当域/ IP映射记录发生更改(例如,更改blah-whatever.com为现在指向105.2.3.4等)时,此更改需要在世界上的每个DNS服务器上传播。之前的更改可以说是“完整的”。此传播时间有时可持续长达24小时。

因此,首先,如果到目前为止我所说的话有误或不正确,请先纠正我!

假设我或多或少是正确的,我不了解CloudFlare或DynamicDNS之类的公司如何提供“即时过渡”类型的服务,从而使您可以通过它们更改DNS记录,并且- 繁荣 -这种更改会立即生效。

我知道有一种叫做“ TTL”的东西(生存时间,我想是!!?)在这种即时翻转功能中起作用,但是由于我已经开始模糊了该功能,因此很难理解这个TTL是它的用途。

所以我想问:关于动态DNS及其竞争对手,这是什么使他们可以立即更改DNS映射(而无需像其他所有人一样花费24小时来传播DNS更改),并且TTL如何适合此过程?提前致谢。

Answers:


3

我以前的答案包含错误信息,因为我对DNS更改的传播方式有一些误解。因此,这是第二次尝试。有关详细说明,我建议您阅读Alex答案

据我了解,DNS更改的传播速度涉及两个因素:

  1. 区域授权的DNS服务器之间的区域传输。
  2. 为该区域中的单个记录设置的TTL。

区域转移

鉴于您需要两个不同的名称服务器来管理区域,因此希望这些服务器快速为他们提供该区域的最新版本。

这可以通过以固定的时间间隔拉动区域的最新版本来实现,也可以等待来自授权名称服务器的NOTIFY

假设此机制完全由运行名称服务器的人员控制,则可以完全控制此区域中的任何延迟。

TTL

TTL是在区域中的每一个资源记录中指定超时。此值定义非授权DNS提供程序应将记录缓存多长时间。

请记住,仅当更改现有记录时,此值才起作用。新记录尚不能缓存。

假设TTL也完全由控制区域的人控制,则延迟也可以得到完全控制。


感谢@Oliver(+1)-听起来像是“即时翻转”是一个城市传奇!我想我的后续问题是:为什么不自己编辑DNS记录呢?是因为这些公司提供了API,以便在某些事件触发时可以自动进行DNS更改吗?我想我首先是在寻找他们服务的目的!
pnongrata 2012年

1
@zharvey:当然,您可以运行自己的DNS服务器并直接直接编辑区域。但是,您需要至少提供2个不同的DNS服务器,这些服务器授权您的区域被根服务器接受。人们通常没有那种可用的基础架构。
Der Hochstapler,2012年

1
您可以自己编辑DNS记录。您只需要运行一对名称服务器(在不同的子网中)。但是,DynDNS可以为您工作,并且允许相对容易的更新。基本上,您要外包一些工作。
Hennes

@zharvey当然可以拥有“即时转换”。如果按字面意思表示,请让两台计算机都切换其IP(这并不总是可能的)。除此之外,您总是会有一定的延迟。通常,如果要将服务移至其他服务器,则管理员可以提前更改TTL(例如,将其降低到1h之类的值)-因此,当更改发生时,延迟将最小。完成后,TTL将再次增加(例如增加到24小时或更长时间),以实现更好的缓存和对DNS查询的更快响应。但这通常不涉及DynDNS;)
Izzy 2012年

2
抱歉,很粗鲁,但是这个回答在几乎所有方面都是错误的。
Alex

18

您有一些误解,所以我将尽力解释整个过程。(由于参与了公共动态DNS服务的操作,我对细节很满意)。

假设您的域名为example.com,而example.com域托管于某个动态DNS公司,则将其称为lightfastdns.net(虚构名称)。您的域包含DNS记录-somehost.example.com,当前指向1.1.1.1

  1. 当您对DNS记录进行更改时,此更改将首先提交到由lightfastdns.net操作的某个中间服务器,例如updates.lightfastdns.net。这几乎立即发生(不到一秒钟)。您可以通过Web界面,动态更新客户端或某些API提交更新。没关系,无论如何,此更新将到达处理DNS更新的某些服务器上。

  2. 此更新服务器将您的更新记录(例如1.2.3.4)推送到您域的“ ” DNS服务器。该DNS服务器也由lightfastdns.net操作。发生的速度:取决于DNS提供商设计软件的方式。(它可以是即时的,可每24小时。对于每小时一次例如gandi.net推DNS更新。)当然,我们lightfastdns.net会立即去做。

  3. DNS服务器会将更新推送到example.com域的 DNS服务器。该服务器也由同一家lightfastdns.net公司运营。这发生的速度:使用现代软件,主服务器将立即向从服务器发送NOTIFY消息,并且从服务器将立即从主服务器获取更新的记录。使用较旧的软件,我们在SOA记录中具有REFRESH和RETRY值,但是今天它几乎不相关。当然,我们的lightfastdns.net实现了NOTIFY,并且更新立即传播。

现在,您的域中的所有“权威”服务器都收到了更新的记录(1.2.3.4)。对于lightfastdns.net,大约需要两秒钟。

  1. 现在,我们将搬到Ivan在俄罗斯的家中,Ivan希望在他的浏览器中打开“ somehost.example.com ”。如果他以前从未打开过该地址,则浏览器将不知道其地址,因此浏览器将询问其操作系统。但是,如果他最近访问过该站点,则该地址可能仍存储在浏览器中,并且他将使用旧的(过时的)地址!多长时间 ?-取决于浏览器,例如Google Chrome浏览器最多只能存储60秒的DNS记录。我们最多有60秒的延迟。为此,我想说DNS更改尚未传播到此浏览器。

  2. 无论如何,在60秒后或立即,浏览器最终将要求操作系统获取地址。操作系统可能已经知道(旧的,过时的)答案并返回它,在这种情况下,我想说的是新记录尚未传播到Ivan的操作系统。操作系统将存储旧值多长时间-由TTL参数控制的现代操作系统。DNS中的TTL定义了一条记录可以在缓存中存储多长时间。我们的lightfastdns.net允许使用相当低的TTL-30秒,所以到目前为止,新延迟最多为30秒,总体而言为90秒

  3. 如果OS不知道答案,或者它知道的答案现在已经过TTL,OS将询问DNS解析器(Ivan的ISP为他分配了DNS解析器dns.moscow-telecom.ru)。到这里,旧记录可能被缓存到TTL秒,或者dns.moscow-telecom.ru可能不知道地址。由于dns.moscow-telecom.ru还缓存DNS的时间不超过TTL值,因此我们又得到了30秒的 时间。我们有120秒的延迟。这就是所谓的新DNS记录尚未传播到莫斯科电信的 DNS服务器的原因。

  4. 如果ISP的DNS服务器不知道答案,或者如果它知道答案是已经过时了,因为它的TTL过期- dns.moscow-telecom.ru会问的一个权威 DNS服务器example.net(你还记得他们吗?)。这些答案大约在118秒前得到了更改,他们将返回新答案,该答案将立即通过链式发送给DNS解析器,操作系统以及Ivan的浏览器。

因此,根据各种缓存的状态,传播记录需要2到120秒。更长的TTL-可能会发生更长的延迟。

为了使其完整- 一些 ISP违反标准并长时间缓存记录。一些较旧的OS会长时间保存旧记录,而较旧的浏览器也是如此。但是对于大多数用户来说,它会按预期工作。


我很遗憾的是,它出来这个冗长。也许有人想做一个简短的变体(作为一个单独的答案)-不客气。
Alex

@zharvey实际上您问过动态与非动态之间的区别-它是1.它们处理步骤(2)和(3)的速度如何,以及2.它们允许您设置的TTL低。
亚历克斯

3

号的改变也并不需要传播到世界上每一个DNS服务器

如果您更改了某些内容,并且有人在DNS服务器上查询更改后的记录,则结果是即时的。

问题是,如果您之前查询过此名称,并且该名称已被缓存。然后,您将获得旧IP,直到缓存过期。在DNS中,您可以设置旧查询有效的时间,该时间通常设置为几天。对于DynDNS,通常将其设置为较低,但并非所有DNS解析器都可以这样做。


感谢@Hennes(+1)-请在Oliver的回答下查看我的问题-我有同样的问题要给您!
pnongrata 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.