2011年09月23日

Windowsにおける名前解決の挙動(DNS・LLMNR・NBT)

Windows上での名前解決方法は結構複雑なようなので検証してみました。
仕様を厳密に調べたわけではなく、実際にやったらこうなった、という結果です。

■ 前提
  • Windows 7(以下、クライアント) から ping を打つ時の名前解決の挙動の検証。
  • あて先は存在しない名前。
  • ping 実行後はクライアント上でDNSキャッシュの削除「ipconfig /flushdns」、NetBISO名のキャッシュの削除「nbtstat -R」を実施。
  • クライアントはActive Directoryドメインには参加せず、ワークグループ環境。
  • クライアントは固定IPアドレス。
  • LLMNR、NetBIOS over TCP/IP、IPv4、IPv6は有効。


■ 結果
名前の指定方法と、試みる名前解決方法の順番。
 コマンド\DNSサフィックス
 なし
 local
 dom.local
ping host1LLMNR>NBT
DNS>LLMNR>NBT
DNS>LLMNR>NBT
ping hsot1.local
DNS>LLMNR>NBTDNS>LLMNR>NBTDNS>LLMNR>NBT
ping host1.dummy
DNS>NBTDNS>NBTDNS>NBT
ping host1.dom.local
DNS>NBTDNS>NBTDNS>NBT


この .local というのは実装上特別なようで、
http://technet.microsoft.com/ja-jp/library/bb878128.aspx
によると、
hostname.local の形式の名前をクエリすることに慣れているユーザーに対する利便性として、Windows Vista は hostname.local という名前を hostname に変換し、LLMNR を使用して単一ラベルの名前を解決しようとします。
だそうです。たとえば上記の結果のうち、DNSサフィックスなしで「ping host.local」を
実行したとき時にLLMNRで「host1」を問い合わせていました。

補足ですがNetBIOS名は15文字が制限なので、「host1.dom.local」はぎりぎりです。「host12.dom.local」とかだと、NBTで問い合わせしなくなります。

今回は、存在しない名前をあて先にしています。存在する名前にすると結果が変わってくると思います。たとえばLLMNRで解決できればNBTで問い合わせしなくなる、とかです。

NBTについては互換性のため残すのはしょうがないと思いますが、Vistaからの新しい仕様(LLMNR)の追加でさらに複雑化してきましたね・・・
posted by webdev at 21:40| Comment(0) | TrackBack(0) | ネットワーク | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/227297223

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。