Cisco IOS IPv6 – IPv6 Tunnelの設定

スポンサーリンク

IPv6環境への移行するのにあたり、全ての機器がIPv6をサポートしているとは限りません。もし、IPv4のみをサポートする機器を経由したいならば、IPv6パケットをIPv4でカプセル化して通信を実現します。

概要

IPv6 tunnelについてまとめます。IPv6 tunnelとは、IPv6に対応していない区間についてIPv6パケットをIPv4でカプセル化することで疎通可能にする技術です。

Ciscoルータが対応している代表的なIPv6 tunnelの実装は以下の通りです。

設定コマンド 説明
tunnel mode gre (省略可) GREによるカプセル化を行います。
tunnel mode ipv6ip IPv6パケットをIPv4で直接カプセル化します。
GRE headerがないのでGREよりもオーバーヘッドが少なくなります。
tunnel mode ipv6ip auto-tunnel 非推奨
tunnel mode ipv6ip 6to4 2002::/16 prefixを使用します。
17bitから48bitまではIPv4アドレスと紐づきます。
tunnel mode ipv6ip isatap 下位64bitのアドレスがIPv4アドレスと紐づきます。

コマンド一覧

このシナリオで重要なコマンド一覧は以下の通りです。

Router(config)# interface tunnel <num>
Router(config-if)# tunnel source <interface>
Router(config-if)# tunnel destination <dst_ip>
Router(config-if)# ipv6 address <ipv6_addr>
Router(config-if)# tunnel mode ipv6ip
Router(config-if)# tunnel mode ipv6ip 6to4
Router(config-if)# tunnel mode ipv6ip isatap

構成図

以下の環境にて動作確認を行います。

                               e0/0      e0/1
                               .2+--------+::2
                           ┌----+   R2   +--
           e0/1      e0/0  │    +--------+
          ::1+--------+.1  │        2001:CC1E:1:2::/64 
         ----+   R1   +----┤
             +--------+    │
 2001:CC1E:1:1::/64        │  e0/0      e0/1
                           │  .3+--------+::3
                           └----+   R3   +--
                192.168.123.0/24 +--------+
                                     2001:CC1E:1:3::/64 
                                                        
        R1 Loopback0     R2 Loopback0     R3 Loopback0  
        10.1.1.1/32      10.2.2.2/32      10.3.3.3/32   
 [R1]
ipv6 unicast-routing
!
interface Loopback0
 ip address 10.1.1.1 255.255.255.255
!
interface Ethernet0/0
 ip address 192.168.123.1 255.255.255.0
!
interface Ethernet0/1
 no ip address
 ipv6 address 2001:CC1E:1:1::1/64
 no keepalive
!
router ospf 1
 network 10.1.1.1 0.0.0.0 area 0
 network 192.168.123.1 0.0.0.0 area 0

 [R2]
ipv6 unicast-routing
!
interface Loopback0
 ip address 10.2.2.2 255.255.255.255
!
interface Ethernet0/0
 ip address 192.168.123.2 255.255.255.0
!
interface Ethernet0/1
 no ip address
 ipv6 address 2001:CC1E:1:2::2/64
 no keepalive
!
router ospf 1
 network 10.2.2.2 0.0.0.0 area 0
 network 192.168.123.2 0.0.0.0 area 0

 [R3]
ipv6 unicast-routing
!
interface Loopback0
 ip address 10.3.3.3 255.255.255.255
!
interface Ethernet0/0
 ip address 192.168.123.3 255.255.255.0
!
interface Ethernet0/1
 no ip address
 ipv6 address 2001:CC1E:1:3::3/64
 no keepalive
!
router ospf 1
 network 10.3.3.3 0.0.0.0 area 0
 network 192.168.123.3 0.0.0.0 area 0

設定全文は下記ファイルです。詳細設定は下記を参照ください。

R1
!
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname R1
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
memory-size iomem 5
!
!
ip cef
!
!
ipv6 unicast-routing
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
interface Loopback0
 ip address 10.1.1.1 255.255.255.255
!
interface Ethernet0/0
 ip address 192.168.123.1 255.255.255.0
 half-duplex
!
interface Ethernet0/1
 no ip address
 half-duplex
 ipv6 address 2001:CC1E:1:1::1/64
 no keepalive
!
interface Ethernet0/2
 no ip address
 shutdown
 half-duplex
!
interface Ethernet0/3
 no ip address
 shutdown
 half-duplex
