結論から言うと、これが勝利の鍵だ。
- Interface→lan→DHCP Server→IPv6 Settings
- RA-Service:server mode
- DHCPv6-Service:server mode
- NDP-Proxy: relay mode
Interface→wan6→DHCP Server→IPv6 Settings
- RA-Service:relay mode
- DHCPv6-Service:relay mode
- NDP-Proxy: relay mode
イメージとしては、LAN側ネットワークにはlanインターフェースによるDHCPを効かせる必要があって、lanインターフェースがIPv6プレフィックスをRAで取得するためにwan側はそれをスルーしなきゃいけないみたいな感じ。スルーするためにwan6インターフェースにもDHCPv6を設定する必要がある。
- 他の設定については末尾に。
- Interface→lan→DHCP Server→IPv6 Settings
顛末。自宅の回線はフレッツ光ネクスト・マンション・スーパーハイスピードタイプ隼で、最近IPv6 PPPoEがなんだか遅いのでいいかげんIPOEにしようと決意したのがきっかけだ。新しい接続は、インターリンクのZOOT NATIVE(IPv4共有型)。IPv4はDS-Liteで繋ぐ。
- 固定IPv4いっこつけると+1100円/月というのは安いとは思うんだが、いかんせん接続自体も1100円/月。倍になるというインパクトのある印象に耐えられず、固定IPはもらわないことにした。必要だったらDDNSが3ドルとかだからそれでよくない? と思ったんだけどよく考えたらDS-LiteだからDDNSも無理じゃん!w まー仕方なし。必要になったらプランを変更することにしよう。するとここ2週間の試行錯誤はほとんど無駄になるわけだが。
- 以前別の場所でほぼ同じ回線/プロバイダのネット接続環境をSBC*1/OpenWrt*2で構築したことがあるので、自宅に導入するのも楽勝だろうと思って同じように設定したら、DS-Liteは繋がるんだけど、LAN側のクライアントから外へのIPv6通信ができないという状態になってしまった。しかし奇妙なことに、OpenWrt自身からは外が見える。
- LAN側のIPv6を無効にするだけで実用上問題ないといえば問題ないんだけど、LAN側からIPv6を使いがちなもの、例えばAlpine Linuxのapk updateとかをやるにあたって設定とか変えるの面倒だし、IPv6を直接使えるならその方がオーバーヘッドもないんだよね…?
- というわけでここ2~3週間ずっとLAN内からIPv6開通のためにひたすら試行錯誤していた。なーんか友人たち(Gemini君とかGrok君とか)もあんまり頼りにならず、まずは「128bit空間で::で0の連続を省略」くらいしか知らなかったIPv6についてがっつり勉強したりね。
- とりあえず、IPv6のアドレスを全人類80億人に均等に配ったとすると、ひとり1844京✕2.8億個くらいのアドレスが使えることになるらしい。万・億・兆のさらに上があるらしいことを知ったばかりの小学生かな?
- そんでやっと繋がったので苦労の結晶であるところのインターフェース設定とDHCP設定を置いておく。ウェブに転がってる情報はIPv4固定IPプランのものばかりで、共用の設定については全く情報がなく、インターリンクの提供する市販ルータの設定を丹念に読み込んで推測するしかなかったりしたので…。いつか誰かの役に立ったら幸いである。利用は自己責任で。
インターフェース設定 /etc/config/network
config interface 'loopback'
option device 'lo'
option proto 'static'
option ipaddr '127.0.0.1'
option netmask '255.0.0.0'
config globals 'globals'
option packet_steering '1'
option ula_prefix 'fd00:XXX:XXX::/48'
config device
option name 'DEV_ETH0'
option macaddr 'XX:XX:XX:XX:XX:XX'
option mtu '1460'
config device
option name 'DEV_LAN'
option type 'bridge'
list ports 'DEV_ETH1'
config device
option name 'DEV_ETH1'
option macaddr 'XX:XX:XX:XX:XX:XX'
config interface 'lan'
option device 'DEV_LAN'
option proto 'static'
option ipaddr '192.168.XXX.XXX'
option netmask '255.255.255.0'
option ip6assign '60'
option metric '0'
option ip6ifaceid 'eui64'
config interface 'wan6'
option proto 'dhcpv6'
option device 'DEV_ETH0'
option reqaddress 'try'
option reqprefix '64'
option norelease '1'
option ipv6 'auto'
option extendprefix '1'
option ip6ifaceid 'eui64'
option ip6assign '64'
list ip6class 'local'
list ip6class 'wan6'
config interface 'ds'
option proto 'dslite'
option peeraddr 'gw.transix.jp'
option tunlink 'wan6'
option encaplimit 'ignore'
list dns '2001:4860:4860::8888'
option force_link '1'
option delegate '0'
option ip6assign '64'
option ip6ifaceid 'eui64'
config interface 'wan'
option proto 'dhcp'
option device 'DEV_ETH0'
DHCP設定 /etc/config/dhcp
config dnsmasq
option domainneeded '1'
option localise_queries '1'
option rebind_protection '1'
option rebind_localhost '1'
option local '/lan/'
option domain 'lan'
option expandhosts '1'
option cachesize '1000'
option readethers '1'
option leasefile '/tmp/dhcp.leases'
option resolvfile '/tmp/resolv.conf.d/resolv.conf.auto'
option localservice '1'
option ednspacket_max '1232'
option authoritative '1'
config odhcpd 'odhcpd'
option maindhcp '0'
option leasefile '/tmp/hosts/odhcpd'
option leasetrigger '/usr/sbin/odhcpd-update'
option loglevel '4'
option piofolder '/tmp/odhcpd-piofolder'
config dhcp 'wan'
option interface 'wan'
option master '1'
option ndp 'relay'
option ra 'relay'
option dhcpv6 'relay'
config dhcp 'lan'
option interface 'lan'
option start '100'
option limit '150'
option leasetime '12h'
option ndp 'relay'
option ra 'server'
option dhcpv6 'server'
option ra_default '1'
config dhcp 'wan4'
option interface 'wan4'
option ignore '1'
なお、公開すると問題がありそうなIPアドレスやMACアドレスやデバイス名などはXXXでマスクしたり抽象的な文字列に置き換えた。ちなみに2001:4860:4860::8888はGoogleが公開している誰でも自由に使ってよいグローバルDNS。
(12月2日追記)DS-LiteのインターフェースがIPv6アドレスを持っていなくても問題なくIPv4が使えるのだが、裏でエラーを吐いてることに気づいた。IPv6アドレスを持つようにしたので、その部分:dsインターフェースの下4行を追加した。
*1:SBC: シングルボードコンピュータ。具体的にはジェネリックRaspberry Piのたぐい。EthernetがWAN用とLAN用で2つついてる、いかにもルータにしてくださいというようなやつ。
*2:OpenWrt: ルータ特化の、いわゆる組み込みLinuxディストリビューション。FriendlyWrtはそのフォークで、NanoPiシリーズ専用みたいなやつ。