digを使ってTTLとキャッシュの値を確認する方法

digコマンドを使って、DNSに登録されているレコードのTTLやキャッシュの残り時間を調べる方法です。

TTLを確認する方法

TTLとは

はじめに、TTLとはTime To Liveの略で、DNSのレコード情報をキャッシュとして保持しても良い時間(秒)のことです。

例えばTTLが600に設定されている場合は、600秒(10分)はキャッシュサーバでキャッシュを保持しても良いということになります。

この場合、キャッシュサーバでは情報がキャッシュされるとキャッシュの残り時間が600秒から減少しはじめて、この値が0になるとキャシュから削除されます。

権威(コンテンツ)サーバを探してTTLを確認

権威(コンテンツ)サーバを指定してドメインを調査すると、設定されているTTLの値を確認することができます。

digコマンドで権威サーバを確認したい場合は、クエリタイプにNSを指定してdigを実行します。

dig ドメイン NS

権威サーバの確認例

実際にserver-memo.netドメインの権威サーバを確認してみます。

クエリタイプにNSを指定してdigを実行した結果の、ANSWER SECTION部分に権威サーバが表示されます。

今回の例では下記の2つが権威サーバとなります。

  • dns01.muumuu-domain.com.
  • dns02.muumuu-domain.com.
$ dig server-memo.net NS

; <<>> DiG 9.18.12-0ubuntu0.22.04.3-Ubuntu <<>> server-memo.net NS
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36733
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 3

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;server-memo.net.		IN	NS

;; ANSWER SECTION:
server-memo.net.	259	IN	NS	dns01.muumuu-domain.com.
server-memo.net.	259	IN	NS	dns02.muumuu-domain.com.

;; ADDITIONAL SECTION:
dns01.muumuu-domain.com. 259	IN	A	202.239.23.40
dns02.muumuu-domain.com. 259	IN	A	210.152.245.173

;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Tue Oct 24 22:22:35 JST 2023
;; MSG SIZE  rcvd: 133

権威サーバを確認することができたら、権威サーバを指定してTTLを確認したいホスト名の名前解決を行います。

dig ホスト名 @権威サーバ

表示された情報のANSWER SECTIONの部分にTTLが表示されます。

ANSER SECTIONでの表示結果には下記の情報が含まれています。

ホスト名   TTL  IN  タイプ 応答データ

TTLの確認例

www.server-memo.netに設定されているTTLを確認してみます。

ANSWER SECTIONを確認すると、TTLが3600秒(1時間)に設定されていることが分かります。

$ dig www.server-memo.net @dns01.muumuu-domain.com

; <<>> DiG 9.18.12-0ubuntu0.22.04.3-Ubuntu <<>> www.server-memo.net @dns01.muumuu-domain.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7703
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1680
;; QUESTION SECTION:
;www.server-memo.net.		IN	A

;; ANSWER SECTION:
www.server-memo.net.	3600	IN	A	133.242.16.216

;; Query time: 32 msec
;; SERVER: 202.239.23.40#53(dns01.muumuu-domain.com) (UDP)
;; WHEN: Wed Oct 25 09:59:46 JST 2023
;; MSG SIZE  rcvd: 64

flagsによる権威サーバの判別

HEADER部分のflagsでaa(Authoritative Answer)と表示されているので、権威サーバから応答があったことがわかります。

ちなみに、qr(Query Response)はクエリに対する応答であることを示していて、rd(recursion desired)はクライアントが再帰的問い合わせを要求していることを示しています。

キャッシュの時間を確認する方法

権威(コンテンツ)サーバ以外のネームサーバで名前解決を行うと、問い合わせた情報のキャッシュ時間を確認することができます。

問い合わせを行ったDNSサーバがキャッシュサーバであるかどうかの判別は、HEADER部分のflagsで行うことができ、表示内容にaa(Authoritative Answer)がなければキャッシュサーバになります。

キャッシュの残り時間はdigを実行して表示されるANSWER SECTION項目のTTL部分に表示されています。

ホスト名   TTL  IN  タイプ 応答データ

キャッシュ時間の確認例

digでキャッシュの時間を確認してみます。

ANSWER部分の表示結果から、キャッシュの残り時間は2438秒である事が分かります。

$ dig www.server-memo.net

; <<>> DiG 9.18.12-0ubuntu0.22.04.3-Ubuntu <<>> www.server-memo.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8015
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;www.server-memo.net.		IN	A

;; ANSWER SECTION:
www.server-memo.net.	2438	IN	A	133.242.16.216

;; Query time: 4 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Tue Oct 24 21:06:13 JST 2023
;; MSG SIZE  rcvd: 64

DNSサーバを指定してキャッシュ時間を確認

問い合わせを行うDNSサーバ指定して、そのサーバに登録されているキャッシュ時間を確認することもできます。

googleが的供しているキャッシュサーバであるgoogle Public DNSをサーバとして指定してみます。

表示結果からキャッシュの残り時間が2831秒であることが確認できました。

$ dig www.server-memo.net @8.8.8.8

; <<>> DiG 9.18.12-0ubuntu0.22.04.3-Ubuntu <<>> www.server-memo.net @8.8.8.8
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15500
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;www.server-memo.net.		IN	A

;; ANSWER SECTION:
www.server-memo.net.	2831	IN	A	133.242.16.216

;; Query time: 32 msec
;; SERVER: 8.8.8.8#53(8.8.8.8) (UDP)
;; WHEN: Wed Oct 25 16:33:05 JST 2023
;; MSG SIZE  rcvd: 64

キャッシュサーバのキャッシュ有効時間は、キャッシュとして登録された時間がキャッシュサーバごとに異なるので、キャッシュサーバごとに異なる値にはなります。

コメント

タイトルとURLをコピーしました