!
!
router ospf 1
 log-adjacency-changes
 network 10.1.1.1 0.0.0.0 area 0
 network 192.168.123.1 0.0.0.0 area 0
!
ip http server
ip forward-protocol nd
!
!
!
!
!
!
control-plane
!
!
!
!
mgcp behavior g729-variants static-pt
!
!
!
!
!
line con 0
line aux 0
line vty 0 4
 login
!
!
end
R2
!
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname R2
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
memory-size iomem 5
!
!
ip cef
!
!
ipv6 unicast-routing
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
interface Loopback0
 ip address 10.2.2.2 255.255.255.255
!
interface Ethernet0/0
 ip address 192.168.123.2 255.255.255.0
 half-duplex
!
interface Ethernet0/1
 no ip address
 half-duplex
 ipv6 address 2001:CC1E:1:2::2/64
 no keepalive
!
interface Ethernet0/2
 no ip address
 shutdown
 half-duplex
!
interface Ethernet0/3
 no ip address
 shutdown
 half-duplex
!
!
router ospf 1
 log-adjacency-changes
 network 10.2.2.2 0.0.0.0 area 0
 network 192.168.123.2 0.0.0.0 area 0
!
ip http server
ip forward-protocol nd
!
!
!
!
!
!
control-plane
!
!
!
!
mgcp behavior g729-variants static-pt
!
!
!
!
!
line con 0
line aux 0
line vty 0 4
 login
!
!
end
R3
!
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname R3
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
memory-size iomem 5
!
!
ip cef
!
!
ipv6 unicast-routing
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
interface Loopback0
 ip address 10.3.3.3 255.255.255.255
!
interface Ethernet0/0
 ip address 192.168.123.3 255.255.255.0
 half-duplex
!
interface Ethernet0/1
 no ip address
 half-duplex
 ipv6 address 2001:CC1E:1:3::3/64
 no keepalive
!
interface Ethernet0/2
 no ip address
 shutdown
 half-duplex
!
interface Ethernet0/3
 no ip address
 shutdown
 half-duplex
!
!
router ospf 1
 log-adjacency-changes
 network 10.3.3.3 0.0.0.0 area 0
 network 192.168.123.3 0.0.0.0 area 0
!
ip http server
ip forward-protocol nd
!
!
!
!
!
!
control-plane
!
!
!
!
mgcp behavior g729-variants static-pt
!
!
!
!
!
line con 0
line aux 0
line vty 0 4
 login
!
!
end

仕様説明

GRE tunnel

GRE tuunelによるカプセル化設定は以下の通りです。GRE tunnelを作成し、tunnel interfaceに対してIPv6 addressを割り当てます。

Router(config)# interface tunnel <num>
Router(config-if)# tunnel source <interface>
Router(config-if)# tunnel destination <dst_ip>
Router(config-if)# ipv6 address <ipv6_addr>

ipv6ip tunnel

ipv6ip tuunelによるカプセル化設定は以下の通りです。GREの設定と異なり、”tunnel mode ipv6ip”と指定して下さい。

Router(config)# interface tunnel <num>
Router(config-if)# tunnel source <interface>
Router(config-if)# tunnel destination <dst_ip>
Router(config-if)# ipv6 address <ipv6_addr>
Router(config-if)# tunnel mode ipv6ip

isatap tunnel

“tunnel mode ipv6ip isatap”と指定して下さい。また、IPv6アドレスはEUI-64形式で指定します。末尾64bitがIPv4アドレスと紐付けられます。

例えば、2001:CC1E:0123:0000:0000:5EFE:C0A8:0101ならば、末尾C0A80101を10進数に変換すると192.168.1.1なので、tunnel destinationは192.168.1.1になります。

Router(config)# interface tunnel <num>
Router(config-if)# tunnel source <interface>
Router(config-if)# tunnel destination <dst_ip>
Router(config-if)# ipv6 address <ipv6_addr>/64 eui-64
Router(config-if)# tunnel mode isatap

6to4 tunnel

“tunnel mode ipv6ip 6to4″と指定して下さい。また、IPv6アドレスはIPv4アドレスと紐付ける必要があります。

Router(config)# interface tunnel <num>
Router(config-if)# tunnel source <interface>
Router(config-if)# tunnel destination <dst_ip>
Router(config-if)# ipv6 address <ipv6_addr>
Router(config-if)# tunnel mode 6to4

