--- Begin Message ---
梅本@日立です。
>>>>> On Wed, 02 Aug 2000 14:19:37 +0900
>>>>> yoshfuji@xxxxxxxxxxxxxxxxx (Hideaki YOSHIFUJI (吉藤英明)) said:
yoshfuji> で、解決策ですが、getaddrinfo() に直接リゾルバを叩かせ、
yoshfuji> 1. IPv6, IPv4 を nsswitch.conf に従って同時に探す
yoshfuji> 2. 返ってきた結果を好ましい順番に格納する
yoshfuji> のようにすることで解決されると考えられています(間違ってたら訂正して
yoshfuji> ください)。
これだけでは不十分です。これで救えるのは、例えば /etc/hosts に
127.0.0.1 localhost と書いてあるのに、::1 localhost がないと localhost
の AAAA RR を求めて DNS を検索してしまうという事態です。
加えて、DNS の検索順序を直さないといけないです。例えば、domain が
bar.org で foo というホストを検索した場合、現状の glibc の実装だと、
foo.bar.org. の AAAA RR
foo. の AAAA RR
foo.bar.org. の A RR
foo. の A RR
という順序で検索が行なわれます。これは、AAAA RR の query と A RR の
query を別々に行なっているためです。これを、
foo.bar.org. の AAAA RR
foo.bar.org. の A RR
foo. の AAAA RR
foo. の A RR
というように、AAAA RR と A RR の query が同時に出るようにしないといけま
せん。そのため、KAME では res_query(), res_search() に対応する
res_queryN(), res_searchN() を用意し、getaddrinfo() はこちらの方を使用し
ています。
yoshfuji> なお、RFC2553bis で採用される見込みの、AI_ADDRCONFIG フラグの
yoshfuji> 実装と使用も有効かもしれませんが、上だけでたぶん大丈夫。
検索順序問題が解決されれば、不要になります。FreeBSD では心情的に
AI_ADDRCONFIG な動きをするようにしてありますが、いずれ正します。
なお、AI_ADDRCONFIG で救えるのは、kernel が IPv4-only な場合だけで、
dual-stack になっていると、IPv6 な socket() は作れてしまうので、どのみち
AAAA RR な query は出てしまい、効果はないでしょう。
yoshfuji> これらは時間があったらやろうと思っていますが、忙しくて手が回っていません。
アプリケーションが IPv6 対応をしぶる、あるいは、オプション扱いにして、
いつまでも PF_UNSPEC な getaddrinfo() を発行してくれないような事態になっ
たら、とってもやだなあと思ったりします。
--
梅本 肇@(株)日立製作所 ビジネスソリューション開発本部
E-Mail: ume@xxxxxxxxxxxxxxxxxx ume@xxxxxxxxxxxx ume@{,jp.}FreeBSD.org
URL: http://www.imasy.org/~ume/
===---===---===---===
Get help : send mail to ppserv@xxxxxxxxxxx, body is "help", no subject.
unsubscribe: send mail to ppserv@xxxxxxxxxxx, body is "unsubscribe", no subject.
--- End Message ---