DNSレコード単位のTTLを確認する方法。WindowsのnslookupでDNS詳細通信を見る

最終更新日付: 2021年3月30日

LinuxのDNSコマンドにはdigが存在し、DNSレコード単位のTTLまでわかるのですが、Windowsではそこまでわかりません(SOA情報はわかりますが)。

WindowsでDNSレコード単位のTTLを確認する方法はないのでしょうか?

環境・前提条件

  • Windows Server 2008
  • windows 10 (追記)

のコマンドプロンプトで確認しました。

image

普通のWindowsのnslookupコマンドでは上記のように表示されますよね、TTL情報無し。

結論、nslookupのdebugオプションで詳細DNS通信がわかる!

上記のように、通常のnslookupコマンド出力の間のデバック情報がわかります。
これはDNSトラブルの解析時には便利ですね!

この場合は、厳密にはキャッシュ時間です。
だいたいのレコード単位のTTLがわかりますけど、キャッシュ時間ですので、TTL時間がカウントダウンされ減ってしまうんですよね。

正確なTTL値を知るにはコンテンツDNSに問い合わせる!

上記画面は、nslookup先をキャッシュDNSではなく、コンテンツDNSへ問い合わせした結果です。
具体的には、以下のコマンドを実施しました。

nslookup -debug www.yahoo.co.jp. ns11.yahoo.co.jp

すると、

  • キャッシュDNSの時には、カウントダウンされていましてキャッシュ時間(TTL)が出力されましたが、
  • コンテンツDNSの時には、カウントダウンされていない一定のTTL値が出力されます

これでWindows nslookupでもDNSレコードの正確なTTL値がわかりますね!

考えてみれば、当然の結果ですね。

コンテンツDNSサーバーを知る方法

では、そのDNSレコードのコンテンツDNSサーバーを知るには、どうしたらよいかといいますと、

set type=allオプションでDNSレコードをnslookupするか

nslookup -type=all www.yahoo.co.jp

もしくは、set type=nsオプションでDNSレコードのドメインをnslookupするか

nslookup -type=ns yahoo.co.jp

で、nameserver(コンテンツDNSサーバー)情報が得られます。

以下、参考情報です。

SOAではなくレコード単位のTTL設定とは?(Bind例)

image

DNSサーバーで有名なフリーソフトのBindでレコード単位のTTL設定というのは、ゾーンファイルに上記のような設定をしたものです。
ゾーン全体に設定するSOA情報のTTLとは異なって設定が可能です。

Linuxのdigコマンド出力はどういう情報なの?

image

Linuxのdigコマンドの出力は上記のような出力です。
レコード単位のTTL(厳密にはキャッシュ時間ですけど)がわかり、nslookupのdebugオプション時と同じような情報であることがわかります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です