6to4は2002::/16のアドレス帯域を使用します。アドレス体系は以下の通りです。例えば、tunnelの送信元が172.16.1.1であるとします。その場合は、172.16.1.1を16進数に変換したAC10:101を使い、2002:AC10:101:X::Yのようなアドレスを設定して下さい。

 +------+--------------+-----------+--------------------------------+
 | 2002 | IPv4 Address | Subnet ID |          Interface ID          |
 +------+--------------+-----------+--------------------------------+
  <----> <------------> <---------> <------------------------------>
  16 bit     32 bit       16 bit                 64 bit

GRE tunnel

設定投入

R1, R2間でGREによるIPv6 tunnelを作成します。また、ルーティング可能になるようOSPFv3も設定します。

 [R1]
interface Tunnel12
 tunnel source Loopback0
 tunnel destination 10.2.2.2
 ipv6 address 2001:CC1E:1:12::1/64
 ipv6 ospf 1 area 0
!
interface Ethernet0/1
 ipv6 ospf 1 area 0

 [R2]
interface Tunnel12
 tunnel source Loopback0
 tunnel destination 10.1.1.1
 ipv6 address 2001:CC1E:1:12::2/64
 ipv6 ospf 1 area 0
!
interface Ethernet0/1
 ipv6 ospf 1 area 0

疎通確認

R1, R2間で疎通可能である事を確認します。

 [R1]
R1#ping 2001:CC1E:1:2::2 source Ethernet 0/1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2001:CC1E:1:2::2, timeout is 2 seconds:
Packet sent with a source address of 2001:CC1E:1:1::1
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 16/33/72 ms
R1#

パケット観察

上記pingをキャプチャした結果は以下の通りです。IPv6パケットがGREによりカプセル化されている事が分かります。

Frame 4: 138 bytes on wire (1104 bits), 138 bytes captured (1104 bits)
Ethernet II, Src: cc:00:15:9c:00:00 (cc:00:15:9c:00:00), Dst: cc:01:15:9c:00:00 (cc:01:15:9c:00:00)
Internet Protocol Version 4, Src: 10.1.1.1 (10.1.1.1), Dst: 10.2.2.2 (10.2.2.2)
Generic Routing Encapsulation (IPv6)
Internet Protocol Version 6, Src: 2001:cc1e:1:1::1 (2001:cc1e:1:1::1), Dst: 2001:cc1e:1:2::2 (2001:cc1e:1:2::2)
Internet Control Message Protocol v6

ipv6ip tunnel

設定投入

R1, R2間でipv6ipによるIPv6 tunnelを作成します。先程のGREとの違いは”tunnel mode ipv6ip”のみです。

 [R1]
interface Tunnel12
 tunnel source Loopback0
 tunnel destination 10.2.2.2
 tunnel mode ipv6ip
 ipv6 address 2001:CC1E:1:12::1/64
 ipv6 ospf 1 area 0
!
interface Ethernet0/1
 ipv6 ospf 1 area 0

 [R2]
interface Tunnel12
 tunnel source Loopback0
 tunnel destination 10.1.1.1
 tunnel mode ipv6ip
 ipv6 address 2001:CC1E:1:12::2/64
 ipv6 ospf 1 area 0
!
interface Ethernet0/1
 ipv6 ospf 1 area 0

疎通確認

R1, R2間で疎通可能である事を確認します。

 [R1]
R1#ping 2001:CC1E:1:2::2 source Ethernet 0/1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2001:CC1E:1:2::2, timeout is 2 seconds:
Packet sent with a source address of 2001:CC1E:1:1::1
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 16/33/72 ms
R1#

パケット観察

上記pingをキャプチャした結果は以下の通りです。GRE tunnelと異なりGRE headerが存在しない事が読み取れます。ipv6ip tunnelはGRE tunnelよりもオーバーヘッドが少ないプロトコルと言えます。

Frame 5: 134 bytes on wire (1072 bits), 134 bytes captured (1072 bits)
Ethernet II, Src: cc:00:15:9c:00:00 (cc:00:15:9c:00:00), Dst: cc:01:15:9c:00:00 (cc:01:15:9c:00:00)
Internet Protocol Version 4, Src: 10.1.1.1 (10.1.1.1), Dst: 10.2.2.2 (10.2.2.2)
Internet Protocol Version 6, Src: 2001:cc1e:1:1::1 (2001:cc1e:1:1::1), Dst: 2001:cc1e:1:2::2 (2001:cc1e:1:2::2)
Internet Control Message Protocol v6

isatap tunnel with static route

設定投入

