IPv6とIPv4のマシンが通信をしたい事があるかもしれません。そのような場合は、IPv6とIPv4を変換するNATを定義する事によって通信を実現する事ができます。
コマンド一覧
このシナリオで重要なコマンド一覧は以下の通りです。
Router(config)# ipv6 nat prefix <ipv6_addr>/96 Router(config)# ipv6 nat v4v6 source <ipv4_real_addr> <ipv6_virtual_addr> Router(config)# ipv6 nat v6v4 source <ipv6_real_addr> <ipv4_virtual_addr> Router(config)# Router(config)# interface <interface> Router(config-if)# ipv6 nat
構成図
以下構成図のIPv4アドレス, IPv6アドレスを設定します。
s0/1 s1/2 s1/3 s0/1 +--------+.1 .3+--------+:3 :2+--------+ | R1 +----------+ R3 +----------+ R2 | +--------+ +--------+ +--------+ 155.1.13.0/24 2001:23::/64
[R1] interface Serial0/1 ip address 155.1.13.1 255.255.255.0 [R2] interface Serial0/1 ipv6 address 2001:23::2/64 [R3] interface Serial1/2 ip address 155.1.13.3 255.255.255.0 clock rate 64000 ! interface Serial1/3 ipv6 address 2001:23::3/64 clock rate 64000
設定全文は下記ファイルです。詳細設定は下記を参照ください。
仕様説明
NAT-PT有効化
以下のコマンドでNATを有効にするIPv6アドレス空間を定義します。なお、IPv6アドレス空間のサブネットマスクは/96のみがサポートされます。これは”IPv4が32bitの空間であるからIPv6ホストアドレスは32bit分で充分である”という考えに基づく仕様です。
Router(config)# ipv6 nat prefix <ipv6_addr>/96
以下のコマンドでNATを行うinterfaceを指定します。
Router(config)# interface <interface> Router(config-if)# ipv6 nat
アドレス変換
以下のコマンドでIPv4アドレス, IPv6アドレスの対応関係を定義する事ができます。
Router(config)# ipv6 nat v4v6 source <ipv4_real_addr> <ipv6_virtual_addr> Router(config)# ipv6 nat v6v4 source <ipv6_real_addr> <ipv4_virtual_addr>
IPv6 NAT-PT
設定投入 NAT-PT
IPv4アドレス, IPv6アドレス間の変換ルールを定義し、R1, R2が互いに疎通可能になるようにします。R2から見たR1(155.1.13.1)のアドレスが2000::9B01:0D01になるように定義し、R1から見たR2(2001:23::2)のアドレスが155.1.13.2になるように定義します。
[R3] interface Serial1/2 ipv6 nat ! interface Serial1/3 ipv6 nat ! ipv6 nat prefix 2000::/96 ipv6 nat v4v6 source 155.1.13.1 2000::9B01:0D01 ipv6 nat v6v4 source 2001:23::2 155.1.13.2
設定投入 routing
NAT-PTを有効にした2000::/96のprefixに対してルーティング可能なように設定します。2000::/96に対するstatic routeを定義しても差し支えありませんが、再配送を使用するとより簡単に設定する事ができます。
R3のIPv6ルーティングテーブルを表示させると、2000::/96に対してNVI0が作成されている事が分かります。
[R3] R3#show ipv6 route connected IPv6 Routing Table - 5 entries Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP U - Per-user Static route I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2 ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2 C 2000::/96 [0/0] via ::, NVI0 C 2001:23::/64 [0/0] via ::, Serial1/3 R3#
このNVI0を再配送する事で、static routeを定義せずにルーティングを定義する事ができます。
[R2] ipv6 unicast-routing ! interface Serial0/1 ipv6 rip RIPng enable [R3] ipv6 unicast-routing ! interface Serial1/3 ipv6 rip RIPng enable ! ipv6 router rip RIPng redistribute connected
動作確認
R1, R2が互いに疎通可能である事を確認します。
[R2] R2#telnet 2000::9B01:0D01 Trying 2000::9B01:D01 ... Open User Access Verification Password: R1>
この時のNATテーブルは以下の通りです。
[R3] R3#show ipv6 nat translations Prot IPv4 source IPv6 source IPv4 destination IPv6 destination --- --- --- 155.1.13.1 2000::9B01:D01 tcp 155.1.13.2,13095 2001:23::2,13095 155.1.13.1,23 2000::9B01:D01,23 --- 155.1.13.2 2001:23::2 155.1.13.1 2000::9B01:D01 --- 155.1.13.2 2001:23::2 --- --- R3#