読者です 読者をやめる 読者になる 読者になる

clock-up-blog

go-mi-tech

(Windows) 特定のホスト名 (*.local) だけ、hosts による名前解決が遅い

Windows ネットワーク

現時点で解決策は見つからず

この手の記事を書くときはだいたい解決策見つけてから書くんだけど、今回ばかりはまったく見当がつかないので、とりあえず現象だけメモ。

現象

C:\Windows\System32\drivers\etc\hosts に登録したホスト名のうち、
特定の名前のものだけ名前解決が遅い。


ローカルの開発環境へのブラウジングが妙~に遅くなっていることに気づき調査開始。
f:id:kobake:20140505031118p:plain
「ホストを解決しています...」の時間がやたらと長かったのです。(といっても1~2秒程度ですが。でもこの1~2秒がすごいストレス。)
最初はブラウザの問題かと思い、他のブラウザ(Firefoxとか)でも試したのですが、それも同様に重い。

ping してみてもやはり名前解決が重い。
f:id:kobake:20140505031959p:plain

C:\Windows\System32\drivers\etc\hosts の中身

…
192.168.56.102 virtualbox clock-up.local www.clock-up.local
…

ホスト名はこの hosts に書いてあるので、名前解決は一瞬で終わるはずなのですが。。

何故か「*.local」のみ重い

同じように hosts に定義しているホストでも、何故か特定のホスト名だけ重いことが分かってきました。

ping clock-up.local     … 重い
ping virtualbox         … 重くない
ping www.clock-up.local … 重くない


ちょっとばかり検証用にいくつかホスト名を追加。
C:\Windows\System32\drivers\etc\hosts

…
127.0.0.1 a.local
127.0.0.1 a-a.local
127.0.0.1 a.a.local
127.0.0.1 a.aaaaa
127.0.0.1 a-a.aaaaa
127.0.0.1 a.a.aaaaa


で、ping 打ってみる。

ping a.local   … 重い
ping a-a.local … 重い
ping a.a.local … 重くない
ping a.aaaaa   … 重くない
ping a-a.aaaaa … 重くない
ping a.a.aaaaa … 重くない

なんじゃこりゃ。という感じです。
「*.local」というホスト名だけ名前解決が重い。
正確には /^[a-z\-]+\.local$/ なホスト名だけ名前解決が重い。

環境情報

Windows 7 Home Premium にて確認。
Windows Server 2008 R2 Datacenter では発生しなかった。

僕の環境には開発用に数十種類のミドルウェアが入っているのでちょっと問題の切り分けが難しいところですが。。。
とりあえず情報をメモとして残しておく。

環境の変化

ここ最近になってから発生。少なくとも2週間前は発生していなかった。
ここ最近システム構成を変えたところといったらIE関係のセキュリティアップデートくらいしか思い当たるところが無い。。。

引き続き調査…といきたいところだけど

clock-up.local だと名前解決重いけど、www.clock-up.local なら名前解決の問題には引っかからないので、当面はこれで凌げるのでこれで行く方針。

根本的な問題の原因はなかなか見つからなそうなので調査を続ける心は半ば折れています。

未来の自分か他の誰かが調査を続行するために情報は残しておく。

追加情報

ブログ記事書いたら早速フィードバックをいただきました。
mDNS というものが大事なキーワードっぽい。Windows 限定の問題でもなさそうな感じ。

はてブコメント

教えてもらったサイトのはてブコメント。
はてなブックマーク - hostsに".local"で終わるドメインを書いて使うと面倒なことになる - すぎゃーんメモ

id:tockri
超ありがとう!IPに対して".local"で終わる名前が一つでも含まれてると、他の名前で呼ぶ時も遅くなってた。 2013/05/21

id:tmatsuu
mDNSの影響だね。あるある。 2012/07/24

あるあるなのかーー。とりあえず .local は危険な香り。

コマンドメモ

netstat -R
ipconfig /flushdns
ipconfig /release
ipconfig /renew
});