DNSのキャッシュ時間(TTL)を確認するには

DNSのドメインを切り替えるとき、どれくらいの時間がかかるか確認したい時があります。
DNSの設定を確認すれば良いですが、設定を直接確認できないときは dig が使えます。dig コマンドに、知りたいドメイン名、タイプを指定します。

dig apiless.com NS
dig apiless.com MX
dig apiless.com A

下記のような結果が返ってきます。ANSWER SECTION に表示されている数字(4437秒)が残りのキャッシュ時間になります。

$ dig apiless.com

; <<>> DiG 9.10.6 <<>> apiless.com NS
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 9344
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;apiless.com.			IN	NS

;; ANSWER SECTION:
apiless.com.		4437	IN	NS	ns-1165.awsdns-17.org.
apiless.com.		4437	IN	NS	ns-1983.awsdns-55.co.uk.
apiless.com.		4437	IN	NS	ns-491.awsdns-61.com.
apiless.com.		4437	IN	NS	ns-880.awsdns-46.net.

;; Query time: 26 msec
;; SERVER: 172.20.10.1#53(172.20.10.1)
;; WHEN: Sun Mar 10 15:00:25 JST 2023
;; MSG SIZE  rcvd: 177

何度かリクエストすると、秒数が減ったり増えたりすることがあります。残り時間が減っていたり、違うサーバが返答してきたりすることにより値が変わります。そのため、設定した数字が分かるとは限りません、0秒になったすぐ後のタイミングで見たり、0秒になる前にクリアされている場合もあるので、何回か打って見ると設定に近い数値が分かるかもしれません。

DNSサーバを指定することもできます。プロバイダのDNSは遅い場合もあるので、Google Public DNS(8.8.8.8)や、Cloudflare(1.1.1.1)といったパブリックなDNSサーバを指定すると結果が早くなるかもしれません。

dig @8.8.8.8 apiless.com NS

ShellDNS

Posted by kidatti