Я использую libresolv, чтобы получить список авторитетных серверов имен для домена, а затем запросить один из этих серверов имен непосредственно для разрешения хоста.
Таким образом, я могу получить настроенный TTL для записи A, а затем выбрать обновление DNS-записей в своем коде на этом TTL.
Тем не менее, я столкнулся с snafu в этом, я не уверен, как обращаться с хостами, которые ссылаются на 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? Если так, как я могу получить этот настроенный TTL для CNAME?
Или я должен обновить свое использование, используя запись A, которая связана с CNAME (т.е. e10088.dspb.akamaiedge.net
)? Если да, то как мне получить настроенный TTL для этого хоста?
Любая информация, которую вы можете предоставить специалистам, будет принята с благодарностью.
В случае с CNAME для серверов с балансировкой нагрузки вам нужно обновить ближайшую к вам запись, которая является начальным поиском. Рассмотрим остальные поиски как бэкэнд-обработку, которую в этом случае я бы хотел назвать случайным образом Akamai.
РЕДАКТИРОВАТЬ:
Если вы запрашиваете официальный 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
Затем вам нужно получить NS / SOA последнего CNAME:
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