LinuxのDNSコマンドにはdigが存在し、DNSレコード単位のTTLまでわかるのですが、Windowsではそこまでわかりません(SOA情報はわかりますが)。
WindowsでDNSレコード単位のTTLを確認する方法はないのでしょうか?
レジュメ
環境・前提条件
- Windows Server 2008
- windows 10 (追記)
のコマンドプロンプトで確認しました。
普通の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例)
DNSサーバーで有名なフリーソフトのBindでレコード単位のTTL設定というのは、ゾーンファイルに上記のような設定をしたものです。
ゾーン全体に設定するSOA情報のTTLとは異なって設定が可能です。
Linuxのdigコマンド出力はどういう情報なの?
Linuxのdigコマンドの出力は上記のような出力です。
レコード単位のTTL(厳密にはキャッシュ時間ですけど)がわかり、nslookupのdebugオプション時と同じような情報であることがわかります。