我使用libresolv获取域的权威名称服务器列表,然后直接查询其中一个名称服务器来解析主机。
这样,我可以为A记录获取配置的TTL,然后我选择在该TTL的代码中刷新我的DNS记录。
然而,由于我不知道如何处理引用CNAMES的主机,我遇到了麻烦。例如,www.microsoft.com
的输出如下所示:
; <<>> DiG 9.7.3 <<>> www.microsoft.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 3870
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 8, ADDITIONAL: 7
;; QUESTION SECTION:
;www.microsoft.com. IN A
;; ANSWER SECTION:
www.microsoft.com. 5 IN CNAME toggle.www.ms.akadns.net.
toggle.www.ms.akadns.net. 5 IN CNAME www.microsoft.com-c.edgekey.net.
www.microsoft.com-c.edgekey.net. 5 IN CNAME www.microsoft.com-c.edgekey.net.globalredir.akadns.net.
www.microsoft.com-c.edgekey.net.globalredir.akadns.net. 5 IN CNAME e10088.dspb.akamaiedge.net.
e10088.dspb.akamaiedge.net. 5 IN A 23.194.222.159
我应该使用CNAME TTL刷新我的主机吗?如果是这样,我如何为CNAME获取配置的TTL?
或者,我是否应该使用链接到CNAME的A记录(即e10088.dspb.akamaiedge.net
)来刷新我的使用?如果是这样,我如何获取该主机的配置TTL?
非常感谢您的专家提供的任何信息。
答案 0 :(得分:2)
对于负载均衡服务器的CNAME,您需要刷新最近的记录,这是初始查找。将其余的查找视为后端处理,在这种情况下,我喜欢调用Akamai shuffle。
编辑: 如果您直接查询权威NS,您应该得到“真正的”TTL:
rickbuford@ent01:~$ dig +noall +answer @ns2.google.com www.google.com
www.google.com. 300 IN A 74.125.194.103
www.google.com. 300 IN A 74.125.194.147
www.google.com. 300 IN A 74.125.194.99
www.google.com. 300 IN A 74.125.194.105
www.google.com. 300 IN A 74.125.194.106
www.google.com. 300 IN A 74.125.194.104
TTL倒计时是缓存LDNS或中间服务器的功能。所以,在你的例子中:
首先,进行主要查找:
rickbuford@ent01:~$ dig www.microsoft.com
; <<>> DiG 9.9.5-3ubuntu0.2-Ubuntu <<>> www.microsoft.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54032
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4000
;; QUESTION SECTION:
;www.microsoft.com. IN A
;; ANSWER SECTION:
www.microsoft.com. 60 IN CNAME toggle.www.ms.akadns.net.
toggle.www.ms.akadns.net. 123 IN CNAME www.microsoft.com-c.edgekey.net.
www.microsoft.com-c.edgekey.net. 10967 IN CNAME www.microsoft.com-c.edgekey.net.globalredir.akadns.net.
www.microsoft.com-c.edgekey.net.globalredir.akadns.net. 576 IN CNAME e10088.dspb.akamaiedge.net.
e10088.dspb.akamaiedge.net. 17 IN A 172.233.22.36
;; Query time: 19 msec
;; SERVER: 192.168.186.1#53(192.168.186.1)
;; WHEN: Thu Jun 11 21:24:28 CDT 2015
;; MSG SIZE rcvd: 237
然后你需要得到最后一个CNAME的NS / SOA:
rickbuford@ent01:~$ dig e10088.dspb.akamaiedge.net NS
; <<>> DiG 9.9.5-3ubuntu0.2-Ubuntu <<>> e10088.dspb.akamaiedge.net NS
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17178
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4000
;; QUESTION SECTION:
;e10088.dspb.akamaiedge.net. IN NS
;; AUTHORITY SECTION:
dspb.akamaiedge.net. 965 IN SOA n0dspb.akamaiedge.net. hostmaster.akamai.com. 1434075886 1000 1000 1000 1800
;; Query time: 15 msec
;; SERVER: 192.168.186.1#53(192.168.186.1)
;; WHEN: Thu Jun 11 21:25:01 CDT 2015
;; MSG SIZE rcvd: 119
然后,您应该能够向权威服务器查询记录:
rickbuford@ent01:~$ dig +noall +answer @n0dspb.akamaiedge.net e10088.dspb.akamaiedge.net
e10088.dspb.akamaiedge.net. 20 IN A 23.207.250.131