苦労に苦労を重ねた IPoE化ですが、少しずつ記録を残しておきます。
前提条件
IPoEとして利用できる条件が整っていることが条件ですね。ご存知でしょうけど。
- フレッツ光クロス、フレッツ光ネクスト、またはフレッツ光ライトなど NTT東日本・西日本のNGN回線引き込み済み
- 「フレッツ・v6オプション」契約済み
- DS-lite利用可能なIPoEプロバイダ(IIJ/Interlink/BB.Exceite/ぷららなど)に契約済み
なお、今すでにPPPoE
を使っている状況の利用でも問題なく設定できます。安心して設定してください。また、WAN側(我が家ではeth0)にIPv4のアドレスを振っておく必要はありません。振っててもいいです。好きにしてください。
この設定でできること
IPoE
でIPv4接続ができるようになります。IPv6通信はまだできません。
この図でいうとオレンジに囲われた「ココ」の部分を実現します。
IPv6アドレスの取得
まず、なにはともあれ IPv6アドレスを確認しましょう。以後の設定は、先程の図の通りWAN側をeth0
、LAN側はeth1
〜eth4
を束ねたswitch0
として扱います。また、すべてCLI
で実行します。Edgerouter
のOSであるEdgeMax
ではIPv6の設定が、GUIからはちょっとやりにくい(できないとは言っていない)ので、コピペですんで確実なCLIでの操作にしています。大丈夫、1日格闘すれば覚えます。
さて、ssh
でログインしたらば、次のコマンドを実行します。
configure
set interfaces ethernet eth0 ipv6 address autoconf
commit; exit
これで10分程待つと、IPv6アドレスが振られるはずです。我が家ではこんな感じです。show interfaces
コマンドを実行してみましょう。ここでeth0
にIPv6アドレスが振られていれば成功です。ひかり電話
がないので /64
でアドレスが振られています。このIPv6アドレスが重要ですので、コピペできるようにしておきましょう。
$ show interfaces
Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down
Interface IP Address S/L Description
--------- ---------- --- -----------
eth0 2409:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx/64
u/u Internet
eth1 - A/D disabled
eth2 - u/u Local
eth3 - u/u Local
eth4 - A/D disabled
lo 127.0.0.1/8 u/u
::1/128
switch0 xxx.xxx.xxx.xxx/24 u/u Local
次にIPv6のデフォルトゲートウェイを知ります。個人的には ip -6 route | grep default
のが分かりやすい気がしないでもないですが、VyOS
っぽく知るには、このパターンです。
$ show ipv6 route | grep '::/0'
K ::/0 [1/0] via fe80::xxxx:xxxx:xxxx, eth0, 01w4d14h
さて、設定としてはこれで終わらせても良いですが、Edgerouter の再起動時などにIPv6アドレスが付与されるまで 10分程度も待てない、ということであれば静的割当しておくことも一つの方法です。ただし、NTT局内工事などでIPv6アドレスの割り振りが変わる可能性もあります。普段はほぼほぼ再起動するようなこともないでしょうし、あまり気にしなくても良い気はしますが、それでも静的割当しておきたいという方は、次のようにします。
IPv6アドレスの静的割当 (やりたい方だけ)
まず、IPv6アドレスの自動割当を削除します。
configure
delete interfaces ethernet eth0 ipv6
commit; exit
次に、今割り当てられているIPv6アドレスを消し去ります(付与されたままだと、IPアドレスの静的割り当てができません)。
$ sudo ip addr flush dev eth0
※ IPv4アドレスを割り振ってると、それも一緒にここで吹き飛びますから気をつけてください
あとは、先程確認したIPv6アドレスとデフォルトゲートウェイアドレスと個々に割り当てます。
configure
set interfaces ethernet eth0 address '2409:****:****:****:****:****:****:****/64'
set protocols static route6 ::/0 next-hop 'fe80::xxxx:xxxx:xxxx' interface eth0
commit; exit
DS-lite 用の IPv4 over IPv6 トンネルの設定
ここで事前に知っておくべきは 2点。
- local-ip = Edgerouter eth0 に割り当てられた IPv6アドレス (/64不要)
- remote-ip = NTT東日本・西日本ごとに割り当てられたAFTRのIPv6アドレス (次表を参照のこと)
NTT東日本エリア | NTT西日本エリア |
---|---|
2404:8e00::feed:100 | 2404:8e01::feed:100 |
2404:8e00::feed:101 | 2404:8e01::feed:101 |
AFTRのアドレスは2つありますが、どちらか一方を指定すればよいです。
IPv6 トンネル最小限度の設定
configure
set interfaces ipv6-tunnel v6tun0 encapsulation ipip6
set interfaces ipv6-tunnel v6tun0 local-ip '2409:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx'
set interfaces ipv6-tunnel v6tun0 mtu 1452
set interfaces ipv6-tunnel v6tun0 multicast disable
set interfaces ipv6-tunnel v6tun0 remote-ip '2404:8e00::feed:101'
set interfaces ipv6-tunnel v6tun0 ttl 64
set protocols static interface-route 0.0.0.0/0 next-hop-interface v6tun0
commit; exit
以上で完了です。トンネル経由しているとは言え、まれにIPv4で攻められる時があるので(なんでや)、Firewall の設定をしておくことをオススメします。もし既に IPv4向けのFirewall設定をしていれば、それをそのまま再利用できます。今 eth0 に割り当てられているFireWallをv6tun0
に割り当てればそれで良しです。
PPPoEからの移行
ここまでで、DS-lite
の定義は完了です。こわがらずに PPPoE
の定義を削除しましょう。
configure
delete interfaces ethernet eth0 pppoe
commit; exit
これで、無事に切り替わるはずです。わたしは躊躇してこのPPPoE設定を外せずにいたため、ずーっとIPoE
に切り替えられずに1日悩みこみました。ホント、なんてこったい。
事の顛末は「せっかくのIPoE化もDS-liteの制限で台無しだったので、代替策を考えた」にありますので、こちらも気分転換にどうぞ。