まずは略語の整理から。
MAP-E=Mapping of Address and Port Encapsulation
PE=Provider Edge router(事業者側ルーター)
BR=Border Relay(事業者側のリレールーター)
CE=Customer Edge router(ユーザー所有のルーター)
CPE=Customer Premises Equipment(顧客構内設備:ユーザー所有のルーター)
PSID=Port Set ID
RA=Router Advertisement
DHCPv6-PD=DHCPv6 Prefix Delegation
テスト用なのでフィルターなどの設定は省いています。上手くいかなかった時に少しでも分かりやすいようできるだけ最小構成でテストを行い。RTX830 でv6プラスが問題無く使えることのを確認するというのが今回の趣旨です。尚、今回の config はひかり電話契約のある場合(HGW がある場合)のものです。
v6プラスでは付与される IPv6 アドレスのプレフィックス部分(前半 64bit)に依存して人によってそれぞれ設定値が異なります。残念ながら拾ってきた config を単純にコピーして流し込めばOKというわけにはいきません。最低限各自で IPv4アドレス、割り当てられたポート番号、CE の IPv6アドレスの計算を行う必要があります。(DS-Lite よりはかなり設定の敷居が上がってしまいます。)
ただ、とても分かりやすく解説して下さっているブログなどがあるので、以下のサイトを設定の参考にさせて頂きました。(感謝)
● IPIPトンネリングの設定例(Yamaha)
→IPv4 over IPv6 IPIPトンネル接続 日本ネットワークイネイブラー株式会社 v6プラス (固定IP)
● 風柳メモ
・v6プラス関連の覚え書き
● 疲労コンパイル
・v6用語の基礎知識
● ネトゲー回想録
・v6プラスのIPアドレス&ポートの計算方法
・v6プラス導入(NVR510)
● RFC 7597
・Mapping of Address and Port with Encapsulation (MAP-E)
ひかり電話契約があってHGW にフレッツジョイントで設定ソフトが配信されている場合は IPv4 アドレスと割り当てられたなポート番号については表示されているものを控えておくとかなり楽ができます。(自分で IPv6 プレフィックスから計算したものと一致しました。)ただし、HGW がv6プラスの CE として稼働している状態のままでは配下に他のルーターを繋いでもv6プラスの CE としては上手く機能しないみたいなので(重複してしまっている?)、確認を済ませた後はフレッツジョイントの管理画面から「IPv4の一時停止」をして HGW の CE としての機能を停止しておく必要があるようです。(うちはこれでうまく動くようになりました。)
自力で計算して設定する場合は前述の「疲労コンパイル」さんと「ネトゲー回想録」さんのブログがわかりやすいと思います。
PSID から自分に割り当てられたポートを計算する際には予め Excel を使って簡単な表を作っておき、「HEX2DEC 関数」を使って 16進数→10進数へ変換できるようにしてやると便利です。また、同様に IPv4 グローバルアドレスの下位 16ビットも同様にコロン(:)で区切られた IPv6 プレフィックスの 3番目のフィールドを 16進数→10進数へ変換すると分かります。(上位 16ビットはマップルールから。) CE の IPv6 アドレスを計算する際は逆に「DEC2HEX 関数」を使って IPv4 グローバルアドレスを 10進数から 16進数に変換してやります。
それでは Yamaha の設定例を元に「ネトゲー回想録」さんの NVR510 での例も参考にさせて頂いて接続テスト用の config を書いてみます。(これはひかり電話契約ありの場合です。)
【経路設定】 IPv4 は IPIP トンネルへ、IPv6 は直接 WAN へ。
ip route default gateway tunnel 1 ipv6 route default gateway dhcp lan2 ipv6 prefix 1 dhcp-prefix@lan2::/64
【LAN設定】
description lan1 LAN ip lan1 address 192.168.100.1/24 ipv6 lan1 address dhcp-prefix@lan2::1/64 ipv6 lan1 rtadv send 1 o_flag=on ipv6 lan1 dhcp service server
【NGNとの接続設定】
description lan2 WAN ipv6 lan2 address [CE IPv6アドレス]/64 ipv6 lan2 prefix change log on ipv6 lan2 dhcp service client ngn type lan2 ntt
【MAP-Eトンネルの設定】
※ BR IPv6アドレスは JPNE の場合は anycast で大坂と東京に BR が設置されているらしく、
『 2404:9200:225:100::64 』でいい模様。但し、今後変更があるかも知れない。
※ nat descriptor に関しては後述の方法で与えられた 240ポート全ての指定が可能。
とりあえず最小構成でのテストということで 1つだけを設定。
tunnel select 1 description tunnel MAP-E tunnel encapsulation ipip tunnel endpoint address [CE IPv6アドレス] [BR IPv6アドレス] ip tunnel nat descriptor 1000 ip tunnel tcp mss limit auto tunnel enable 1
【NAT設定】
※ RTX830 の IPマスカレードで利用できるポートレンジの指定は 1本あたり 4ブロックまで。
そのままでは 16ポートx4ブロック=64ポートしか指定できませんが、後述の方法で割り
当てられた 240ポート全ての指定が可能。
nat descriptor type 1000 masquerade nat descriptor address outer 1000 [MAP-E IPv4アドレス] nat descriptor address inner 1000 auto nat descriptor masquerade port range 1000 [MAP-Eポートレンジ①] [MAP-Eポートレンジ②] [MAP-Eポートレンジ③] [MAP-Eポートレンジ④] nat descriptor timer 1000 600 nat descriptor timer 1000 tcpfin 30
【DHCP関連の設定】
dhcp service server dhcp server rfc2131 compliant except remain-silent dhcp scope 1 192.168.100.10-192.168.100.191/24 dhcp client release linkdown on
【DNS関連の設定】
dns host lan1 dns service fallback on dns server dhcp lan2 dns server select 500000 dhcp lan2 any . dns private address spoof on
とりあえず上記の設定でv6プラスでの接続が可能かどうかを確認してみます。
http://hantei.janis.or.jp/ →HGW が存在している場合は特に試験 9・10 がOKになっていれ
ば大丈夫。IPv6・IPv4のアドレスが取得できていることも確認。
http://test-ipv6.com
http://ipv6-test.com
確認してみたところひとまず無事通信できているようでした。
Yamaha のコマンドリファレンスによると、Rev.14.01系以降の機種( RTX 1210・RTX830・NVR 510/700W)は『ポートセービングIPマスカレード』という機能に対応していて、IPマスカレード時に同一のポート番号を使用して複数の接続先とのセッションが確立できるようになっています。上の設定例では 64個しかポートの指定ができていませんが、この「ポートセービングIPマスカレード」の働きによってその 64個のポートに対して 1,000個以上のセッションを張れるのでこのままでも実用上はほぼ問題ないかとは思います。
ただ、上記のようにポートレンジの指定が 4つまでしか行えないことから利用可能なポートが最大 64個に制限されてしまうのではないかという点が Yamaha のルーターをv6プラスの環境で使う際の懸念事項とされていました。ところがこの 3月末頃に 5ch の掲示板で nat descriptor をポートレンジを変えて複数個設定することでこの問題を回避する方法を発見した方が居られました。つまり、16ポートx4ブロックの nat descriptor を 4本(最後は 3ブロック)設定することで割り当てられた 240ポート全ての指定ができるようになるというわけです。そこで上記 config に加えて以下の設定を追加してやります。
tunnel select 1 no ip tunnel nat descriptor 1000 ip tunnel nat descriptor 1000 1001 1002 1003
nat descriptor type 1001 masquerade nat descriptor address outer 1001 [MAP-E IPv4アドレス] nat descriptor address inner 1001 auto nat descriptor masquerade port range 1001 [MAP-Eポートレンジ⑤] [MAP-Eポートレンジ⑥] [MAP-Eポートレンジ⑦] [MAP-Eポートレンジ⑧] nat descriptor timer 1001 600 nat descriptor timer 1001 tcpfin 30 nat descriptor type 1002 masquerade nat descriptor address outer 1002 [MAP-E IPv4アドレス] nat descriptor address inner 1002 auto nat descriptor masquerade port range 1002 [MAP-Eポートレンジ⑨] [MAP-Eポートレンジ⑩] [MAP-Eポートレンジ⑪] [MAP-Eポートレンジ⑫] nat descriptor timer 1002 600 nat descriptor timer 1002 tcpfin 30 nat descriptor type 1003 masquerade nat descriptor address outer 1003 [MAP-E IPv4アドレス] nat descriptor address inner 1003 auto nat descriptor masquerade port range 1003 [MAP-Eポートレンジ⑬] [MAP-Eポートレンジ⑭] [MAP-Eポートレンジ⑮] nat descriptor timer 1003 600 nat descriptor timer 1003 tcpfin 30
上記の追加設定を施しておいてわざと一気にブラウザをたくさん立ち上げ、タブも複数開けていろいろなサイトへアクセスして試してみたところ以下のような感じになっていたのできちんと動作しているようです。ピーク時には最初の 64個のポートに 1,600ものセッションを張っていたようですね。
> show nat descriptor masquerade session summary NAT/IPマスカレード 動作タイプ : 2 Interface Desc Num Outer Address Current/Max Peak ------------------- ---------- --------------------------- ----------- ----- TUNNEL[1](1) 1000 ***.***.***.*** 399/65534 1631 TUNNEL[1](2) 1001 ***.***.***.*** 64/65534 76 TUNNEL[1](3) 1002 ***.***.***.*** 64/65534 64 TUNNEL[1](4) 1003 ***.***.***.*** 46/65534 48 ------------------- ---------- --------------------------- ----------- -----
また、「show nat descriptor address」コマンドでポート範囲の割り当て状況なども確認できます。
RTX1210 についてはつい先日ファームウェアのアップデートが行われて「14.01.26」となり、「nat descriptor masquerade port range」コマンドで設定できるポート範囲の個数が 16個に増えて 1行だけでv6プラスで割り当てられた全てのポートを指定できるようになっています。これによって上記のような手間を掛ける必要はなくなりました。同様のアップデートは RTX830 や NVR510・700W にも近いうちにあるだろうと思います(期待しています)が、いつになるかは分かりません。
とりあえず無事に RTX830 でv6プラスが問題無く動作することの確認は取れましたので、これを元に以下の設定とフィルターや機器のバインド指定など細々した設定を追加して常用することにしました。v6プラスの MTU 値は、「ping -f -l」コマンドを使って確認してみましたが DS-Lite と同じ「1460」で良いようですね。
security class 2 on off off console prompt "[RTX830] " login timer 600 ip routing process fast ipv6 routing process fast ip filter source-route on ip filter directed-broadcast on ipv6 lan2 mtu 1500 tunnel select 1 ip tunnel mtu 1460 schedule at 1 */* 01:00:00 * ntpdate ntp.nict.jp syslog syslog notice on
既に 1週間ほど使ってみていますが、今のところ DS-Lite を使っていた頃に発生していた夜間のピークタイム時に回線速度が大幅に落ち込んでいたような現象も起こっておらず、動画配信サービスの視聴やネットショッピングなども支障なく快適に利用することができています。手間と時間と費用を掛けた甲斐は十分にあったようでよかったです。