R1, R2, R3間でisatap tunnelを作成します。”tunnel mode ipv6ip isatap”と指定し、IPv6アドレスはEUI-64形式で指定します。

 [R1]
interface Tunnel123
 tunnel source Loopback0
 tunnel mode ipv6ip isatap
 ipv6 address 2001:CC1E:123::/64 eui-64

 [R2]
interface Tunnel123
 tunnel source Loopback0
 tunnel mode ipv6ip isatap
 ipv6 address 2001:CC1E:123::/64 eui-64

 [R3]
interface Tunnel123
 tunnel source Loopback0
 tunnel mode ipv6ip isatap
 ipv6 address 2001:CC1E:123::/64 eui-64

互いに疎通可能になるようstatic routeを定義します。

 [R1]
ipv6 route 2001:CC1E:1:2::/64 2001:CC1E:123::5EFE:A02:202
ipv6 route 2001:CC1E:1:3::/64 2001:CC1E:123::5EFE:A03:303

 [R2]
ipv6 route 2001:CC1E:1:1::/64 2001:CC1E:123::5EFE:A01:101
ipv6 route 2001:CC1E:1:3::/64 2001:CC1E:123::5EFE:A03:303

 [R3]
ipv6 route 2001:CC1E:1:1::/64 2001:CC1E:123::5EFE:A01:101
ipv6 route 2001:CC1E:1:2::/64 2001:CC1E:123::5EFE:A02:202

疎通確認

R1, R2, R3間で疎通可能である事を確認します。

R1#ping  2001:CC1E:1:3::3 source Ethernet 0/1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2001:CC1E:1:3::3, timeout is 2 seconds:
Packet sent with a source address of 2001:CC1E:1:1::1
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 16/28/60 ms
R1#

パケット観察

上記pingをキャプチャした結果は以下の通りです。GRE headerが存在しないオーバーヘッドの少ない転送形式です。

Frame 9: 134 bytes on wire (1072 bits), 134 bytes captured (1072 bits)
Ethernet II, Src: cc:00:14:ac:00:00 (cc:00:14:ac:00:00), Dst: cc:02:14:ac:00:00 (cc:02:14:ac:00:00)
Internet Protocol Version 4, Src: 10.1.1.1 (10.1.1.1), Dst: 10.3.3.3 (10.3.3.3)
Internet Protocol Version 6, Src: 2001:cc1e:1:1::1 (2001:cc1e:1:1::1), Dst: 2001:cc1e:1:3::3 (2001:cc1e:1:3::3)
Internet Control Message Protocol v6

isatap tunnel with dynamic routing

設定投入

isatap tunnelとdynamic routingを併用した設定例です。

isatap tunnelはNBMAなので、unicastによってneighborを確立しなければなりません。ospf network typeをnon-broadcastなどに変更し、neighborコマンドでneighborを指定します。neighborのlink local addressは”show ipv6 interface brief”コマンドなどで調べる事ができます。

 [R1]
interface Tunnel123
 ipv6 address 2001:CC1E:123::/64 eui-64
 tunnel source Loopback0
 tunnel mode ipv6ip isatap
 ipv6 ospf network non-broadcast
 ipv6 ospf neighbor FE80::5EFE:A02:202
 ipv6 ospf neighbor FE80::5EFE:A03:303
 ipv6 ospf 1 area 0
!
interface Ethernet0/1
 ipv6 ospf 1 area 0

 [R2]
interface Tunnel123
 ipv6 address 2001:CC1E:123::/64 eui-64
 tunnel source Loopback0
 tunnel mode ipv6ip isatap
 ipv6 ospf network non-broadcast
 ipv6 ospf neighbor FE80::5EFE:A01:101
 ipv6 ospf neighbor FE80::5EFE:A03:303
 ipv6 ospf 1 area 0
!
interface Ethernet0/1
 ipv6 ospf 1 area 0

 [R3]
interface Tunnel123
 ipv6 address 2001:CC1E:123::/64 eui-64
 tunnel source Loopback0
 tunnel mode ipv6ip isatap
 ipv6 ospf network non-broadcast
 ipv6 ospf neighbor FE80::5EFE:A01:101
 ipv6 ospf neighbor FE80::5EFE:A02:202
 ipv6 ospf 1 area 0
!
interface Ethernet0/1
 ipv6 ospf 1 area 0

疎通確認

R1, R2, R3間でneighborが確立され、疎通可能になった事を確認します。

R1#show ipv6 ospf neighbor

