IPv6のことがある程度知っている前提で書いています。
分からない方は、勉強しながら見てください。
ひかり電話の有無で変わるprefix
これが全ての元凶でした。
IPv6 IPoEで利用しようとすると、ひかり電話の有無でIPv6のアドレス取得方法が異なるうえ、prefixが異なるという、大変厄介なモノです。
ひかり電話ありの場合
ひかり電話が利用できる状態の時だと、DHCPv6-PD+RAでフレッツ網からIPv6のアドレスを取得してきます。
その時、NTTのホームゲートウェイがprefix/56で受け取ります。
ホームゲートウェイ配下に設置しているRouterにはDHCPv6-PDで/60のprefixを配ってきます。
ひかり電話なしの場合
ひかり電話が利用できない状態の時だと、RAでフレッツ網からprefix/64のアドレスしかもらうことができません。
そのため、Routerを介したネットワークを組むことができなくなり、インターネット側とLAN側をL2で繋がないといけなくなります。
セキュリティとネットワーク構築の観点から、インターネット側とLAN側をIPv6のみL2接続するのはいかがなモノかと思うところがあります。
RouterBoardでの苦悩
さて、ここからが本題です。
ひかり電話が無い状態でどうRouterBoardを用いてIPv6ネットワークを構築するかです。
結果からお伝えします。”IPv6 PPPoE”を利用するです。
フレッツ光ネクスト特有のわけわからん仕様を海外製のRouterBoardが対応してるわけありませんから。
数日、RAが直接クライアントのマシンに届くように、インターネット側のポートもLAN側のbridgeに割り当てて、ごにょごにょしようとしましたが、PPPoEやDHCPの問題がでて諦めました。一応、RAはクライアントのマシンに届き、IPv6のインターネットはできましたよ。
これも、課題の一つですね。
某所で話題のscriptを配置しておきます。
自分はrOSの後ろでシェルを走らせ、これを走らせてたりします。
see U
———————————————————————————————————以下script
#!/bin/bash
eth=eth0
while :
do
ping -6 ff02::2 -c 3 >/dev/null
tcpdump -i $eth -x -t -n -l -c50>/dev/shm/ra
if cat /dev/shm/ra |grep -sq “router advertisement, length 56”; then
cat /dev/shm/ra |sed -n -e “/router advertisement, length 56/,/0x0050/p” >/dev/shm/ipv6
cat /dev/shm/ipv6|sed -e ‘1,2d’|sed -e ‘2,4d’|sed -n ‘1,2p’|sed -e “s/\t0x0010: //”|sed -e “s/\t0x0050: //”|sed -e “s/ /:/g”>/dev/shm/ra
busybox ifconfig $eth >/dev/shm/eth
cat /dev/shm/eth |grep Scope:Link|sed -e “s/ inet6 addr: fe80:://”|sed -e “s#/64 Scope:Link##” >> /dev/shm/ra
cat /dev/shm/ra |sed -n ‘1p’>/dev/shm/gw
cat /dev/shm/ra |sed -n ‘2p’>/dev/shm/address
cat /dev/shm/ra |sed -n ‘3p’>/dev/shm/mac
gw=`cat /dev/shm/gw`
address=`cat /dev/shm/address`
mac=`cat /dev/shm/mac`
gw=`echo $gw|cut -c 1-19`
address=`echo $address|cut -c 1-19`
gw=`echo route -A inet6 add default gw fe80::$gw dev $eth`
address=`echo busybox ifconfig $eth add $address:$mac/64`
eval $gw
eval $address
if ! echo “$address”|grep -sqE “0000:0000:”;then
break
fi
busybox ifconfig $eth down
busybox ifconfig $eth up
fi
if cat /dev/shm/ra |grep -sq “router advertisement, length 112”; then
cat /dev/shm/ra |sed -n -e “/router advertisement, length 112/,/0x0080/p” >/dev/shm/ipv6
cat /dev/shm/ipv6|sed -e ‘1,2d’|sed -e ‘2,7d’|sed -n ‘1,2p’|sed -e “s/\t0x0010: //”|sed -e “s/\t0x0080: //”|sed -e “s/ /:/g”>/dev/shm/ra
busybox ifconfig $eth >/dev/shm/eth
cat /dev/shm/eth |grep Scope:Link|sed -e “s/ inet6 addr: fe80:://”|sed -e “s#/64 Scope:Link##” >> /dev/shm/ra
cat /dev/shm/ra |sed -n ‘1p’>/dev/shm/gw
cat /dev/shm/ra |sed -n ‘2p’>/dev/shm/address
cat /dev/shm/ra |sed -n ‘3p’>/dev/shm/mac
gw=`cat /dev/shm/gw`
address=`cat /dev/shm/address`
mac=`cat /dev/shm/mac`
gw=`echo $gw|cut -c 1-19`
address=`echo $address|cut -c 21-39`
gw=`echo route -A inet6 add default gw fe80::$gw dev $eth`
address=`echo busybox ifconfig $eth add $address:$mac/64`
eval $gw
eval $address
if ! echo “$address”|grep -sqE “0000:0000:”;then
break
fi
busybox ifconfig $eth down
busybox ifconfig $eth up
fi
done
rm /dev/shm/gw /dev/shm/address /dev/shm/ipv6 /dev/shm/ra /dev/shm/eth /dev/shm/mac
情報ありがとうございます。
何かの機会に試してみたいと思います
個人的な所感ですが,nativeにIPv6をもってくるIPoEよりも
NGNを跨ぐためにPPPoEを使うという日本独自のPPPoEのほうが
IPv6の受け取り方としてはフレッツ独自では……
そうですよね。。。
ひかり電話の有無でアドレスの振り方を変えずに、DHCPv6でアドレス振って欲しいです。
すみません、通りすがりのOpenWrtを使ってるものです。
純粋に思ったのが、RouterBoardにRA, HDCPv6, NDPなどのリレーモードはないんでしょうか?
返信遅くなりました。
リレーとして動く機能は無さそうです(見聞きした記憶が無いです)。NGN網のやり方が世界的に見ても独特なのかもしれないです。
IPv6 PPPoEは、設備投資の観点から、普及することは無いと思われます。
確かに、日本独自の実装かもしれませんが、なんとか対応してもらいたいものです。