結論から言えば、とりあえず RHLE6/CentOS6 な人は /etc/resolv.conf に
options single-request-reopen
を書いておこうという話です(全部小文字ですよ、念のため)
なぜか?
RHEL5/CentOS5/Ubuntu 10.04なLinuxとかでは、FQDN の解決をするときに
single-request-reopen (since glibc 2.9)
The resolver uses the same socket for the A and AAAA requests. Some hard-
ware mistakenly only sends back one reply. When that happens the client
sytem will sit and wait for the second reply. Turning this option on
changes this behavior so that if two requests from the same port are not
handled correctly it will close the socket and open a new one before send-
ing the second request.
ここまでわかってるなら、default で、socket を別々に作ってくれよと思うのですが、オプションでの回避となっているようです。
#最近のUbuntuはどうなのか、確認する環境が手元になったので、わかりませんが、たしか最近は glibc 使ってなかったと思うので、問題は起こさないかも??
かくして、せっかくIPv6のために改善された挙動が、IPv6に起因するあらたな問題を生み出してしまったようです。Firewall が問題だ!という話もありますし、実際 Firewall側の設定変更で、回避可能な問題ではあるんですが、MacOS X 10.8.2 とかでは、query の source port は、別々なので、問題を引き起こしません。
ともあれ、すべての人に問題が発生するわけではなく、環境依存ではありますが、「IPv6無効にしたら早くなった」ネタが、新たに誕生してしまったのが切ない…
追記:2012-11-05 画像追加。文章調整しました。glibcのバージョンの言及を削除しました。
IPv4/IPv6 meter |
思ったより安い……時もある、Amazon |