2008年9月7日日曜日

うちのXPがいつの間にかAAAAレコードを問い合わせるようになった

その時は WireShark を起動したままFireFoxでネットを見ていた、よくある話です。
 

ふとwiresharkをDNSの通信だけ表示するようにしたら、FireFoxでWEBサイトを見るときに、
「AAAAリソースレコード問い合わせ→「Server Fail」(またはCNAME)」
というプロセスをいちいち踏んでから、改めてAを問い合わせて目的のWEBサーバにアクセスしている事に気付いた。
これではDNSサーバに負担がかかる(下記資料リンクを参照)じゃないの。

参考資料:IPv6/IPv4 TCP フォールバックと IPv6 DNS クエリ 現状と今後
http://www.nttv6.net/200512-fallback.pdf

 

あれ?何で?と思いNICのプロパティでIPv6プロトコルの状態を見てみると、インストールはされているが無効になってる。
そういえばちょっと用があってインストールして、用が済んだので無効にした、という覚えがある。
 

じゃあ何でFireFoxはAAAAを問い合わせるんだろうと思い、「どういうことよFireFox」という気分で、何をトチ狂ったかFireFoxのソースを取りに行った。
後から思うと調べる順番がおかしいが、ちょっとソースも見てみたかったので仕方ない。
 
 

さて、プログラムも読めないのにソースを展開、調査してみる。
きっとIPv6の有効状況を調査して、AAAAトライ → A なロジックがあるに違いない。無効にしているのに何故かそっちに行っているに違いない、と思った。(冤罪ですよ念のため)
 
ふむ…
"mozilla\netwerk\dns\src\nsHostResolver.cpp"ファイルの
"nsHostResolver::ResolveHost" あたりが怪しい…
 
……
(ノ-Д-)ノΞ┻┻ < 読めんわー!
 
 
 
 

気を取り直してIE6を立ち上げると、こいつもAAAAから聞く。
ああ、もうOSのリゾルバがそうなってるんだな。。。とやっと気づく。
 

Microsoftで情報を探すと、"The Cable guy"に気になる記事。

  1. The Cable Guy – 2006 年 5 月 Windows Vista で IPv6 を構成する
    http://www.microsoft.com/japan/technet/community/columns/cableguy/cg0506.mspx


 

関連の箇所を引用する。
Windows XP とは異なり、Windows Vista の IPv6 はアンストールできません。しかし、次の操作の 1 つを行うことにより、Windows Vista の IPv6 を無効にすることができます。
 
●[Connections and Adapters] フォルダで、すべての接続およびアダプタのプロパティを取得し、[この接続は次の項目を使用します] の下の [Internet Protocol version 6 (TCP/IPv6) component] のとなりのチェックボックスを外します。この方法は LAN インターフェースの IPv6 を無効にしますが、トンネル インターフェースまたは IPv6 ループバック インターフェースの IPv6 は無効にしません。
(略)
●次の 0xFF に設定されたレジストリ値 (DWORD タイプ) を追加します。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\DisabledComponents
この方法はすべての LAN インターフェース、接続およびトンネル インターフェースの IPv6 を無効にしますが、IPv6 ループバック インターフェースは無効にしません。このレジストリ値を有効にするためには、コンピュータを再起動する必要があります。

 

あー…
IPv6はインストールしてしまったらNICのバインドを外しても、ループバックが有効だからIPv6のアドレスもまだ持ってるのか、これは迂闊。
何のことはなく、IPv6が有効だからDNSの問い合わせでまずAAAAをとろうとしていたことが判明。
 
 

冒頭の資料(3年前!)ではないけど、この一連の 一人相撲 調査でIPv6対応を推進していかなくてはいかんと思った。
がんばれ「IPv6普及・高度化推進協議会!」共存でいいから。