DNSサフィックスを忘れるとプリンタアクセスが遅くなる

風が吹けば桶屋が儲かる”ではないが、一見関係ないようだが“DNSサフィックスを忘れるとネットワークプリンタへのアクセスが遅くなる”といういう話。

もうすぐWindows 7が出てくるでだろうという今になってやっとVistaを使い始めた。普段の仕事には全くVistaの必要性を感じてなかったためズーッとXPを使っていた。新しいカスタムPCにVista Ultimateをインストールして、他の環境も整え始めた。

ところが、ネットワークプリンタへのアクセスが異常に遅い。プリンタにアクセスするまでに55秒以上かかる。

最初、この症状を見つけたのは“筆まめ19”をインストールした時だった。住所録ファイルを開こうとすると開き終わるまでに約58秒かかった。これでは使い物にならない。メーカーのホームページにはそれらしい情報もなかったが、ネットで調べるとネットワークプリンタを直付けにしたら直ったというQ&Aがあった。はい? 別の部屋から長いUSBケーブルでも使って接続しなければならないのか?などど思いつつ、原因は筆まめ19のファイルのオープンではなくプリンタの共有だと分かった。(しかし、ファイルをオープンする時にプリンタまでチェックしなくても良いものを。)

どうも筆まめの問題ではなくVistaのネットワークプリンタへのアクセスの方法に問題があるように見える。筆まめで住所録を開こうとしたり、プリンタの管理でプロパティを開こうとするとHUBのランプが一斉に点滅する。ブロードキャスト・パケットを出しているみたいな感じがする。

WireSharkをインストールして、出されているパケットを調べると“Link-local Multicast Name Resolution (LLMNR)”というマルチキャストのパケットだった。更に調べてみるとVistaからはDNSが使えない等の条件によってNetBIOSではなくLLMNRで名前解決することが分かった。IPv6では標準でLLMNRが使われるらしい。IPv4でもNetBIOS over TCPを使わない設定にするとLLMNRが使われるらしい。しかし、私の環境ではIPv6は使っていなし、NetBIOSを無効にはしていない。なのにLLMNRが使われている。大体、私のネットワーク上にはLLMNRに応えるようなサーバは設定していない。そもそもプリンタサーバはWindows 2000を動かしているので、そんなプロトコルは知らないだろう。

第一に、私のネットワーク環境ではDNSサーバを立てて、そこで一元管理しているのでLLMNRが動く筈がない、のだが。(“最小限の設定でDNSを使う”)

とにかくLLMNRを切れば何とかなる筈だ。LLMNRでの名前解決が失敗した後は、何食わぬ顔でプリンタは使えるようになるのだから。(どうもNetBIOSに優先してLLMNRで名前解決を試みるようだが、失敗するとNetBIOSが使われるのかと思われる(未確認)。)ところが、どこを探してもLLMNRによる名前解決を無効にする方法が見つからない。レジストリも舐めてみたがそれらしい項目もない。仕方ないのでデフォルトのプリンタをネットワークプリンタではなく“Microsoft XPS Document Writer”にして取りあえず症状を回避した。(機能を無効にできない、というのも困りものだが。)

症状は回避したものの、これでは全てのアプリケーションで印刷する時に一々、プリンタを指定する必要があるし、その度に数十秒〜1分も待たされることになる。悔しいのでマイクロソフトのホームページ“The Cable Guy - 2006 年 11 月”を読み直してみた。そこに、

Windows Vista は hostname.local という名前を hostname に変換し、LLMNR を使用して単一ラベルの名前を解決しようとします。

という記述を見つける。これって“local”以外のサフィックスはそのまま付けて名前解決するということ、だよな。そう言えばサフィックスって設定してたっけ? あれ、設定してない! 最初Vistaをインストールした時はDHCPで動かしていたが、ミニタワー型のPCでもあるのでIPアドレスの設定を静的に設定し直していた。その時、サフィックスの設定を忘れていたのだ。

だから、DNSでの名前解決でも失敗し、LLMNRでも失敗し、最後にNetBIOSでやっと解決できた、という事らしい。私のネットワークで使っている“localnet”というサフィックスの設定を追加したら、問題なくネットワークプリンタが使えるようになった。

[コントロールパネル]⇒[ネットワークとインターネット]⇒[ネットワーク接続(の管理)]から“ローカルエリア接続”のプロパティ⇒“IPv4”のプロパティ⇒詳細設定⇒DNSタブ⇒“この接続のDNSサフィックス

今回は未設定が原因だったが(とは言ってもLLMNRがなければNetBIOSで解決していた筈)、なんかVistaはちょっとの使い勝手の向上と見栄えに引き換えて、ずいぶん使い勝手が悪いところ増えたように感じる。例えば、KVMスイッチ環境では一々、画面のサイズが変更されてしまうし、ユーザー・アカウント制御に入る度にマウスが5秒ほど金縛るなど、等。しばらくVistaとの格闘は続きそうだ。

補足(2009/05/13)

Vistaで画面解像度を固定する方法が見つかった。VNCの副作用によるものだが、とりあえずは解決。(“Vistaで画面解像度を固定する”を参照)