ちょっとVagrantのことで調べ物していたところ、こんな記事を見つけました。
http://www.kunitake.org/chalow/2012-11-02-1.html

まとめると、CentOS5系の名前解決とCentOS6系からの名前解決のIPv4とIPv6の結果について、応答の順番が変わることで、名前解決に時間がかかる場合があるということです。
CentOS5系はAAAAレコード(IPv6)の要求を実行して、応答結果を受けて、その後にAレコード(IPv4)の要求->応答だったようです。
しかしCentOS6系からはAレコードとAAAAレコードを投げて、その後にそれぞれの要求が返ってくるようです。
しかし、Firewallの中には同じポートのクエリを同じセッションとみなして、IPv6が設定されていないサーバーへの応答ができないことで、IPv4の応答も返さず、Aレコードのクエリを再送するということらしいです。

なにはともわれ、検証してみることにします。

◆オプションをつける前
# cat /etc/redhat-release <–CentOS6系であることを確認
CentOS release 6.7 (Final)
# cat /etc/resolv.conf <–まずはオプション無し
nameserver 8.8.8.8
nameserver 8.8.4.4
# yum clean all <–キャッシュを削除
# time yum search php54 –enablerepo=epel,repo <–PHPを検索

※3回ともyum clean allを実施
[1回目]
real 0m9.618s
user 0m2.430s
sys 0m0.215s

[2回目]
real 0m6.825s
user 0m2.435s
sys 0m0.244s

[3回目]
real 0m9.713s
user 0m2.430s
sys 0m0.209s

◆オプションをつけた後
# echo “options single-request-reopen” >> /etc/resolv.conf
# cat /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4
options single-request-reopen

[1回目]
real 0m9.984s
user 0m2.462s
sys 0m0.191s

[2回目]
real 0m9.751s
user 0m2.452s
sys 0m0.199s

[3回目]
real 0m9.676s
user 0m2.465s
sys 0m0.205s

残念ながら上記検証では効果は得られませんでした。

いくつかサイトを見たところ、juniper配下のサーバーでこの事象に遭遇したと記載があるので、juniper相手などには効果があるかもしれません。

また、さくらのVPSではデフォルトでオンになっていました。
# cat /etc/resolv.conf
# Generated by NetworkManager
search sakura.ne.jp
nameserver 210.224.163.3
options single-request-reopen

入れてデメリットになることは少ないと思うので、CentOS6以降は標準で設定すると良いかもしれません。

カテゴリー: LinuxTech