web-dev-qa-db-ja.com

DNSレコードの存続可能時間(TTL)を確認するにはどうすればよいですか?

CNAMEレコードのTime-To-Live(TTL)値を確認したいと思います。

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

値 '43200'は、このDNSレコードのTTL=ですか?

119

はい、その数は、そのレコードの有効期限が切れるまでの残りの秒数です(ただし、信頼できるネームサーバーにクエリを実行していない場合)。明らかに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はクエリおよびクエリを実行すると減少し続けます。これは基本的に私が話していたカウンターです以前について。

143
Philip Reynolds

Windowsボックスに行き詰まり、nslookupにのみアクセスできる場合:

nslookup -qa=A -debug Host.example.com authoritiative-dns-Host-here.com
51
M Sleman

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

はい-クエリに応答したサーバーから報告されたとおりです(キャッシュサーバーに要求している場合は、キャッシュの残り時間を返します)。

TTL実際のレコードに設定されたクエリを確認するには、権威ネームサーバー(Dig @some.dns.server Host.example.gov-信頼できるDNSサーバーは、Dig出力の[Authority]セクションにリストされます)

権威のあるNSに質問しているかどうかを簡単に確認します。Digをもう一度実行し、TTLが変更された場合は、おそらくキャッシュにヒットしています。同じままの場合は、おそらく権威のあるサーバー(またはキャッシングが壊れているサーバー)に質問しています。

15
voretaq7

デフォルトのDig出力に権限のあるサーバーを表示できませんでしたが、次の

Dig +nssearch Host.example.com

それらはvoretaq7で説明されているように使用でき、レコードの実際のTTL=値を取得します。

更新:これを行う方法を忘れて戻ってきたので、最初に権威あるネームサーバーをフェッチし、それを使用してDigする小さなスクリプトを書きました。

#!/bin/bash

show_help(){
        echo Usage $0 domain
}

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

DOMAIN=$1
APEX_DOMAIN=`echo $DOMAIN | sed 's/\(.*\.\)\([^.]*\.[^.]*\)/\2/'`
FIRST_AUTHORITATIVE_NS=$(Dig +nssearch $APEX_DOMAIN | awk '$1=="SOA"{sub(".$","",$2);print $2;exit;}')

echo
echo Using authoritative nameserver $FIRST_AUTHORITATIVE_NS

Dig @$FIRST_AUTHORITATIVE_NS $@
7
Adam