题 如何查看DNS记录的生存时间(TTL)?


我想查看CNAME记录的生存时间(TTL)值。

我有权访问  (在Apple Mac OS X上),这给了我这样的答案:

% dig host.example.gov
<*SNIP*>
;; ANSWER SECTION:
host.example.gov.       43200   IN  CNAME   host1.example.gov.
host1.example.gov.      43200   IN  A       192.168.16.10

值'43200'是此DNS记录的TTL吗?


105
2017-09-09 18:21






答案:


是的,那个数字是该记录到期之前剩余的秒数(假设我们没有查询权威的名称服务器)。显然,对于CNAME,存在一定程度的重定向,因此在这种情况下它指向的A记录的TTL也很重要。

如果等待几秒钟并在本地名称服务器上再次运行dig,您应该会看到TTL编号减少了您等待的秒数(大约)。当它达到0时,它将刷新或者你的名字服务器由于某种原因刷新区域。

如上所述,在针对具有缓存条目的名称服务器运行的dig与对该条目具有权威性的名称服务器之间存在差异。

(在我下面使用的例子中,我使用了 +noauthority  +noquestion & +nostats 标志只是为了保持输出简洁)。

请注意以下查询之间的区别:

$ dig +noauthority +noquestion +nostats stackoverflow.com @ns2.p19.dynect.net.

; <<>> DiG 9.7.0-P1 <<>> +noauthority +noquestion +nostats stackoverflow.com @ns2.p19.dynect.net.
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50066
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; ANSWER SECTION:
stackoverflow.com.  432000  IN  A   69.59.196.211

所以在上面的查询中,我们查询了一个对stackoverflow.com具有权威性的名称服务器。如果你注意到了 flags 部分,要特别注意 AA 表示这是一个标志 权威的答案 (即没有缓存)。

$ dig +noauthority +noquestion +noadditional +nostats stackoverflow.com 

; <<>> DiG 9.7.0-P1 <<>> +noauthority +noquestion +noadditional +nostats stackoverflow.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43514
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 4

;; ANSWER SECTION:
stackoverflow.com.  246696  IN  A   69.59.196.211

在上面的查询中,我们没有 AA 标志,TTL将随着查询和查询而不断减少。这基本上是我之前谈到的反击。


127
2017-09-09 18:28



很好的答案!谢谢! :) - Paul Calabro


如果您碰巧被困在Windows框中并且只能访问nslookup:

nslookup -qa=A -debug host.example.com authoritiative-dns-host-here.com

43
2018-01-23 22:41





Is the value '43200' the TTL for this DNS record?

是 - 正如您回答查询的服务器向您报告的(如果您要求缓存服务器,它将在其缓存中返回剩余时间)。

要查看实际记录中设置的TTL,请使用权威名称服务器(dig @some.dns.server host.example.gov  - 权威DNS服务器将列在dig输出的Authority部分中)

快速检查你是否在询问权威的NS:如果你跑了 dig 再次和TTL改变你可能会达到缓存。如果它保持不变,你可能会问权威服务器(或者那个已经破解缓存的服务器)。


14
2017-09-09 18:32



如果ttl没有改变它可能只是一个认为自己是权威的:域所有者可能已经改变了DNS服务器而没有关闭旧的服务器....上个月有这个问题。 - Jasen
@Jasen是的,这绝对是可能的(它表明了一些重要的事情:DNS管理员将在下一家公司的郊游购买饮料,以阻止迁移!) - voretaq7


我无法在默认的dig输出中看到权威服务器,但以下内容

dig +nssearch host.example.com

返回它们,然后可以按照voretaq7的描述使用它来获取记录的实际TTL值。

更新:一直忘记如何做到这一点并且不得不回来,所以写了一个小脚本来首先获取权威的名称服务器,然后使用它进行挖掘

#!/bin/bash

show_help(){
        echo Usage $0 domain
}

if [ -z "$1" ]; then
        show_help
        exit 1
fi

DOMAIN=$1

FIRST_AUTHORITATIVE_NS=$(dig +nssearch $DOMAIN | sed -n 's/^SOA \([^ ]*\)\.[ ].*/\1/p' | head -1)

echo
echo Using authoritative nameserver $FIRST_AUTHORITATIVE_NS

dig @$FIRST_AUTHORITATIVE_NS $@

5
2017-10-19 14:04