6rdによるIPv6接続(Cisco編)
当ブログをご覧のみなさまこんにちは。さくらインターネット研究所の大久保です。
今回はCiscoの小型ルータCisco1812Jを用いて、6rdのCE(カスタマエッジ)ルータを設定する方法について説明します。
CiscoのIOSでは、バージョン15.1(3)Tより6rdがサポートされました。参考までにリリースノートのURLを以下にリンクします。 http://www.cisco.com/en/US/prod/collateral/iosswrel/ps8802/ps10587/ps10592/ps11296/product_bulletin_c25-635704.html
試験ネットワーク環境
前回(Linux編その2)とほぼ同様ですが、今回も以下のようなネットワークを試験的に構築して動作確認を行います。

6rd空間として2403:3a00::/32を割り当て、設置した6rd Border Relayにインターネットからルーティングされています。またIPv4ネットワークを介してCisco1812Jを接続し、その配下にユーザセグメントがぶら下がっています。ユーザセグメントには、通信テスト用にFreeBSDのマシンを1台設置し、Cisco1812J経由でIPv6インターネットに接続できるか確認します。
アドレスフォーマットは下記のようになります。
6rdプレフィックス | 2403:3a00::/32 |
IPv4プレフィックス | 61.211.0.0/16 下位16bitのみをIPv6アドレスに埋め込む |
Border Relayアドレス | 61.211.224.125 |
委譲空間 | /48 (32+16) |
61.211.224.118のIPv4アドレスが設定されたCisco1812Jでは、下位16bit(224.118)を6rdプレフィックス(2403:3a00::/32)に埋め込んだ2403:3a00:e076::/48のIPv6アドレス空間を使用することができます。ユーザセグメントでは、この範囲のアドレスを自由に使用可能ですが、ここでは、2403:3a00:e076:cafe::/64を使用します。
Cisco1812Jの設定
Cisco1812JをIPv4ネットワークとユーザセグメントに接続し設定を行います。主に6rdに関連する設定を以下に抜粋します。
ipv6 unicast-routing --(1)
interface Tunnel0
no ip address
no ip redirects
ipv6 unnumbered FastEthernet1 --(2)
ipv6 mtu 1280
tunnel source FastEthernet0 --(3)
tunnel mode ipv6ip 6rd
tunnel 6rd ipv4 prefix-len 16 --(4)
tunnel 6rd prefix 2403:3A00::/32
tunnel 6rd br 61.211.224.125 --(5)
interface FastEthernet0
ip address 61.211.224.118 255.255.255.224
interface FastEthernet1
ipv6 address 2403:3A00:E076:CAFE::1/64
ip route 0.0.0.0 0.0.0.0 61.211.224.97
ipv6 route 2403:3A00::/32 Tunnel0 --(6)
ipv6 route ::/0 2403:3A00:E07D:: --(7)
設定の説明は以下の通りです。
- ipv6 unicast-routing
IPv6によるルーティングを有効にします。
- ipv6 unnumbered FastEthernet1
Cisco1812J自身から行う通信のソースIPv6アドレスは、ユーザセグメントのインターフェイス(fa1)のアドレスを使用します。
- tunnel source FastEthernet0
6rdで通信するためのトンネル終端IPv4アドレスは、FastEthernet0のもの(61.211.224.118)を使用します。
- tunnel 6rd ipv4 prefix-len 16
IPv4アドレスの下位16bitのみをIPv6アドレスに埋め込みます。IPv4プレフィックス(61.211.0.0/16)は、(3)の情報と併せて自動的に算出されます。この設定を行わない場合、デフォルトでIPv4アドレス全て(32bit)をIPv6に埋め込む動作となります。
- tunnel 6rd br 61.211.224.125
Ciscoの6rdの実装では、トンネルされたパケットを受信した際に、カプセルされているIPv6パケットのソースアドレスが、IPv4ソースアドレスと矛盾ないかセキュリティチェックを行います。しかし、6rd Border Relayからはインターネットからのパケットを受信しますので、そのままではセキュリティチェックに引っ掛かり、インターネットとの通信ができません。そこで、Border RelayのIPv4アドレスをこのコマンドで指定し、そこからのトンネルパケットはセキュリティチェックをバイパスさせます。
- ipv6 route 2403:3A00::/32 Tunnel0
6rdプレフィックスの経路が6rdトンネルインターフェイスに向くように設定しています。
- ipv6 route ::/0 2403:3A00:E07D::
IPv6デフォルトゲートウェイを6rd Border Relayに向けています。
動作確認
設定を行った後、きちんと反映されているかどうか、まずは以下のコマンドで確認します。
cisco1812j-6rd#show tunnel 6rd
Interface Tunnel0:
Tunnel Source: 61.211.224.118
6RD: Operational, V6 Prefix: 2403:3A00::/32
V4 Prefix, Length: 16, Value: 61.211.0.0
V4 Suffix, Length: 0, Value: 0.0.0.0
Border Relay address: 61.211.224.125
General Prefix: 2403:3A00:E076::/48
青文字の部分に誤りがないか確認します。なお、General Prefixは、自身で使用可能なIPv6アドレス空間が自動的に計算されて表示されます。
続いてルーティングテーブルを確認します。6rdに関する経路を青文字で以下示します。
cisco1812j-6rd#show ipv6 route
IPv6 Routing Table - default - 5 entries
Codes: C - Connected, L - Local, S - Static, U - Per-user Static route
B - BGP, HA - Home Agent, MR - Mobile Router, R - RIP
D - EIGRP, EX - EIGRP external, NM - NEMO, ND - Neighbor Discovery
O - OSPF Intra, OI - OSPF Inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2
ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2
S ::/0 [1/0]
via 2403:3A00:E07D::
S 2403:3A00::/32 [1/0]
via Tunnel0, directly connected
C 2403:3A00:E076:CAFE::/64 [0/0]
via FastEthernet1, directly connected
L 2403:3A00:E076:CAFE::1/128 [0/0]
via FastEthernet1, receive
L FF00::/8 [0/0]
via Null0, receive
通信テスト
まずはCisco1812Jから通信できるか確認します。
- Cisco1812J→6rd Border Relay
cisco1812j-6rd#ping ipv6 2403:3a00:e07d::1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2403:3A00:E07D::1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 0/0/0 ms - Cisco1812J→IPv6インターネット向け
cisco1812j-6rd#ping ipv6 www.iij.ad.jp
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2001:240:BB42:B000::1:80, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 0/2/4 ms
問題なく通信できていることがわかります。続いて、ユーザセグメントから通信できるか確認します。
- FreeBSD→Cisco1812J
freebsd81-6# ping6 2403:3a00:e076:cafe::1
PING6(56=40+8+8 bytes) 2403:3a00:e076:cafe::2 --> 2403:3a00:e076:cafe::1
16 bytes from 2403:3a00:e076:cafe::1, icmp_seq=0 hlim=64 time=0.949 ms
16 bytes from 2403:3a00:e076:cafe::1, icmp_seq=1 hlim=64 time=0.793 ms - FreeBSD→6rd Border Relay
freebsd81-6# ping6 2403:3a00:e07d::1
PING6(56=40+8+8 bytes) 2403:3a00:e076:cafe::2 --> 2403:3a00:e07d::1
16 bytes from 2403:3a00:e07d::1, icmp_seq=0 hlim=63 time=1.095 ms
16 bytes from 2403:3a00:e07d::1, icmp_seq=1 hlim=63 time=1.066 ms - FreeBSD→IPv6インターネット向け
freebsd81-6# ping6 www.iij.ad.jp
PING6(56=40+8+8 bytes) 2403:3a00:e076:cafe::2 --> 2001:240:bb42:b000::1:80
16 bytes from 2001:240:bb42:b000::1:80, icmp_seq=0 hlim=54 time=3.317 ms
16 bytes from 2001:240:bb42:b000::1:80, icmp_seq=1 hlim=54 time=2.700 ms
freebsd81-6# traceroute6 www.iij.ad.jp
traceroute6 to www.iij.ad.jp (2001:240:bb42:b000::1:80) from 2403:3a00:e076:cafe::2, 64 hops max, 12 byte packets
1 2403:3a00:e076:cafe::1 0.809 ms 0.806 ms 0.649 ms
2 2403:3a00:e07d::1 1.041 ms 1.101 ms 0.908 ms
3 2001:e40:100:215::1 17.042 ms 1.939 ms 1.790 ms
4 2001:e40:100:133::1 1.621 ms 1.682 ms 1.612 ms
5 2001:240:bb41:1015::edfa 1.812 ms 1.814 ms 1.492 ms
6 tky001ipgw10.IIJ.Net 1.659 ms 1.814 ms 1.570 ms
7 2001:240:bb01:17::7e 1.537 ms 1.618 ms 1.482 ms
8 tky001bf01.IIJ.Net 1.622 ms 1.649 ms 1.964 ms
9 tky008bb00.IIJ.Net 2.203 ms 2.178 ms 2.171 ms
10 2001:240:bb02:a::29 2.271 ms 2.368 ms 3.209 ms
11 2001:240:bb42:b000::1:80 2.049 ms 2.140 ms 2.035 ms
1ホップ目がCisco1812Jで、2ホップ目が6rd Border Relayです。また、3ホップ目以降、IPv6インターネットに抜けていることがわかります。
まとめ
以上の通り、Ciscoの小型ルータを用いて6rdのCEを構成できることがわかりました。6rdの使えるIPv4グローバルアドレスがあれば、どこでも簡単にIPv6セグメントを作ることができるようになります。
これまで6rdクライアントの設定を主に説明してきましたので、次回は6rd Border Relayの設定を紹介したいと思います。