前回の記事からだいぶ時間が経ってしまったが、今回は具体的に何をすれば、実際にIPv6で外部との接続を行うことができるのかを解説する。図1の例でいうと、上流ISPと企業網間の回線、およびその回線につながるルータの部分である。
2002年8月現在、IPv6サービスの提供を行っているISPは数多くある(表1)。
プロバイダ名 | トンネル | ネイティブ | デュアル | |
---|---|---|---|---|
IIJ | ○ | ○ | ○ | |
http://www.iij.ad.jp/IPv6/ | ||||
NTTコミュニケーションズ | ○ | ○ | ○ | |
http://www.ocn.v6.ntt.net/ http://www.v6.ntt.net/ipbb/ |
||||
IMASY | ○ | × | × | |
http://www.v6.imasy.or.jp/ | ||||
KDDI | ○ | ○ | × | |
http://www.v6.kddi.com/ | ||||
JENS | ○ | ○ | ○ | |
http://www.jens.co.jp/ipv6/ | ||||
知多メディアスネットワーク | × | ○ | × | |
http://www.medias.jp/ | ||||
日本テレコム | ○ | × | × | |
http://www.japan-telecom.co.jp/business/odn/ipv6/ | ||||
パワードコム | ○ | × | ○ | |
http://www.poweredcom.net/service/internet/ipv6.html | ||||
みあこネット | × | × | ○ | |
http://www.sccj.com/miako/ | ||||
表1 IPv6サービスの提供を行っているISPの一覧。IPv6サービスは行っているものの、新規募集を終了したISPはこの表から削除している。また一部のISPのサービスは実験サービスや非商用利用限定であるため、実際に契約する際にはサービス内容に注意する必要がある |
各社、さまざまなIPv6サービスを行っているが、接続方法という観点では、「トンネル接続」「ネイティブ接続」「デュアル接続」の3つに分類される。
既存のIPv4接続回線を利用して、IPv6パケットをカプセル化して通すもの。デュアル接続とは異なり、同じ回線上にはIPv4パケットしか存在しない(一部のIPv4パケットのデータの中身が、IPv6パケットそのものになっている)。
IPv6接続用に専用の回線を引くもの。デュアル接続とは異なり、同じ回線上に流れるのはIPv6パケットのみである。
既存のIPv4接続回線を利用して、IPv6パケットを直接通すもの。トンネル接続とは異なり、同じ回線上にIPv6パケットとIPv4パケットとが混在する。
それぞれの手法のエンドユーザーにとっての長所と短所は表2のとおりである。一般には、価格や運用の手間、既存サービスへの影響とのトレードオフを考慮して、どのサービスを採用するか取捨選択すべきだが、本記事では一番導入コストが低いトンネル接続を例に取り解説を進める。
トンネル | ○ | 既存回線をそのまま使うので、新たな回線コストは掛からない |
---|---|---|
○ | 回線がIPv6未対応でもIPv6接続できる | |
× | IPv4ネットワークが不安定だと、IPv6ネットワークも不安定になる | |
× | IPv6ネットワークが不安定になり回線が不安定になると、IPv4ネットワークも不安定になる | |
× | 中継性能が低いことが多い | |
ネイティブ | ○ | 既存IPv4ネットワーク/回線への影響なし |
○ | 中継性能はトンネルの場合に比べると高いことが多い | |
× | IPv6専用回線のコストが掛かる | |
デュアル | ○ | 既存回線をそのまま使うので、新たな回線コストは掛からない |
○ | 中継性能はトンネルの場合に比べると高いことが多い | |
× | 回線がIPv6に対応している必要がある | |
× | IPv4ネットワークが不安定だと、IPv6ネットワークも不安定になる | |
× | IPv6ネットワークが不安定になり回線が不安定になると、IPv4ネットワークも不安定になる | |
表2 各接続手法の長所・短所 |
それぞれ外部接続に必要な装置や情報は、以下のとおりである。
IPv6サービスの契約を行うと、自動的に取得可能。一般に/48を入手できる。この場合、2の16乗個のセグメントにプレフィックスを割り振り、各セグメントにつき最大2の64乗個のアドレスを定義することができる。通常用途なら十分過ぎる数だろう。
大企業ではこれでも不足する可能性もあり得るが、その場合はもう少し広い範囲のプレフィックス(例えば/40)や複数の/48を入手する必要がある。そのようなことが可能か否かはISP次第なので、特に大企業の場合は、プレフィックスの拡張が可能か否かを契約時に確認しておくことが大切だ。
デュアル接続/ネイティブ接続の場合には、対外線(例:ATM、シリアル専用線)そのものでIPv6通信を行えなければならない。
特にデュアル接続の場合には、現在IPv4対外接続に使用しているルータでIPv6通信を行う必要がある。そのため、場合によっては、IPv6導入のために既存の対外接続ルータをリプレイスする必要があることが多いのに注意してほしい(逆にいえば、IPv6対応に関係なく対外接続ルータをリプレイスする際でも、IPv6対応版を最初から導入しておくと後々楽だということだ)。
トンネル接続の場合は、IPv6に対応さえしていれば、以上の2つの制約はない。
トンネル接続の場合のみ必須になる。一般に、トンネル接続はNAPT経由では動作しないため、NAPTを経由しないグローバルなIPv4アドレスを用意する必要がある。
概略はこのくらいにして、実際にトンネルを使って外部とIPv6接続をしてみよう。トンネル技術にはいくつかあるが、まずは「6to4」というトンネル技術を用いて接続してみる。
6to4はRFC3056で規定されたトンネル技術であり、トンネル通信でパケットをカプセル化するときのIPv4アドレスが、通信先のIPv6アドレス内に埋め込まれていることが特徴である(図3)。
●PC〜6to4ルータ(上)
IPv6パケットとして普通に転送
●6to4ルータ(上)
IPv6パケットを6to4に変換するルータ。IPv6デフォルト経路を6to4ルータ(下)のIPv6アドレス(2002:0203:0405::1)に向けておく
●6to4ルータ(上)〜6to4ルータ(下)
6to4ルータ(下)のIPv6アドレス「2002:0203:0405::1」からIPv4アドレス「2.3.4.5」を抽出。1.2.3.4 → 2.3.4.5へのIPv4パケットの中に、IPv6パケットをカプセル化
●6to4ルータ(下)
6to4 IPv4パケットをIPv6パケットに変換するルータ。上記IPv4パケットのデータ部からIPv6パケットを抽出。そのIPv6パケットを普通に転送
上側の6to4ルータは自分側で用意し、下側の6to4ルータはIPv6サービスを行うISP側で用意する。ただし、日本には実験用に外部公開されている6to4ルータがあるので(www.6to4.jpのページを参照)、それを使えばISPとIPv6サービス契約を行う必要はない。また、使用できるIPv6プレフィックスは自分の所有するIPv4アドレスから自動的に確定するため、特別なIPv6プレフィックス取得手続きも不要である。そのため、6to4に対応したIPv6ルータとIPv4グローバル・アドレスがあれば、6to4トンネルを使うことができる。
実際に、企業のような複数ネットワークを用いる環境で使うときには、図4に示す構成を取って動作させる。
6to4を実際に用いる際には、いくつか留意すべきことがあるので、ここでリストアップする。
NAPTではTCP/UDPのポート番号を基にしてIPv4アドレスの変換を行うのに対して、IPv6パケットをカプセル化したIPv4パケットのプロトコル種別はTCP/UDPのいずれでもないため(「IPv6」というプロトコル・タイプである)、NAPTでアドレス変換を行うことができないからだ。
最初に、6to4トンネルではIPv4「グローバル」アドレスが必要、という説明をしたのは、上記のような制約があるためである。いうまでもないことだが、NAPTを通しているIPv4グローバル・アドレスも、6to4トンネルに用いるアドレスとしては採用できない。
なお、TCP/UDPのポート番号によらず静的にアドレス変換を行うNATならば、6to4のIPv4パケットを正しく変換することも可能である。ただし、実際にそのような設定が可能かどうかは実装に依存する。混乱を防ぐためにも、最初はIPv4グローバル・アドレスを用いた方がよいだろう。
6to4ルータは通常、「2002?」で始まるIPv6アドレス行きのパケットならば、すべてIPv4でカプセル化して外に送信する。このことを利用すると、通常のIPv4対外線利用では許されなかったIPv4通信が、6to4を経由すると実現できてしまうことになる(図5)。
本来であれば、IPv4的に疎通しなければ6to4トンネルでカプセル化したパケットも疎通しないので、上記のような問題は起こらない。ただし、ファイアウォールに穴を開けて、「『プロトコル・タイプIPv6』のパケットならば全部通す」という設定をしていると、IPv4のフィルタリング・ポリシーでアクセス制限をかけていても、6to4トンネルで越えられてしまう、という問題が発生する。
この問題に対応するためには、根本的にはファイアウォールのIPv6対応が必要なのだが、6to4ルータの経路制御を工夫することによっても、かなりの部分で対応可能である。図5の例でいうと、6to4ルータの経路の設定で、「2002:0304:0506::/48」あてのIPv6パケットを中継しないようにすればよい。そうすれば、カプセル化されたIPv4パケットがファイアウォールに到達する前に、6to4ルータでIPv6パケットが廃棄されるので、ファイアウォールではじくべきパケットをはじくことが可能になる。
リンク・ローカル・アドレスとは、最初の64ビットが「fe80::」で始まっているIPv6アドレスである。このアドレスはルータを越えない通信に用いられ、主に経路制御プロトコルが使用している。
ところが、6to4トンネルではIPv6アドレスの先頭16バイトが2002で固定になっているため、リンク・ローカル・アドレスを用いた通信を行うことができない。このことは、経路制御プロトコルを6to4トンネルを介して動かすことができないことを意味している。そのため、外部への回線を動的に経路制御で切り替えるような使い方をすることはできない。
なお、静的に外部への回線を切り替えるだけならば、6to4ルータの経路の設定を工夫するだけで実現可能だ。デフォルトで特定の6to4ルータへ中継させるのではなく、例えば「2002::/16」を半分に分けて、前半分と後半分を別々の6to4ルータへ中継させるような経路設定をすればよい。
次に、実際のISPサービスでよく用いられている、静的トンネル接続について説明する。通信方法自体は6to4トンネルと完全に同じで、プロトコル・タイプ「IPv6」のIPv4パケットでIPv6パケットをカプセル化して送信する、という仕組みである。
6to4と異なるのは、そのときに用いるIPv4アドレスが契約により固定されていること、そして使用できるプレフィックスの形式に制約がないことの2つだ。
トンネル接続の契約は、大まかにいうと以下のような手順で進められる。
上記情報を用いて、それぞれのトンネル・ルータにて、互いのトンネル・ルータへ向けたトンネル・インターフェイスを仮想的に定義し、そのトンネル・インターフェイス上でパケット中継や経路制御を行うイメージである(図6)。
●トンネル・ルータ(上)のトンネル・インターフェイス設定例
(Cisco IOS)
Router(config)# interface Tunnel 0 Router(config-if)# ipv6 address 3ffe:ffff:ffff::1/64 Router(config-if)# tunnel source 2.3.4.5 Router(config-if)# tunnel destination 1.2.3.4 Router(config-if)# tunnel mode ipv6ip
●トンネル・ルータ(下)のトンネル・インターフェイス設定例
(日立製作所 GR2000)
Router(config): tunnel toISP 1.2.3.4 remote 2.3.4.5 Router(config): ip toISP 3ffe:ffff:ffff::2/64 destination-ip-address 3ffe:ffff:ffff::1 Router(config): static ::/0 interface toISP
トンネル通信先を1カ所に静的に固定して運用するため、6to4トンネルの問題点として挙げた3つの課題のうち、後者2つの問題は解決される。すなわち、仮想的なIPv6専用のPoint-to-Point回線としての利用が可能になる。
今回は、6to4のトンネル接続を例に、IPv6で対外接続する方法について解説した。次回以降は、内部ネットワークのIPv6化手順について解説していく。
Copyright © ITmedia, Inc. All Rights Reserved.