2009-06-12 IPv6 と RFC3484
■[ネットワーク]DNS でラウンドロビンは当てにならない。
上の質問を見て、「あれっ、ラウンドロビンって、ブラウザのようなアプリケーションサイドで対応するものだっけ? gethostbyname 辺りで勝手にやっていて、アプリ側は渡された IP で繋ぐだけでは?」と思っていたら、それは、もう古い話らしい。
0000665: wgetがDNSラウンドロビンに対応していない - Vine Linux バグトラッキングシステム
上記ページは、Vine 上の wget の挙動に関する話だが、
問題の本質は,glibc中のgetaddrinfo()がRFC3484 rule 9に準拠した結果,名前解決されたIPアドレスがソートされて返されるためのようです.
と書かれていて、getaddrinfo を使うと、RFC3484 rule 9 に従うことになるので、そのままではラウンドロビンにならないらしい。
私が「ラウンドロビンされる」と報告したwgetは,バージョンは古くてgethostbyname()を使っているために結果的にラウンドロビンされて,Vine標準のwgetは新しくてgetaddrinfo()を使っている(IPv6対応かな?)ために,ラウンドロビンしてくれないということなのでしょう.
となると、gethostbyname を使っていれば、昔どおり、ラウンドロビンになるけど、IPv6 に対応しようとして、getaddrinfo を使うと、アプリケーション側が対応しなければ、ラウンドロビンにならないらしい。
とあるから、IPv6 対応した上で、ラウンドロビンをしたければ、アプリ側の対応が必要みたい。
で、こんなページもあった。
Syun -News&Column- » Vista+IEにはDNSラウンドロビンが使えない
これだと、Vista の gethostbyname はラウンドロビンにならないらしい。
で、ちょっと調べてみたら、やはりそうらしい。
これを読むと、IPv6 が有効になっていれば、RFC3484 rule 9 に従って、得られた IP アドレスをソートしてしまうので、これまでのようなラウンドロビンにはならない。それは得られたアドレスが IPv4 か IPv6 かに関係なく、「IPv6 が有効」であればこのような動作になる。Vista からは IPv6 がデフォルトで有効だから、アプリケーション側が対応してなければラウンドロビンは効かなくなる。
Bug#438179: glibc’s getaddrinfo() sort order
One of the existing use cases that breaks is round-robin DNS. Round-robin DNS is not an IETF standard; its use has been discouraged by various parties for years; it has limitations that make it unsuitable for any but the simplest of configurations.
とあって、そもそも DNS のラウンドロビンは、IETF 標準では無かったみたい。
いやぁ、知らなかったなぁ...。
- 212 http://d.hatena.ne.jp/happytar0/20091014/1255507854
- 155 http://q.hatena.ne.jp/1315976012
- 144 http://www.relaxteatime.sakura.ne.jp/wordpress/?p=801
- 70 http://pontago.hatenablog.com/entry/20091014/1255507854
- 38 http://www.google.co.jp/search?q=ラウンドロビン&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox-a
- 38 http://www.google.co.jp/url?sa=t&rct=j&q=rfc3484&source=web&cd=4&ved=0CDQQFjAD&url=http://d.hatena.ne.jp/JULY/20090612&ei=a7_ATp7XB6jYmAWU_4i3BA&usg=AFQjCNFQcb40ZAWATqBeze3z9bKV7_ngLA&cad=rja
- 37 http://q.hatena.ne.jp/1244782681
- 32 http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rlz=1T4GGLJ_jaJP252JP252&q=Vista ラウンドロビン
- 31 http://www.google.co.jp/search?q=dnsラウンドロビン+vista&hl=ja&lr=&start=10&sa=N
- 31 http://www.google.co.jp/url?sa=t&rct=j&q=dnsラウンドロビン vista&source=web&cd=1&ved=0CCYQFjAA&url=http://d.hatena.ne.jp/JULY/20090612/p1&ei=wT2EToq3A8rTmAXNruAJ&usg=AFQjCNGVtljRShFPq8YQacH3X_
