DNSのnslookupコマンドのtypeでanyとallの違い

サーバー・Web関連

以下はWindowsのPowershellのnslookupコマンドでテストした結果です。

DNSのnslookupコマンドで
特定のドメインのゾーン情報を確認している時、

nslookup -type=any [ドメイン名] 8.8.8.8
nslookup -type=all [ドメイン名] 8.8.8.8

のように DNSサーバーを指定して、
type指定を “any” にする時と “all” にする時とで
なにが違うのか調べてみました。

実際にコマンドで確認すると・・・
any と all で一定の答えが返ってきました。

次に、
DNSサーバーを指定しないで

nslookup -type=any [ドメイン名]
nslookup -type=all [ドメイン名]

の2つのコマンドで確認すると・・・

any で(ある程度)全部のレコードが返って来る時と来ない時
all で(ある程度)全部のレコードが返って来る時と来ない時
がありました。(★現象A)

「同じDNSサーバーに問い合わせると同じ答えを返す」と仮定すると
DNSサーバー指定しないで何度も問い合わせたときに異なる答えが返ってくるということは
DNSサーバー指定しないと、
問い合わせる度にランダム(もしくは2つ以上)のDNSサーバーに問い合わせを行っているようです。

そして、「DNSサーバーによっては同じコマンドでも返す値は異なる。」ということになります。

つまり、現象Aからすると、DNSサーバーの仕様によって、
「 -type=any 」で(ある程度)全てのレコードを返すサーバと、
「 -type=all 」で(ある程度)全てのレコードを返すサーバがあるということになります。

DNSサーバA「うちはany派だから all で聞かれても答えないよ!」
DNSサーバB「うちはall派だから any で聞かれても答えないよ!」

ということですね。
インターネット技術にありがちな「世界基準が無くてもなんとなく動く」というやつですね。
おそらくDNSサーバソフトによって挙動が異なるのかと思います。

-type=any(またはall) で問い合わせてるのに望んだ答えが返って来ないなぁ
というときは、10回ぐらいバシバシ問い合わせると返って来るようです。

運が良ければ1回で。悪いと5,6回やっても返ってこないこともあります。
どのDNSサーバに問い合わせるかはランダムのようです。

というわけで nslookup で -type=any か -type=all かで迷ったときは
「どちらでも良い」ということのようです。

もう少し詳しく書くと「どちらでも良いけど、何回も問い合わせる」となりますね。

※あくまでも私の論理見解です。

コメント