IPv6を使うときは,IPv6だけでなくIPv6とIPv4を組み合わせるケースがよくあります。今回はまずIPv6のコマンドを説明します。その後で,IPv4とIPv6の相互運用について学習しましょう。

IPv6の基本設定

 最初に,IPv6の基本設定から見ていきましょう。CiscoルータでIPv6を使用するためにはまず,ipv6 unicast-routingコマンドを入力する必要があります。

  • (config)# ipv6 unicast-routing

 次に,インタフェースにIPv6アドレスを設定します。IPv6アドレスの設定にはいくつか方法があります。ここでは三つ紹介します。

  • (config-if)# ipv6 address [プレフィックス]/[プレフィックス長] eui-64

 この設定は,主にユニキャストグローバルIPv6アドレスを設定する場合に使います。インタフェースIDとして,MACアドレスをEUI-64フォーマットしたものを使うように設定することもできます。MACアドレスがない場合(シリアルインタフェースのような場合)は,0000:0000:0000をEUI-64フォーマットしたものになります。また,リンクローカルアドレスはこのコマンドを実行することによって自動的に付与されます。

  • (config-if)# ipv6 address [IPv6アドレス]/[プレフィックス長] link-local

 上記のコマンドは,通常のリンクローカルアドレスではなく,インタフェース上の特定のリンクに対してのリンクローカルアドレスを設定します。

  • (config-if)# ipv6 address enable

 このコマンドは,インタフェースでIPv6のリンクローカルアドレスを自動生成します。

 この3つのipv6 addressコマンドのいずれかを実行する事により,そのインタフェースでのIPv6の処理が行われる事になります。つまりIPv6ルーティングでは,ipv6 addressコマンドの実行が必要になります(図1)。

 図1 IPv6の基本設定
IPv6の基本設定

 設定したIPv6アドレスを確認したいときは,show ipv6 interfaceコマンドを使います。手動設定したグローバルユニキャストアドレスや,自動設定されたリンクローカルアドレスなどが表示されます(図2)。

  • (config-if)# show ipv6 interface {インタフェースタイプ/ポート | brief }

 図2 show ipv6 interface
show ipv6 interface

IPv4・IPv6デュアルスタック

 新しい技術を導入する場合,スムーズに移行することが大切です。インターネットでは10万を越えるネットワークと百万を越えるノードがIPv4で運用されています。その膨大なIPv4のネットワーク・ノードをIPv6へ一斉に切り替えるということはできません。そこでIPv4とIPv6の相互運用について学ぶ必要があります。IPv4とIPv6の相互運用,そしてIPv6へ移行するための技術としては,「デュアルスタック」と「オーバレイ・トンネリング」というものがあります。まず,「デュアルスタック」から説明します。

 デュアルスタックは,IPv4とIPv6の両方をルータやネットワークが両方使える状態のことです。ノード(クライアント)もIPv4とIPv6の双方が使えるケースもあります。デュアルスタック対応ノードは,パケットのあて先アドレスを確認し,IPv6アドレスであるならばIPv6で,IPv4アドレスであるならばIPv4で通信します。また,アプリケーションがIPv6に対応していないならばIPv4を使います。DNSの名前解決も,IPv4対応ノードの場合はIPv4アドレス解決し,IPv6対応ノードの場合はIPv6アドレスを解決することができます(図3)。

 図3 IPv4/IPv6デュアルスタック
IPv4/IPv6デュアルスタック

 CiscoIOSでは,IPv4とIPv6の双方の設定をインタフェースに設定することにより,デュアルスタックに対応します。先ほどのipv6 unicast-routingコマンドとipv6 addressコマンドにより,IPv6トラフィックをフォワードするようになります。

オーバレイ・トンネリング

 オーバレイ・トンネリングはIPv6パケットをIPv4パケットによってカプセル化し,IPv4ネットワークを通過させ,IPv6ネットワークを相互に繋ぐ方式です。IPv6はIPv4ヘッダではプロトコル番号41として扱われます。オーバレイ・トンネリングはIPv4ネットワーク上のデュアルスタックのノードがIPv6ネットワーク上のノードに対し送信する場合,またはIPv6ネットワーク上のノードがIPv4ネットワークの先にあるIPv6ノードに送信する場合などに使用します(図4)。

 図4 オーバレイ・トンネリング

 オーバレイ・トンネリングの設定には複数の方法があります。

  • 手動設定トンネル ・・・ IPv4/IPv6の境界にあるノードやルータで,手動によりトンネルの始点・終点にIPv4アドレスを設定します。
  • 自動設定トンネル ・・・ IPv4互換IPv6アドレスを使用し,トンネルの始点・終点が自動的に設定されます。
  • 6to4トンネル ・・・ IPv4ネットワークをはさんでIPv6を繋げる場合に使用できる自動設定のトンネルです。2002::/16のプレフィックスを持つアドレスをIPv4ネットワーク側に設定し,それにより始点と終点を自動的に判別します。
  • ISATAP(Intra-Site Automatic Tunnel Addressing Protocol) … IPv4プライベートネットワークでトンネリングを自動化できるプロトコルであるISATAPを使う事により,トンネルを設定します。
  • Teredo ・・・ IPv4のUDPでIPv6パケットをカプセル化し,NATトラバーサルとプライベートIPv4によるトンネルを行います。

 ここでは,手動設定の方法を説明します。tunnelコマンドによって手動設定をします。トンネルインタフェースを作成し,新しいIPv6アドレスを設定します。そして,自身のIPv4側インタフェースのIPv4アドレスをtunnel sourceに,対向ルータのIPv4アドレスをtunnel destinationに設定します。tunnel mode ipv6ipコマンドにより,トンネルの自動設定が行われます(図5)。

  • (config)#interface tunnel0
  • (config-if)# ipv6 address [アドレス]
  • (config-if)# tunnel source [IPv4アドレス]
  • (config-if)# tunnel destination [IPv4アドレス]
  • (config-if)# tunnel mode ipv6ip

 図5 オーバレイ・トンネリング手動設定
オーバレイ・トンネリング手動設定

NAT-PT

 オーバレイ・トンネリングはIPv6ノードがIPv6ノードに対してデータを送信する際に使われます。デュアルスタックの場合は,デュアルスタックノードはデュアルスタックネットワーク上に存在する必要があります。つまり,IPv6だけのネットワークにいるIPv6だけのノードと,IPv4 ネットワーク上のIPv4ノードとの通信は,オーバレイ・トンネリングでは実現できません。

 そこで使われるのが,NAT-PT(Network Address Translation/Protocol Translation)です。NAT-PTはIPv6アドレスをIPv4アドレスに変換するとともに,IPv6パケットをもIPv4パケットに変換することにより,IPv6ノードとIPv4ノードを接続します。このパケットの変換はSIIT(Stateless IP/ICMP Translation)と呼ばれるアルゴリズムが使われています(図6)。

 図6 NAT-PT
NAT-PT

 またNAT-PTでは,送信元ノードがIPv6のみのノードであるため,変換前のあて先アドレスはIPv6アドレスになります。このあて先IPv6アドレスを決定するのに使われるのがDNS-ALG(DNS Application Layer Gateway)です。DNS-ALGはあて先ドメイン名から,あて先IPアドレスを取得しますが,この取得されるIPアドレスはIPv4アドレスのため,応答する場合にはIPv6アドレスに変換してIPv6ノードに送り返します。