Вопрос: Как я могу увидеть Time-To-Live (TTL) для записи DNS?


Я хотел бы увидеть значение Time-To-Live (TTL) для записи CNAME.

У меня есть доступ к копать (на 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» TTL для этой записи DNS?


103
2017-09-09 18:21


Источник




Ответы:


Да, число есть количество секунд, оставшихся до истечения этой записи (при условии, что мы не запрашиваем авторитетный сервер имен). Очевидно, что с CNAME существует уровень перенаправления, поэтому TTL для записи A, на которую он указывает, в этом случае также может быть важным.

Если вы подождете пару секунд и снова запустите команду на локальном сервере имен, вы должны увидеть, что количество 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 раздел, обратите особое внимание на аа флаг, обозначающий это авторитетный ответ (т. е. не кэшируется).

$ 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

В приведенном выше запросе у нас нет аа флаг, и TTL будет продолжать уменьшаться по мере запроса и запроса. Это, по сути, счетчик, о котором я говорил ранее.


124
2017-09-09 18:28



Отличный ответ! Благодаря! :) - Paul Calabro


Если вы застряли в окне окна и имеете доступ только к nslookup:

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

42
2018-01-23 22:41





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

Да - как сообщается вам сервером, который ответил на ваш запрос (если вы запрашиваете сервер кеширования, он вернет оставшееся время в кеше).

Чтобы увидеть, что TTL, установленный в фактическом запросе записи, является авторитетным сервером имен (dig @some.dns.server host.example.gov - Властные DNS-серверы будут перечислены в разделе «Управление» выходного файла)

Быстрая проверка, если вы спрашиваете авторитетный NS: если вы запустите dig снова и TTL-изменения, вы, вероятно, попадаете в кеш. Если он остается таким же, вы, вероятно, спрашиваете авторитарный сервер (или тот, у которого есть сломанное кэширование).


14
2017-09-09 18:32



если ttl не изменится, это может быть только тот, который считает себя авторитетным: владелец домена, возможно, изменил DNS-сервер без shuttiong старого ... у него была эта проблема в прошлом месяце. - Jasen
@ Jasen Да, это определенно возможно (он указывает на что-то важное: DNS-администратор будет покупать напитки в следующей компании, чтобы выкрутить миграцию!) - voretaq7


Я не мог видеть авторитетные серверы в выводе по умолчанию, но следующие

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