事の始まりはこの記事で、
「フレッツ光ユーザーは6/6以降IPv6が使えない」日経記事を考察する (今日の気分はバリいくつ?)
DNSサーバーへの問い合わせにIPv4とIPv6のどちらを使うのかを調べてみたのですが、
DNSサーバーとの通信にIPv4とIPv6のどちらが使われるかいろいろ調べてみた (今日の気分はバリいくつ?)
iPhoneやiPadなどのiOSデバイスについてだけは確証が得られず、週末いっぱいこの課題解決に費やしてしまいました。
突破口を開いたのはこの記事。
Interlink のDNSはAAAAフィルタを有効にとる (freeml)
どうもInterlinkのDNSサーバーは現状(4/8現在)でもAAAAフィルタがかかっているようで、実際にその動きを確認しました。そこで自宅インターネットのDNSサーバーをIPv4だけInterlinkを参照するように変更(IPv6はそのまま)した上で、iPhone 4S(iOS 5.1)やiPad(2012年モデル、iOS 5.1)でIPv6対応Webページ(http://www.kddi.com、http://www.plala.or.jp)にアクセスしたところ、InterlinkのDNSサーバーを設定している間はIPv4でのアクセスになってしまいました。この結果から少なくともブラウザアクセスにおいて、iOS搭載デバイスはIPv4でのDNS問い合わせを優先することが言えそうです。
これですっきり解決とおもいきや、OSの挙動とブラウザの挙動は分けて考えなければならない事態に遭遇してしまいました。Windows 7でInterlinkのDNSサーバーを参照中、nslookupコマンドはIPv6のDNSサーバーを優先してきちんとAAAAレコードを返していたのですが、Webブラウザ(IE9、FF11、Chrome18、Safari5.1.5、Opera11.61)でIPv6対応Webページを参照するとIPv4として認識されてしまいました。IPv6のDNSサーバーをOSレベルで優先参照するよう設定したUbuntu 11.10も同じ挙動。OSとブラウザの挙動は違うという事なのでしょうか。どうも根が深そうな問題にあたってしまったようです。
追記:Windows 7についてはVMware Player、Ubuntuについてはresolv.confの記述順の問題のようです。詳細はこちらをご参照ください。