IPv4アドレス在庫の枯渇やWorld IPv6 Dayの実施に伴い、「そういえば昔IPv6について読んだけれど、いまはどうなっているんだろう?」と感じている人も多いのではないでしょうか。最新状況を踏まえたIPv6の「基礎」を改めて紹介します。(編集部)
従来はネットワークの冗長化というと、金融系の勘定システムや公共サービスシステムなど、ほんの少しでも停止すると大変な問題となる重要拠点で運用するイメージがありました。しかし、コンパクトなゲーム機やスマートフォンなどの携帯端末の普及が一役かっているのか「いつでもどこでもインターネットを利用する」ことが多くなり、今日ではごく普通の用途でもネットワークが切れると、正直いってイライラします。また、IT技術に依存している会社では、ネットワークに問題があると一般の業務だって停滞します。
そこでこの記事では、止まらないネットワークを実現するため、あるいは自動的にすぐに復旧できる高信頼で便利なネットワークを実現するため、IPv6ネットワークの冗長化、中でも、主に端末を収容するゲートウェイを冗長化する方法についてまとめます。
IPv4ネットワークでゲートウェイを冗長化するには、VRRPなどのプロトコルを用いて1つのIPアドレス(またはサブネット)を仮想的に2台以上のルータで共有するアクティブ/スタンバイ方式(図1)と、OSPFなどのダイナミックルーティングを用いて複数のネットワークに収容するマルチパス方式(図2)が一般的でした。
前者のアクティブ/スタンバイ方式は、ルータ(ゲートウェイ側)が冗長制御を行うので、ホスト(端末側)は特に意識することなく、特別な設定なしにネットワークに接続できます。しかし、ホストから、スタンバイ側のステータスや安全性を確認する手段がないため、何らかの問題があってネットワークが自動的に切り替わるまで、冗長制御が正しく動作しているか否かを確認することが難しく、信頼性の点でデメリットがあります。
後者のマルチパス方式は、基本的にホスト(端末側)が主経路と副経路の両方を認識し、通信路を選択するので信頼性は高いのですが、特別な設定あるいは制御が必要になります。このため、サーバ用途には向きますが、スマートフォンなどに採用するにはハードルが高く、理想的ではありません。
【関連記事】
ネットワーク設計の定石(前編) どのように社内LANを設計するのか
http://www.atmarkit.co.jp/fnetwork/tokusyuu/jouseki01/01.html
IPv6ではRA(Router Advertisement)を利用して、ルータからホストにサブネットプレフィックス(IPv4でのネットワークアドレスに相当)を通知し、ホスト側はルータから通知されたサブネットプレフィックスを基にして自分のIPv6アドレスを決定します(第2回の記事参照)。
この時、IPv6ノードは1つのインターフェイスに対して複数のアドレスを付けることができます。これらの仕組みを利用することで、IPv6ゲートウェイの冗長化が容易に行えます。
【関連記事】
第2回 どう割り振る? IPv6でのアドレス設計 - IPv6におけるネットマスクとアドレス生成
http://www.atmarkit.co.jp/fnetwork/rensai/v6again02/01.html
まず、冗長化された2台のルータの一般的な設定内容を見てみましょう(図3)。
・ルータAの設定内容
interface vlan 100 ipv6 address 2001:db8:beef::1/64 ipv6 address fe80::beef:1 link-local ipv6 enable no ipv6 nd suppress-ra
・ルータBの設定内容
interface vlan 100 ipv6 address 2001:db8:cafe::1/64 ipv6 address fe80::cafe:1 link-local ipv6 enable no ipv6 nd suppress-ra
ルータAには「beef」、ルータBは「cafe」というIPv6アドレスが付いています。“no ipv6 nd suppress-ra”の設定は、このインターフェイスでRAを使うという意味です。端末を収容することが多いボックススイッチでは、デフォルトでこの設定になっていることが多く、サンプルのように明示的に設定する必要はほとんどありません。
次に、ホスト側の設定を見てみましょう(画面1、画面2)。Windows 7の場合はコントロールパネルからローカルエリアネットワークのプロパティを表示して“インターネット プロトコル バージョン 6”のチェックボックスがONになっていることを確認します。
最低限必要な設定はこれだけです。IPv6ルータでRAを有効にすると、ホスト側のアドレスは自動的に生成されるのでDHCPサーバは必要ありませんし、デフォルトゲートウェイを明示的に指定する必要もありません。冗長化する2台のルータのアドレスを設定してホストを接続するだけで設定が完了します。
ホストと各ルータの接続ができたので、続いて、ホスト側でIPv6のアドレスがどのように付加されているか確認してみます。
Windows系のOSでは、確認用のコマンド“ipconfig”を用い、Mac OS XなどのUNIX系では“ifconfig”を用います。ここではWindows 7で実行した例を挙げます。
・Windows 7でのIPv6アドレスの確認
C:\>ipconfig Windows IP 構成 イーサネット アダプター ローカル エリア接続: 接続固有の DNS サフィックス . . . : IPv6 アドレス . . . . . . . . . . . : 2001:db8:beef:0:c414:4e77:b627:40e7 IPv6 アドレス . . . . . . . . . . . : 2001:db8:cafe:0:c414:4e77:b627:40e7 リンクローカル IPv6 アドレス. . . . : fe80::c414:4e77:b627:40e7%12 デフォルト ゲートウェイ . . . . . . : fe80::beef:1%12 fe80::cafe:1%12
“beef”と“cafe”の両方のアドレスが付いて、デフォルトゲートウェイも2つ登録されていることが確認できると思います。
ここで“2001:db8:beef:0:”と“2001:db8:cafe:0:”がルータからRAで通知されたプレフィックス(IPv4のネットワークアドレスに相当)で、それ以後の“c414:4e77:b627:40e7”はWindows 7が自動生成したインターフェイスIDです。
さて、ここで大きな疑問がわいてきます。ホストが実際に通信する際、いったいどちらのアドレスとゲートウェイを使うのでしょうか?
試しに、いくつかのサーバ宛に通信して経路を確認しましょう。
通信経路を確認するには、IPv4でもおなじみのトレースルート(Traceroute)を用います。Windows系のOSでは“tracert”、Mac OS XなどのUNIX系では“traceroute”に続けて宛先のサーバを指定します。次のWindows 7における実行例では、途中経路を確認する必要がないので、ホップリミットを1に指定しています。
・Windows 7で“www.kokatsu.jp”宛ての通信路を確認した例
C:\>tracert -h 1 www.kokatsu.jp www.kokatsu.jp [2001:dc2:1000:2008::5456] へのルートをトレースしています 経由するホップ数は最大 1 です: 1 <1 ms * <1 ms 2001:db8:beef::1 トレースを完了しました。
・Windows 7で“www.v6pc.jp”宛ての通信路を確認した例
C:\>tracert -h 1 www.v6pc.jp v6pc.jp [2001:218:2001:3003::66c] へのルートをトレースしています 経由するホップ数は最大 1 です: 1 3 ms * <1 ms 2001:db8:cafe::1 トレースを完了しました。
www.kokatsu.jp宛には“beef”のインターフェイス、www.v6pc.jp宛には“cafe”のインターフェイスを使用していることが分かります。このように、ホストが複数のプレフィックス(マルチプレフィックス)を持つ場合、ノードが自分自身のアルゴリズムに従って通信経路を選択し、結果的にロードバランスされるのです。
【関連記事】
ipconfig - Windowsのネットワーク設定を確認する
http://www.atmarkit.co.jp/fnetwork/netcom/ipconfig/ipconfig.html
traceroute - ネットワークの経路を調査する
http://www.atmarkit.co.jp/fnetwork/netcom/traceroute/traceroute.html
Copyright © ITmedia, Inc. All Rights Reserved.