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
キャッシュサーバのキャッシュ有効時間は、キャッシュとして登録された時間がキャッシュサーバごとに異なるので、キャッシュサーバごとに異なる値にはなります。
コメント