梅本です。 >>> Thu, 9 Jun 2011 01:42:41 +0900 の刻に「kikuchan」、すなわち >>> kikuc...@uranus.dti.ne.jp 氏曰く
kikuchan> せっかくの World IPv6 Day なので、6to4 で繋げてみたのですが kikuchan> 亀が踊ってくれませんでした。 略 kikuchan> ところが、この policy table が存在すると なぜか getaddrinfo() が kikuchan> 常にIPv4アドレスを先に返すようです...。 デフォルトでは、ipv6_enable="YES" の場合、RFC 3484 にあるポリシテーブル をローディングします。このルールは、6to4 アドレスを他の IPv6 アドレスと 区別しており、6to4 同士の通信でなければ、IPv4 の方が優先されます。これ は、6to4 は IPv4 上のトンネルであり、IPv4 で通信できるなら積極的に使う メリットがないからだと思っています。 kikuchan> 代わりに、ip6addrctl flush を実行し、policy table の中身をクリアすると kikuchan> reorder() でソートが行われないので、IPv6アドレスが先に返るようになりました。 これは、ポリシテーブルがない場合は、単に IPv6 を優先するルールとなり、 6to4 を特別視しなくなるためです。 kikuchan> 毎回 ip6addrctl flush すれば踊る亀を拝むことができるのですが、 kikuchan> IPv6用の policy table が存在すると IPv4 が優先されてしまう kikuchan> というのは、何か釈然としません。 6to4 を特別視したくないのなら、 /usr/src/usr.sbin/ip6addrctl/ip6addrctl.conf.sample を /etc/ip6addrctl.conf としてコピーし、 2002::/16 30 2 の行を削除するかコメントアウトし、 service ip6addrctl restart すれば良いでしょう。 -- 梅本 肇 @ インターネット互助会横浜 http://www.imasy.org/~ume/ u...@mahoroba.org ume@{,jp.}FreeBSD.org プログラムは書いた人の意図ではなく書かれた通り動く I hate Modula-3 :-)