はじめに
1~2年ほど個人的にIPv6にハマった時期がありました。IPv6を学び始めた時のIPv4と異なった仕様は難解ではありましたがとても新鮮で面白く、自分の家でもIPv6のグローバルプレフィックスが欲しいと思ったわけです。
私の家にはeo光の回線が引かれています。eo光もIPv6には対応しています。しかし、ネットで出てくる大半の接続設定は困ったことにNTT回線向けのものしか大体出てこない。出てきてもCiscoルータでのやり方は書いていない。なので書いておこうかと思ったわけです。
IPv6接続形態:NTTとeo光の違い
まずNTTとeo光のIPv6方式の違いについて解説しておこうかと思います。
簡単に言えば
・接続形態の違い(IPv6でPPPoEを使う・使わない)
・PPPoEを使う場合の方式の違い(IPv6のためのセッションを別で張るか、IPv4とIPv6を1つのセッションで通信できるようにするか)
この2点に尽きます。
WAN回線においてIPv6通信を行う方法の一つとして、IPoE接続方式があります。IPoE接続方式では、PPPoEの設定が不要で単にDHCPv6-PDクライアントをWANインターフェースで動かすだけでプレフィックスが振られ通信できるようになります。LANとほとんど変わらないような方式です。
しかしIPoE接続方式は主にNTT回線を利用するISPだけが対応していることがほとんどで、eo光では対応していません(回線認証を行う仕組みがないのでしょうか)。そのためeo光ではIPv6で通信する場合でも昔ながらのPPPoEを利用する必要があるのです。
またPPPoEでIPv6通信を行う際、IPv6通信のためのPPPoEセッションを別で張るマルチセッション方式と、IPv4とIPv6を1つのPPPoEセッションで通信できるようにするシングルセッション方式があります*。
OCNなど一部の対応するISPでは前者の方式を、eo光では後者の方式を採用しており、eo光公式サイトではこの方式を「PPPoEによるデュアルスタック方式」と呼んでいます。
残念ながら今回用いるこのシングルセッション方式に市販のルータはほとんど対応していないため、専用のルータを使えというのが公式の言い分です。
しかし、CiscoのルータやNEC UNIVERGE、Yamaha RTXといった逸般的なルータならこの方式でも対応していますので、専用のルータなんか使わなくてもできちゃうわけです。
*PPPのプロトコルに注目して話をすれば、マルチセッション方式ではNCPのIPCPとIPv6CPはそれぞれ個別のPPPoEセッションにおいて動かされますが、シングルセッション方式ではこの2つを同じセッションで動かすということになります。
シナリオ
自宅からPPPoE経由のIPv6インターネット接続を提供するISP回線を利用し、IPv6通信を行えるように設定する。
ISPはシングルセッションのPPPoE接続においてIPv4とIPv6の接続性を提供する。PPPoE接続完了後、DHCPv6-PDクライアントを動作させ、グローバルIPv6プレフィックスを要求する。
プレフィックス取得後、Vlan10インターフェースにグローバルIPv6アドレスを設定し、Vlan10内のノードに対しグローバルIPv6プレフィックスをRAにより広告する。VLAN10内のノードはRAを受け取ることにより、SLAACによりグローバルIPv6アドレス、デフォルトゲートウェイを設定する。
IPv6 DNSサーバの設定はRDNSSにより行うものとする。
設定パラメータ
項目 | 値 |
---|---|
WAN側インターフェース | GigabitEthernet8 |
PPPoEユーザ名 | pppoe-user |
PPPoEパスワード | pppoe-pass |
PPPoE認証方式 | CHAP |
DHCPv6-PD取得プレフィックス名 | wan-prefix |
Vlan10 グローバルIPv6アドレス | (wan-prefix)::1/64 |
Vlan10 RA lifetime | 3600秒(1時間) |
Vlan10 RAインターバル | 180秒 |
(RDNSS)IPv6 DNSサーバ | 2606:4700:4700::1111(Cloudflare) |
wan-prefixにDHCPv6-PDで取得したプレフィックスが結びつきます。eo光では/64のプレフィックスが降ってきます。
例:取得したプレフィックスが2001:db8:1111:2222::/64なら、Vlan10のグローバルIPv6アドレスは2001:db8:1111:2222::1/64となります。
Config例
注意:
・ファイアウォール設定は省いています。ACLやCBAC、ZBFWを利用して別途ファイアウォール設定を行ってください。eo光ではプロバイダ側でのIPv6フィルタは一切行われていません。
・RDNSSはソフトウェアバージョンが古いと対応していません(15.4(1)T, 15.3(2)Sで対応とのこと)。
・当たり前かもしれませんが、HGW(eo光では多機能ルータ)のルータ機能は使わないでください。
ip cef ipv6 unicast-routing ipv6 cef ! interface GigabitEthernet8 no ip address duplex auto speed auto no cdp enable ipv6 enable pppoe enable group global pppoe-client dial-pool-number 1 no lldp transmit no lldp receive ! interface Dialer1 mtu 1454 ip address negotiated no ip unreachables ip nat outside ip virtual-reassembly in encapsulation ppp dialer pool 1 dialer-group 1 no cdp enable ipv6 enable ipv6 mtu 1454 no ipv6 unreachables ipv6 dhcp client pd wan-prefix rapid-commit ppp authentication chap callin ppp chap hostname pppoe-user ppp chap password 0 pppoe-pass ppp ipcp dns request accept ppp ipcp route default ! interface Vlan10 ip address 192.168.10.1 255.255.255.0 ip nat inside ipv6 address wan-prefix ::1/64 ipv6 enable ipv6 nd ra lifetime 3600 ipv6 nd ra interval 180 ipv6 nd ra dns server 2606:4700:4700::1111 ipv6 tcp adjust-mss 1394 ! access-list 1 permit 192.168.10.0 0.0.0.255 !NAT対象の通信のACL ip nat inside source list 1 interface Dialer1 overload dialer-list 1 protocol ip permit dialer-list 1 protocol ipv6 permit (ip route 0.0.0.0 0.0.0.0 Dialer1) ! ppp ipcp route defaultを利用しているので要らないはず ipv6 route ::/0 Dialer1
設定が完了したら保存して一旦reloadすることをお勧めします。
解説と補足
PPPのNCPにはIPCPとIPv6CPがありますが、IPCPにはIPアドレスを割り振る機能やDNSサーバのIPアドレスを通知する機能があるのに対し、IPv6CPにはその機能がありませんのでDHCPv6-PDクライアントを用います。
接続状況は、DialerインターフェースやVirtual-Accessインターフェースの状態、show ppp all、show pppoe session、ログ、891FJを利用していればPPPランプで確認して下さい。
ちなみに現在はIX2215を使ってますが891FJより相性が良いような感じがします。891FJでは若干PPPoE接続に時間がかかったり、原因はよくわかりませんが接続してから数分後に一旦PPPoEが切れることがありました。(ちなみにプロバイダ側のBASはJuniperです)
(4/30追記)UNIVERGEはPPPoEのセッションが不完全な状態で切れていることを検出すると、PADTを送ってその不完全な状態のセッションを落とすという機能があるようです。相性がよいと感じたのはそのためでした。とてもいい機能だと思います。