EdgeRouter XでNTTのDS-Lite

家の回線はNTTフレッツなんだけど、ふと使っているプロバイダからDS-Liteに対応したプランのお知らせが来た。DS-Liteと聞いてゲーム機の方を思い浮かべるくらいにIPv6初心者だったけど、いい機会だしやってみようと思ってIPv6始めてみた。家のルータはEdgeRouter Xにしていたのだけど、特に変わったことをしていなかったので何かやってみたかった。

結果としては、DS-LiteでのIPv4=>IPv6へのカプセル化はあっさりできてしまったものの、ルータ配下のデバイスにIPv6のアドレスを持たせて通信することには成功していない(そんな難しくないはずなのに。。。)。なので、デバイスからの見た目は依然IPv4しか使えないので何一つ変化していないのだが、よくある話でDS-Liteにするだけで帯域が10Mbpsくらいしかでなかったのが30Mbpsとかたまに80Mbpsとか出る様になって、まぁとりあえずはハッピー。もうちょっとIPv6に詳しくなったら、デバイスから直接IPv6できるように設定できるはず。。。

以下、備忘録。

DS-Liteとは?

Dual Stack Liteのことだそうで、IPv4とIPv6を両方使えるようにするための一方式。基本はIPv6にネイティブで接続するんだけど、IPv4のパケットはIPv6にカプセル化してISP側に送りつけるだけでよいので、設定は超簡単。PPPoEの方がよっぽどめんどくさい。終端装置?とやらを通らなくて済むので混雑しておらず同じIPv4を流しても高速になることがあるという話で、今のところ実際速くなった。

DS-Liteを使うために

NTTフレッツのv6オプションを有効にしないといけないが、プロバイダのDS-Liteプランの契約の時に一緒にやってくれた。楽ちん。

あとはDS-Liteに対応したルータを持っていればok。私はイバラの道をたどるためにあえてEdgeRouter Xで突撃。とはいえ丁度1.9.1のファームでipip6の対応が終わったところなのであっさりでしたが。

やってみた

これ以前の環境もシンプルな構成で、eth0がモデムに繋がってて、eth1-4とあわせてswitch0に入っているだけ。eth1にAirPortがbridgeモードで繋がってて、laptopとかはその下。あとはpppoe0でプロバイダのPPPoEの設定が入っていて、DHCPとかが動いてる。

プロバイダから設定完了の連絡が来たので、さっそくeth0にipv6の設定を入れてみた。

set interfaces ethernet eth0 ipv6 address autoconf

するとすぐにアドレスがやってきた。ひかり電話は契約していないので、IPv6の情報はRAとして/64のアドレスが割り振られるのだそうだ。確かに/64のアドレスが来ている。

もうこの時点でIPv6の通信はできる状態になっているのだが、PPPoEの時と違ってName Serverの情報が降ってこない模様で、結果名前解決ができない。RAだからなのかなぁ。。。よくわからないので、system設定にGoogle Public DNSを設定して解決させている。

set system name-server 2001:4860:4860:8888

これでIPv6の疎通が確認できる。

ping6 google.com
PING google.com(nrt20s02-in-x0e.1e100.net) 56 data bytes
64 bytes from nrt20s02-in-x0e.1e100.net: icmp_seq=1 ttl=55 time=7.19 ms
64 bytes from nrt20s02-in-x0e.1e100.net: icmp_seq=2 ttl=55 time=7.30 ms
64 bytes from nrt20s02-in-x0e.1e100.net: icmp_seq=3 ttl=55 time=7.28 ms

あとは、ここにIPv4を通すトンネルを作って、IPv4の通信は全てそこに流し込むだけ。local-ipにはeth0に降ってきたアドレスを指定すればよい。remote-ipはプロバイダから指定されているアドレスを指定するが、名前は使えないのでIPv6のアドレスを書く。

set interfaces ipv6-tunnel v6tun0 encapsulation ipip6
set interfaces ipv6-tunnel v6tun0 local-ip <eth0 global ipv6>
set interfaces ipv6-tunnel v6tun0 remote-ip <remote ipv6>

set protocols static interface-route 0.0.0.0/0 next-hop-interface v6tun0

以上。IPv4も疎通できることを確認。

ping google.com
PING google.com (172.217.26.14) 56(84) bytes of data.
64 bytes from nrt20s02-in-f14.1e100.net (172.217.26.14): icmp_req=1 ttl=57 time=7.13 ms
64 bytes from nrt20s02-in-f14.1e100.net (172.217.26.14): icmp_req=2 ttl=57 time=6.99 ms
64 bytes from nrt20s02-in-f14.1e100.net (172.217.26.14): icmp_req=3 ttl=57 time=6.73 ms

最後に、Firewallを忘れずにつけて完了。

課題

以上の設定だけだと、eth1のAirPortの先にいるデバイスにはIPv6が降ってこない。正確には、Macだと何も降ってこなくてWindowsだとアドレスは降ってくるもののDefault Gatewayが入らない。結果として、どちらもIPv6での疎通ができない。

これどこに問題があるのか全然切り分けできてなくて、AirPortの問題なのかも知れない(一応IPv6の設定でConfigureはAutomatically、Share IPv6Connectionにチェックを入れているが合ってるのかは分からない)。ethにデバイス直結して色々試した方がいいなと思いつつ、LANケーブル挿せるものが手元に無かった。

そもそも、RAとかDHCPv6やDHCPv6-PD等が全然良くわかってないので、一体どうなればIPv6が降ってきて疎通できるようになるのかさっぱり。ひかり電話契約してるとRAじゃなくてDHCPで降ってくるからやりやすいとかそういう話も見たり見なかったり。

あと、name-serverの問題もどうやったら解決するのか分かってない。

参考サイト

まとめ

というわけで、快適な回線速度が手に入った。EdgeRouter Xの操作もだいぶ自信が出てきたので(途中でIPv4で全く入れなくなってしまってリセットしたりした)、また思いついたら何かやってみたい。

IPv6を宅内に配る方法について、知見ある方いたらぜひアドバイスを下さい。。。答えが欲しいというより、何をみたらいいのかが知りたい。。。