目次
6to4トンネルとは
6to4トンネルとは、IPv4ネットワークを通じてIPv6通信を実現するためのトンネル技術です。6to4トンネルのインタフェースはポイントツーマルチポイントなので、1つの6to4トンネルインタフェースで複数のIPv6ネットワーク間との通信ができます。

6to4トンネルのアドレス
スタティックトンネルと異なり、6to4トンネルでは明示的にtunnel destinationを設定する必要はありません。6to4トンネルにルーティングするIPv6パケットの宛先IPv6アドレスに埋め込まれているIPv4アドレスを転送用IPv4ヘッダの宛先IPv4アドレスにします。
このように転送用IPv4ヘッダの宛先IPアドレスを決定するために、6to4トンネルでは次のIPv6アドレスを利用します。
- 6to4プレフィクス
2002:<IPv4アドレス>::/48
「2002」で始まるプレフィクスは6to4トンネル用に予約されています。2002に続く32ビットにIPv4アドレスを埋め込みます。そして、16ビットのサブネットIDでサブネットを識別します。6to4トンネルを利用する場合、IPv6アドレッシングは次のように考えます。
- IPv4とIPv6の境界ルータのIPv4アドレスを埋め込んだ6to4プレフィクス(2002:<IPv4アドレス>::/48)を決定する
- IPv6ネットワーク内のサブネットには、16ビットのサブネットIDで識別した/64ビットのプレフィクス(2002:<IPv4アドレス>:<Subnet-ID>::/64)でアドレッシングする

6to4トンネルのルーティング
スタティックトンネルでも解説していますが、トンネルインタフェースはただ単に設定するだけではダメです。トンネル経由でパケットをルーティングできるように、きちんとルーティングの設定を考えなくてはいけません。
6to4トンネル上でRIPngやOSPFv3のルーティングプロトコルを利用することはできません。6to4トンネル経由で他のIPv6ネットワークへルーティングするためには、スタティックルートの設定を行います。6to4トンネルの接続先のIPv6ネットワークのプレフィクスに対するルートは、次のようにロンゲストマッチを考慮して2002::/16に対するスタティックルートを設定します。
(config)#ipv6 route 2002::/16 tunnel <num>
<num> : 6to4トンネルインタフェースのインタフェース番号
境界ルータ自身の配下のIPv6ネットワークプレフィクスは、ルーティングプロトコルを利用して詳細なルート情報を学習します。それら以外のプレフィクス、すなわち、リモート側の拠点のネットワークプレフィクスについては、6to4トンネルへルーティングすればよいです。この様子を図に示すと、次のようになります。

また、このようなルーティングテーブルのルート情報に基づいて、6to4トンネルにルーティングするときの様子を表すと次の図のようになります。

- IPv4とIPv6の境界ルータに他の拠点あてのIPv6パケットが到達します。
- ルーティングテーブルからルート情報を検索します。他の拠点の6to4プレフィクスに対してはロンゲストマッチより、2002::/16向けのスタティックルートが利用されます。そして、IPv6パケットは6to4トンネルインタフェースへルーティングされます。
- 6to4トンネルインタフェースから出力するときに、転送用のIPv4ヘッダを付加します。このとき転送用のIPv4ヘッダは宛先IPv6アドレスに埋め込まれているアドレスを使います。実際に出力されるインタフェースは、上の図のFa0/0からです。IPv4ネットワークを通じてR2までルーティングされていきます。
他の拠点あてのパケットを境界ルータまでルーティングするためには、拠点内のIPv6ルータに2002::/16のルート情報を学習させる必要があります。そのために、境界ルータでスタティックルートをRIPngやOSPFv3に再配送します。
6to4トンネルの設定
6to4トンネルインタフェースを通じて、IPv6パケットを転送するための設定の流れは次のようになります。
- 6to4トンネルインタフェースの作成
- トンネルインタフェースにIPv6アドレスを割り当て
- ルーティングの設定
1. 6to4トンネルインタフェースの作成
6to4トンネルの設定は、トンネルインタフェースを作成して次のようにトンネルモードを6to4に変更します。
(config)#interface tunnel <num>
(config-if)#tunnel mode ipv6ip 6to4
(config-if)#tunnel source {<src-interface-name>|<src-ip-address>}
<num> : インタフェース番号
<src-interface-name> : 転送用IPv4ヘッダの送信元IPv4アドレスとして利用するインタフェース名
<src-ipv4-address> : 転送用IPv4ヘッダの送信元IPv4アドレス
tunnel destinationの設定がなくても、6to4トンネルのトンネルインタフェースはup/upになります。
トンネルインタフェースにIPv6アドレスを割り当て
トンネルインタフェースにIPv6パケットを送受信するためには、やはりIPv6アドレスの設定が必要です。6to4トンネルインタフェースにも6to4プレフィクスのIPv6アドレスを設定するか、unnumberedの設定を行います。
(config)#interface tunnel <num>
(config-if)#ipv6 address <ipv6-address>/<prefix-length>
<num> : インタフェース番号
<ipv6-address> : 設定するIPv6アドレス
<prefix-length> : プレフィクス長
(config)#interface tunnel <num>
(config-if)#ipv6 unnumbered <interface>
<num> : インタフェース番号
<interface-name> : インタフェース名
6to4トンネルインタフェースにもリンクローカルアドレスが自動的に設定されます。6to4トンネルインタフェースのリンクローカルアドレスはFE80::<tunnel sourceのIPv4アドレス>です。
ルーティングの設定
前述のように。6to4トンネル経由で他のIPv6ネットワークへパケットをルーティングするためには2002::/16の6to4プレフィクスのスタティックルートを設定します。
(config)#ipv6 route 2002::/16 tunnel <num>
<num> : 6to4トンネルインタフェースのインタフェース番号
このスタティックルートによって、自身の配下の6to4プレフィクスでないネットワークが宛先のIPv6パケットは、6to4トンネルインタフェースへとルーティングします。
6to4トンネルの設定例
6to4の設定例として、下記のネットワーク構成を考えましょう。

