IPoE(DS-Lite)環境におけるCisco IOS-XEの設定

これまでの日本におけるInternetブロードバンド回線といえばPPPoEというのが一般的でした。いわゆるFlet's網からNGNと呼ばれるIPv6をベースとした新しいネットワークへの移行が進み、現在ではIPoEと呼ばれるIPv4 over IPv6の仕組みがこれからのスタンダードになりつつあります。

私の自宅においてもこれまでのB-Flet'sでのPPPoE環境からNGNをベースとしたIPoEへと切り替えを行ったのですが、CPEであるCisco Routerのサンプルコンフィグの情報量が少なく、また必ずしも適切な設定では無いものも多く見受けられるので記事としてまとめておきたいと思います。

 

自宅のInternetアクセス環境について

私の自宅の環境はIIJmioのmioひかりを利用しています。
ひかり電話の契約は行なっていません。
今回の記事では深くは触れませんが、NGNにおいてひかり電話契約ありの場合と無しの場合ではIPv6アドレスの取得方法が異なるので注意が必要となります。

mioひかりのIPoEサービスはINTERNET MULTIFEED transixを利用したものでDS-Lite(Dual Stack Lite)の技術でIPv4通信を実現しています。

自宅に設置するCPE(B4)からINTERNET MULTIFEED内の終端装置(AFTR)までIPv6によるトンネルを張ってその中をIPv4で通すというものです。

DS-LiteにおいてはCPEIPv4のNAT変換は必要なく、transix側で行うので設定無用です。
しかし、このtransix側でのNAT変換というのがむしろ設定に大きく影響するのですがそれは後で解説します。



参考としたページ

下記リンクを参考にしてベースコンフィグを参考にしました。

www.mfeed.ad.jp

また、Cisco社のHPにも同様にサンプルコンフィグがあったのでこれもまた参考にしました。

community.cisco.com

 

機器に設定する前に

上記の2つの情報をベースに自分なりに設定をカスタマイズしておきます。
Cisco社の設定ではBDIインターフェースとTunnel(IPv4 over IPv6)インターフェースでNAT設定を行なっていますが、上記の通りtransix側でNAT(CGN)を行いますので設定不要です。

また、Tunnelインターフェース内に設定するIPアドレスISPから指定されるIPアドレスとありますが実際にはどのようなIPアドレスを設定しても全く問題ありません。

 

transixおよびCiscoのサンプルコンフィグ共にTunnelインターフェースは1つのみとなっていますが、transixからは冗長構成ということで2つの終端装置が提供されています。
もちろん1つのみの設定としても問題は無いといえば無いのですが、上記でも触れたtransix側でのNATの動作に影響するので、2つの終端装置ともにTunnelインターフェースを設定することを強くお勧めします。
このNATですが終端装置毎に1024Portが上限値となっており、家庭内に多くの端末が接続される(および通信量が多い)場合にはこの数値では不足することが考えられるからです。
実際に私の環境では簡単に上限値に達し、その場合にはtransix側からセッションが遮断されてしまいます。
NATに割り当てられたPort数が上限に達したので「ICMP Host Unreachable」が返ってくるということですね。
ググってみればこの1024という制限値は調べることが出来るのですが、そんなのNetwork(というかTCP/IP)に詳しい人でないと到底理解できるものではありません。
繰り返しとなりますが、私はその上限値を回避するためにTunnelインターフェースを2つ設定しECMP(Equal Cost Multi Path)によるロードバランスを行い1024から2048へと上限値を上げることにしたのです。

CiscoルーターCPEとしているので特に問題なくこのECMPの設定は出来るのですが、安価なブロードバンドルータを購入してしまった場合には、こういった設定が可能かどうかを事前に確認しておくことを強くお勧めします。

 

DS-Lite環境におけるMTU値について

先の記事においてPPPoE環境におけるMTU値について解説しましたが、DS-Lite環境においてもMTU値は1500BYTEから減少してしまいます。
IPv6ヘッダは40BYTEとなりますので、それを差し引いた1460BYTEがDS-Lite環境におけるMTU値となります。

また、CiscoルーターではTunnelインターフェースにてMSS値の書き換えも必要となるので注意が必要です。

 

サンプルコンフィグ(ひかり電話契約無し、RAによるIPv6アドレス取得)

ip name-server 8.8.8.8 8.8.4.4

!
/***** LAN側DHCP設定 *****/
ip dhcp excluded-address x.x.x.x x.x.x.x
!
ip dhcp pool DHCP
 network x.x.x.x 255.255.255.0
 default-router x.x.x.x 
 dns-server 8.8.8.8 
!
ipv6 unicast-routing
!
bridge-domain 100 
!
bridge irb
!
/***** IPv4 over IPv6設定 *****/
interface Tunnel1
 description /***** To:MF *****/
 ip address 192.168.0.2 255.255.255.252
 ip tcp adjust-mss 1420
 tunnel source BDI100
 tunnel mode ipv6
 tunnel destination 2404:8E00::FEED:100
 tunnel path-mtu-discovery
!
interface Tunnel2
 description /***** To:MF *****/
 ip address 192.168.0.10 255.255.255.252
 ip tcp adjust-mss 1420
 tunnel source BDI100
 tunnel mode ipv6
 tunnel destination 2404:8E00::FEED:101
 tunnel path-mtu-discovery
!
/***** WAN側Interface設定 *****/
interface GigabitEthernet0/0/0
 description /***** Internet *****/
 no ip address
 negotiation auto
 service instance 100 ethernet
  encapsulation untagged
  bridge-domain 100
!
/***** LAN側Interface設定 *****/        
interface GigabitEthernet0/0/1
 description /***** LAN *****/
 no ip address
 negotiation auto
 service instance 100 ethernet
  encapsulation untagged
  bridge-domain 100
!
/***** BDI Interface設定 *****/
interface BDI100
 ip address x.x.x.x 255.255.255.0
 ipv6 address autoconfig default
 ipv6 enable
!
/***** ECMP Static Route設定 *****/
ip route 0.0.0.0 0.0.0.0 Tunnel1
ip route 0.0.0.0 0.0.0.0 Tunnel2

まとめ

とりあえずはこの設定にて問題なくNGN網からIPv6アドレスの取得を行いDS-Liteによるtransixとの「IP4 over IPv6」通信が問題なく行えています。
NAT Port数を上限2048にまで上げることにより(少なくとも我が家では)、transixから切断されることも発生していません。
ただこの設定において問題があるのはIPv6においてはGi0/0/0とGi0/0/1の間でブリッジ接続となっており、Gi0/0/1配下のIPv6端末はInternetから筒抜けの状態になっているということです。
実際にInternet上からGi0/0/1配下の端末にPing6を打ってみると立派に(...)応答が帰ってきました。
これが気になる場合にはBDI設定ではなくGi0/0/0にてIPv6の設定を行うと良いでしょう。
この場合IPv6ネイティブでの通信は出来なくなり全てのInternetへの通信は全てIPv4となってしまうので悩ましい限りです。