検索してたら
「DHCPv6-PDは使えないので、RAで配られているprefixを確認して」
接続できたという記述があったので、試してみた。
tcpdump を使って RA で配られている prefix を確認して、リンクローカルアドレスの下位アドレスと繋げて ifconfig で設定してみた。
$ sudo tcpdump -n -i ppp0 -s 2048 -vv icmp6 tcpdump: WARNING: ppp0: no IPv4 address assigned tcpdump: listening on ppp0, link-type PPP_SERIAL (PPP over serial), capture size 2048 bytes 15:43:56.645204 IP6: IP6 (class 0xe0, hlim 255, next-header: ICMPv6 (58), length: 56) fe80::zzzz:zzzz:zzzz:zzzz > ff02::1: [icmp6 sum ok] ICMP6, router advertisement, length 56 hop limit 64, Flags [other stateful], pref medium, router lifetime 1800s, reachable time 0s, retrans time 0s mtu option (5), length 8 (1): 1500 ... prefix info option (3), length 32 (4): xxxx:xxxx:xxxx:xxxx::/64, Flags [onlink, auto], valid time 2592000s, pref. time 604800s ... $ sudo ifconfig ppp0 inet6 xxxx:xxxx:xxxx:xxxx:yyyy:yyyy:yyyy:yyyy $ ping6 www.wide.ad.jp PING6(56=40+8+8 bytes) xxxx:xxxx:xxxx:xxxx:yyyy:yyyy:yyyy:yyyy --> 2001:200:0:1::5 16 bytes from 2001:200:0:1::5, icmp_seq=0 hlim=54 time=29.972 ms 16 bytes from 2001:200:0:1::5, icmp_seq=1 hlim=54 time=35.164 ms ...
できた、できたよ。
なんで自動で取得できないのかは不明のまま。
rtsold -Dd ppp0 とかすると下のログが出るけど、何か関係あるのかな?
Jul 1 15:16:19 hanon rtsold[29297]: <make_packet> link-layer address option has null length on ppp0. Treat as not included.
PPTPで付くLink-Localアドレスがprefixlen=128になっているために、RAで配布されている64ビットのprefixを付けることができないようです。
pppdの挙動を変更するパッチをtech-netに投稿してみました。よろしかったらご覧ください。
http://mail-index.netbsd.org/tech-net/2009/11/08/msg001708.html