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

[debian-users:23394] Re: IPv6 support harmful?



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


In article <873dkocm2u.wl@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> (at Wed, 2 Aug 2000 13:40:47 +0900), MORI Koichiro <kmori@xxxxxxxxx> says:

> potato を使っているのですが、いくつかのソフトの IPv6 対応に苦しめられ
> ています。今のところ、問題になっているのは exim と emacs20-dl です。
:
> しかし、gethostbyname2 関数の実装をみるかぎり、IPv6 address を要求され
> た場合は 127.0.0.1 localhost といったエントリは無視されてしまうようです
:
> ます。emacs は作りなおすのが面倒なので、/etc/hosts に
> 
> ::1             ip6-localhost ip6-loopback localhost
> 
> というエントリを追加したらとりあえず外部へのqueryは止まりました。
> 
> しかし、こういった解決はあまり好いとは思っていません。今後、IPv6対応の
> パッケージが増えるたびに、ソースを持ってきて make し直すというのは現実
> 的ではないと思います。もっとよい解決法があれば教えてください。

xemacs 開発側でも問題になったようで、私のところに問い合わせが来ました。
同様の問題は以前、*BSD な KAME プロジェクトでも発生していました。
Linux での問題は getaddrinfo() が gethostbyname2_r() を使っており、
PF_UNSPEC な問い合わせに対して、

 1. IPv6 を nsswitch.conf に従って探して格納する
 2. IPv4 を nsswitch.conf に従って探して格納する

ような動作になっているためです(KAMEでも全く同じではないが同様な原因)。
で、解決策ですが、getaddrinfo() に直接リゾルバを叩かせ、

 1. IPv6, IPv4 を nsswitch.conf に従って同時に探す
 2. 返ってきた結果を好ましい順番に格納する

のようにすることで解決されると考えられています(間違ってたら訂正して
ください)。なお、RFC2553bis で採用される見込みの、AI_ADDRCONFIG フラグの
実装と使用も有効かもしれませんが、上だけでたぶん大丈夫。

これらは時間があったらやろうと思っていますが、忙しくて手が回っていません。

個別の対策としては、getaddrinfo() に渡す hints.ai_family を設定で
切替えられるようにすること(これは xemacs 側に既に実装のプロトタイプを
送付してあり、また、同様な変更は emacs にも効くと思われる; mnews に
ついても同様な変更を既に提案してあります)、また、全体の対策としては、
たぶん、森さんのおっしゃるようなことくらいしかないと思います。
#自ホスト名の仮IPv6アドレス(::1でいいか?)も登録したほうが
#よいかもしれません

-- 
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