6to4トンネルの設定を行うための前提として、IPv4ネットワークとIPv6ネットワークの境界であるR1、R2のIPv4アドレスを埋め込んだアドレッシングを行います。R1のIPv6ネットワークには、R1の192.168.1.1のIPv4アドレスを埋め込んだ2002:C0A8:0101::/48の範囲からアドレッシングします。同様にR2のIPv6ネットワークには、R2の192.168.1.2のIPv4アドレスを埋め込んだ2002:C0A8:0102::/48の範囲からアドレッシングします。
6to4トンネルインタフェースの作成
R1とR2で6to4トンネルインタフェースを次のように作成します。
R1
interface tunnel 1 tunnel mode ipv6ip 6to4 tunnel source fa 0/0
トンネルインタフェースにIPv6アドレスを割り当て
6to4トンネルインタフェースにIPv6パケットをルーティングできるようにするためにIPv6アドレスを設定します。今回は、unnumberedそれぞれLoopback0のIPv6アドレスを使うように設定します。
R1
interface tunnel 1 ipv6 unnumbered loopback 0
R2
interface tunnel 1 ipv6 unnumbered loopback 0
ルーティングの設定
そして、お互いの6to4プレフィクスにルーティングできるように、2002::/16に対するルート情報をスタティックに設定します。
R1
ipv6 route 2002::/16 tunnel 1
R2
ipv6 route 2002::/16 tunnel 1
ここまでの設定で、R1、R2がお互いの6to4プレフィクスに対してルーティングすることが可能です。R1、R2のIPv6ルーティングテーブルは次のようになります。
R1
R1#show ipv6 route 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 S 2002::/16 [1/0] via ::, Tunnel1 C 2002:C0A8:101:1::/64 [0/0] via ::, Loopback0 L 2002:C0A8:101:1::1/128 [0/0] via ::, Loopback0 L FE80::/10 [0/0] via ::, Null0 L FF00::/8 [0/0] via ::, Null0
R2
R2#sh ipv6 route 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 S 2002::/16 [1/0] via ::, Tunnel1 C 2002:C0A8:102:1::/64 [0/0] via ::, Loopback0 L 2002:C0A8:102:1::2/128 [0/0] via ::, Loopback0 L FE80::/10 [0/0] via ::, Null0 L FF00::/8 [0/0] via ::, Null0
R1からR2の6to4プレフィクス(2002:c0a8:0102:1::2)にPingすると下記のように成功します。
R1
R1#ping 2002:c0a8:0102:1::2 source loopback 0 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 2002:C0A8:102:1::2, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 4/4/4 ms
IPv6
- [演習] IPv6ルーティング RIPng&OSPFv3
- IPv6ヘッダフォーマット
- IPv6アドレスの表記フォーマット
- IPv6ユニキャストアドレス
- IPv6マルチキャストアドレス
- IPv6アドレスの設定方法 ~手動/SLAAC/DHCPv6~
- Cisco IPv6アドレスの設定と確認コマンド
- Cisco IPv6アドレスの設定例
- IPv6アドレス解決の仕組み
- IPv6 トンネリングの概要
- IPv6 over IPv4 スタティックトンネル
- 6to4トンネル
- ISATAPトンネル
- 基本的なIPv6ネットワークの設定例
- IPv6 設定ミスの切り分けと修正 Part1
- IPv6 設定ミスの切り分けと修正 Part2
- IPv6 設定ミスの切り分けと修正 Part3