我可以使用dig(在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
此DNS记录的TTL值是否为'43200'?
#1 楼
是的,距离记录到期还剩秒数(假设我们不查询权威名称服务器)。显然,对于CNAME,存在一定程度的重定向,因此在这种情况下,指向A记录的TTL也可能很重要。本地名称服务器,您应该看到TTL值减少了等待的秒数(大约)。当它达到0时,它将刷新,或者如果您的名称服务器出于某种原因刷新区域。(在下面的示例中,我使用
+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会不断减小。这实际上是我之前所说的计数器。
#2 楼
如果您碰巧被卡在Windows盒上,并且只能访问nslookup:nslookup -qa=A -debug host.example.com authoritiative-dns-host-here.com
#3 楼
Is the value '43200' the TTL for this DNS record?
是-回答查询的服务器向您报告的信息(如果您要查询缓存服务器,它将返回其缓存中的剩余时间)。要查看实际记录上设置的TTL,请查询权威名称服务器(
dig @some.dns.server host.example.gov
-权威DNS服务器将在“挖掘”输出的“权限”部分中列出)。权威的NS:如果再次运行dig
并且TTL更改,则可能是缓存。如果保持不变,则可能是在询问权威服务器(或缓存中断的服务器)。评论
如果ttl不变,那可能只是一个认为自己是权威的域名:域名所有者可能在没有关闭旧域名的情况下更改了DNS服务器...上个月出现了此问题。
–詹森
15年7月12日在23:29
@Jasen是的,这绝对有可能(这也表明了重要的一点:DNS管理员将在下一家公司郊游中购买饮料,以防止迁移!)
–voretaq7
15年7月13日在15:26
#4 楼
我在默认的dig输出中看不到权威服务器,但是以下dig +nssearch host.example.com
返回了它们,然后可以按照voretaq7的描述使用它们来获取实际记录的TTL值。
更新:一直忘了怎么做,不得不回来,所以写了一个小脚本,首先获取权威的名称服务器,然后使用它进行挖掘
#!/bin/bash
show_help(){
echo Usage q4312078q domain
}
if [ -z "" ]; then
show_help
exit 1
fi
DOMAIN=
APEX_DOMAIN=`echo $DOMAIN | sed 's/\(.*\.\)\([^.]*\.[^.]*\)//'`
FIRST_AUTHORITATIVE_NS=$(dig +nssearch $APEX_DOMAIN | awk '=="SOA"{sub(".$","",);print ;exit;}')
echo
echo Using authoritative nameserver $FIRST_AUTHORITATIVE_NS
dig @$FIRST_AUTHORITATIVE_NS $@
评论
在第二个示例中,TTL 246696意味着名称服务器(返回地址69.59.196.211)从其缓存中获取了答案,并且还会再执行246696秒,对吗?之后,它将到达权威名称服务器或另一个非权威服务器,并缓存从那里获得的结果,对吗?感谢您的澄清。对此很难。
–科安尼·罗伯特(KohányiRóbert)
20-10-16在20:58