Neighbor ID     Pri   State           Dead Time   Interface ID    Interface
10.3.3.3          1   FULL/DROTHER    00:01:54    10              Tunnel123
10.2.2.2          1   FULL/DR         00:01:48    10              Tunnel123
R1#
R1#
R1#ping  2001:CC1E:1:3::3 source Ethernet 0/1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2001:CC1E:1:3::3, timeout is 2 seconds:
Packet sent with a source address of 2001:CC1E:1:1::1
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 16/28/60 ms
R1#

6to4 tunnel

アドレス見直し

検証の都合上、IPv6アドレスを以下のように変更します。

                               e0/0      e0/1
                               .2+--------+::2
                           ┌----+   R2   +--
           e0/1      e0/0  │    +--------+
          ::1+--------+.1  │        2001:A02:202:2::/64 
         ----+   R1   +----┤
             +--------+    │
 2001:A01:101:1::/64       │  e0/0      e0/1
                           │  .3+--------+::3
                           └----+   R3   +--
                192.168.123.0/24 +--------+
                                     2001:A03:303:3::/64 
                                                        
        R1 Loopback0     R2 Loopback0     R3 Loopback0  
        10.1.1.1/32      10.2.2.2/32      10.3.3.3/32   

設定投入

R1, R2, R3間で6to4 tunnelを作成します。
IPv6アドレスはIPv4アドレスと互換性があるように設定して下さい。

 [R1]
interface Tunnel123
 tunnel source Loopback0
 tunnel mode ipv6ip 6to4
 ipv6 address 2002:A01:101::1/64
!
interface Ethernet0/1
 ipv6 address 2002:A01:101:1::1/64

 [R2]
interface Tunnel123
 tunnel source Loopback0
 tunnel mode ipv6ip 6to4
 ipv6 address 2002:A02:202::2/64
!
interface Ethernet0/1
 ipv6 address 2002:A02:202:2::2/64

 [R3]
interface Tunnel123
 tunnel source Loopback0
 tunnel mode ipv6ip 6to4
 ipv6 address 2002:A03:303::3/64
!
interface Ethernet0/1
 ipv6 address 2002:A03:303:3::3/64

疎通可能になるようstatic routeを定義します。

 [R1, R2, R3]
ipv6 route 2002::/16 Tunnel123

疎通確認

R1, R2, R3間で疎通可能である事を確認します。

R3#ping 2002:A02:202:2::2 source Ethernet 0/1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2002:A02:202:2::2, timeout is 2 seconds:
Packet sent with a source address of 2002:A03:303:3::3
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 12/31/64 ms
R3#

パケット観察

上記pingをキャプチャした結果は以下の通りです。GRE headerが存在しないオーバーヘッドの少ない転送形式です。

Frame 2: 134 bytes on wire (1072 bits), 134 bytes captured (1072 bits)
Ethernet II, Src: cc:02:1b:70:00:00 (cc:02:1b:70:00:00), Dst: cc:01:1b:70:00:00 (cc:01:1b:70:00:00)
Internet Protocol Version 4, Src: 10.3.3.3 (10.3.3.3), Dst: 10.2.2.2 (10.2.2.2)
Internet Protocol Version 6, Src: 2002:a03:303:3::3 (2002:a03:303:3::3), Dst: 2002:a02:202:2::2 (2002:a02:202:2::2)
Internet Control Message Protocol v6

Tips

EUI-64

EUI-64形式のアドレスをど忘れした場合は、以下のshowコマンドで調べる事もできます。

R3(config)#int tun 123
R3(config-if)#
*Mar  1 00:02:30.787: %LINEPROTO-5-UPDOWN: Line protocol on Interface Tunnel123, changed state to down
R3(config-if)#tunnel mode ipv6ip isatap
R3(config-if)#tunnel source Loopback 0
R3(config-if)#
*Mar  1 00:03:01.079: %LINEPROTO-5-UPDOWN: Line protocol on Interface Tunnel123, changed state to up
R3(config-if)#ipv6 address 2001:CC1E:123::/64 eui-64
R3(config-if)#do show ipv6 int bri
Ethernet0/0                [up/up]
Ethernet0/1                [up/up]
    FE80::CE02:14FF:FEAC:1
    2001:CC1E:1:3::3
Ethernet0/2                [administratively down/down]
Ethernet0/3                [administratively down/down]
Loopback0                  [up/up]
Tunnel123                  [up/up]
    FE80::5EFE:A03:303
    2001:CC1E:123::5EFE:A03:303
R3(config-if)#
タイトルとURLをコピーしました