我对TTL和传播时间的概念感到有些困惑,我想澄清一些我无法在网上找到具体答案的事情。
AFAIK,TTL(生存时间)表示全球服务器更新特定DNS的缓存值所需的(最高)时间。
因此...
如果我更改DNS记录,是否会立即发生此更改,需要TTL时间在全球范围内更新?或者只是在TTL时间过后,这些变化才会更新,然后开始在世界范围内传播?
每个服务器都会定期以TTL的间隔检查DNS,对吧?因此,如果服务器检查TTL为14400的DNS记录并且我之后立即更改它,则服务器将在稍微低于14400之后更新其缓存。如果我恰好在检查之前更改它,它将更新差不多马上。
DNS记录(例如,MX)的TTL值是否依赖于其他TTL值或更新时间,例如,覆盖/扩展其实际生存时间的更多通用元素(例如,SOA刷新时间) )?换句话说,如果我只关心更新MX记录而我需要每4小时更新一次,那么我是否需要为这些MX记录设置除TTL以外的任何其他内容?
TTL是特定DNS记录在全球更新的(理论)限制吗?虽然实际的更新时间变化很大,但据我所知,由于服务器保留了自己的缓存时间。
答案 0 :(得分:2)
例如,我将从我的个人域中查询我公司的本地DNS服务器中的一个主机名。我的域的权威名称服务器位于AWS,记录ata3ias.test.bajic.nl配置为TTL 120和IP地址127.0.0.5:
首先,我将查询权威的AWS名称服务器:
[root@foo ~]# dig ata3ias.test.bajic.nl @ns-1695.awsdns-19.co.uk
...
;; ANSWER SECTION:
ata3ias.test.bajic.nl. 120 IN A 127.0.0.5
;; WHEN: Thu Dec 29 12:43:13 2016
然后我将IP地址更改为127.0.0.6并再次查询:
[root@foo ~]# dig ata3ias.test.bajic.nl @ns-1695.awsdns-19.co.uk
...
;; ANSWER SECTION:
ata3ias.test.bajic.nl. 120 IN A 127.0.0.6
;; WHEN: Thu Dec 29 12:43:22 2016
接下来,我将查询我公司的内部DNS服务器(我可以安全地假设在尝试解析此地址之前没有人,并且DNS服务器的缓存中没有条目):
[root@foo ~]# dig ata3ias.test.bajic.nl @10.0.0.5
...
;; ANSWER SECTION:
ata3ias.test.bajic.nl. 119 IN A 127.0.0.6
;; Query time: 26 msec
;; WHEN: Thu Dec 29 12:46:20 2016
注意TTL,并注意查询时间:缓存服务器查询权威DNS服务器,获得TTL响应并记住该信息。
现在,如果我再次这样做:
[root@foo ~]# dig ata3ias.test.bajic.nl @10.0.0.5
...
;; ANSWER SECTION:
ata3ias.test.bajic.nl. 107 IN A 127.0.0.6
;; Query time: 0 msec
;; WHEN: Thu Dec 29 12:46:32 2016
这个答案来自缓存,你可以通过TTL看到(所以不仅缓存服务器会将数据保存在缓存中TTL时间,它还会将剩余TTL的信息传递给客户端),你也可以看到它花了0ms来研究查询(因为没有必要联系权威的名称服务器)。
然后我将转到AWS控制台再次编辑IP地址并将其更改为127.0.0.7。为了确认更改,我将再次直接查询权威服务器:
[root@foo ~]# dig ata3ias.test.bajic.nl @ns-1695.awsdns-19.co.uk
;; ANSWER SECTION:
ata3ias.test.bajic.nl. 120 IN A 127.0.0.7
;; WHEN: Thu Dec 29 12:47:10 2016
现在我将再次查询内部DNS服务器:
[root@foo ~]# dig ata3ias.test.bajic.nl @10.0.0.5
;; ANSWER SECTION:
ata3ias.test.bajic.nl. 63 IN A 127.0.0.6
;; WHEN: Thu Dec 29 12:47:16 2016
它仍在提供旧数据,并将在另外63秒内完成。过了一会儿:
[root@foo ~]# dig ata3ias.test.bajic.nl @10.0.0.5
;; ANSWER SECTION:
ata3ias.test.bajic.nl. 3 IN A 127.0.0.6
;; WHEN: Thu Dec 29 12:48:16 2016
最后,几秒钟后,内部DNS服务器将提供最新信息:
[root@foo ~]# dig ata3ias.test.bajic.nl @10.0.0.5
;; ANSWER SECTION:
ata3ias.test.bajic.nl. 119 IN A 127.0.0.7
;; WHEN: Thu Dec 29 12:48:21 2016