[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:23425] Fw: [USERS 29] IPv6 support harmful?



吉藤英明@東北大学情報科学です。

Fromではねられたそうなので転送します。

-- 
Hideaki YOSHIFUJI @ USAGI Project  <yoshfuji@xxxxxxxxxxxxxx>
Web Page: http://www.ecei.tohoku.ac.jp/%7Eyoshfuji/
PGP5i FP: F731 6599 5EB2 BBA7 1515  1323 1806 A96F 5700 6B25 
--- 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 ---