連載
» 2011年09月22日 00時00分 公開

Windows管理者のためのIPv6入門:第1回 IPv6の概要 (3/3)

[打越浩幸,デジタルアドバンテージ]
前のページへ 1|2|3       

 それでは、実際にIPv6を使ってみよう。まずはIPv6のアドレスを確認してみる。テストに使用したシステムは、Windows 7のPCが2台である。コンピュータ名は「PC1」「PC2」だ。実際にはHyper-Vの仮想環境上で実行しているが、実環境でもそう違いはない。ただしすでにIPv6環境がネットワーク上にあるとIPv6の挙動が異なるので、ここではプライベート・ネットワーク(外部からは完全に分離、隔離されたネットワーク)環境を構築し、その中で動作させている。つまり、ピア・トゥ・ピアのワークグループ・ネットワーク環境である。IPv6のルータもないし、IPv6アドレスを配布してくれるDHCPサーバもいない。

 このようなネットワークの場合、IPv4では各PCに「APIPA」というアドレス(169.254.0.0/16)が割り当てられるが、IPv6の場合は次のようになる。

※Windows 7(PC1)上で実行

C:\>ipconfig …IP情報の確認

Windows IP 構成


イーサネット アダプター ローカル エリア接続 2: …ネットワーク・インターフェイス

  接続固有の DNS サフィックス . :
  リンクローカル IPv6 アドレス.  : fe80::ed87:66e3:4fb2:2b4f%13 …IPv6情報
  自動構成 IPv4 アドレス. . . . : 169.254.43.79 …IPv4情報。APIPA
  サブネット マスク . . . . . . : 255.255.0.0
  デフォルト ゲートウェイ . . . :
…(以下省略)…

 「リンクローカル IPv6 アドレス」のところにある「fe80::ed87:66e3:4fb2:2b4f%13」が、このPC1の起動時に割り当てられたIPv6アドレスである(末尾の「%13」はスコープIDという。詳細は後述)。先頭が「fe80::」なので、リンクローカル・ユニキャスト・アドレスであることが分かる。下位64bitにはランダムなアドレスが割り当てられている。このように、IPv6にはアドレスの自己調整設定機能がある(ゼロ・コンフィギュレーションなどとも呼ばれる)。このIPv6アドレスは、起動時にほかのPCと衝突しないようにランダムな値が生成され、利用される。

 ではIPv6のpingコマンドを実行してみよう。まず対象となるコンピュータ(この場合はPC2)上でipconfigを実行し、IPv6アドレスを調べておく。そしてそのIPv6アドレスを引数にしてpingコマンドを実行する。アドレスがIPv6形式なら、pingは自動的にIPv6のパケットを送信する。

※PC2(fe80::157b:3788:8e5a:231f)にpingを実行

C:\>ping fe80::157b:3788:8e5a:231f …IPv6アドレスを指定して実行

fe80::157b:3788:8e5a:231f に ping を送信しています 32 バイトのデータ:
fe80::157b:3788:8e5a:231f からの応答: 時間 <1ms …応答
fe80::157b:3788:8e5a:231f からの応答: 時間 <1ms
fe80::157b:3788:8e5a:231f からの応答: 時間 <1ms
fe80::157b:3788:8e5a:231f からの応答: 時間 <1ms

fe80::157b:3788:8e5a:231f の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 0ms、最大 = 0ms、平均 = 0ms

 IPv6のアドレス形式でpingが実行されていることが分かるだろう。アドレスの表記以外は、通常のIPv4の場合と同じである。

 なおこのpingを実行するにあたり、裏では、通信相手(PC2)のIPv6アドレスからMACアドレスを求めるためのプロトコルが動作している(IPv4におけるARPのようなもの。MACアドレスが分からないとイーサネットではパケットを送信できない)。この詳細については次回解説する。今回は、IPv6アドレスの見方やその指定方法などを理解しておけば十分である。

 ところでこの長いIPv6アドレスを使うのはとても面倒である。特に今回のようにランダムな値が設定されていると、それを覚えるのも大変だ。そこでWindows OSのIPv6では、IPv4の場合と同じように、コンピュータ名からこのIPv6アドレスを検索する名前解決サービスLLMNR(Link-local Multicast Name Resolution)が利用できるようになっている。ちなみにIPv4の場合に利用されていたNetBIOS(NBT)の名前解決機能はIPv6では利用できない。

 名前を指定してIPv6でpingを実行するには、pingに-6オプションを付けて実行する。IPv4を強制するなら-4だ。-4も-6も付けないと、ネットワークの状態によって(事前の通信状況によって)、どちらで通信するかが変わってくる。

C:\>ping -6 pc2 …IPv6でping

PC2 [fe80::157b:3788:8e5a:231f%13]に ping を送信しています 32 バイトのデータ:
fe80::157b:3788:8e5a:231f%13 からの応答: 時間 <1ms
fe80::157b:3788:8e5a:231f%13 からの応答: 時間 <1ms
fe80::157b:3788:8e5a:231f%13 からの応答: 時間 <1ms
fe80::157b:3788:8e5a:231f%13 からの応答: 時間 <1ms

fe80::157b:3788:8e5a:231f%13 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 0ms、最大 = 0ms、平均 = 0ms

 IPv6アドレスの末尾にやはり「%13」というスコープIDがついているが、IPv6形式で実行しているのが分かる。

 IPv4でpingを実行すると次のようになる。

C:\>ping -4 pc2 …IPv4でping

PC2 [169.254.35.31]に ping を送信しています 32 バイトのデータ:
169.254.35.31 からの応答: バイト数 =32 時間 <1ms TTL=128
169.254.35.31 からの応答: バイト数 =32 時間 <1ms TTL=128
169.254.35.31 からの応答: バイト数 =32 時間 <1ms TTL=128
169.254.35.31 からの応答: バイト数 =32 時間 <1ms TTL=128

169.254.35.31 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 0ms、最大 = 0ms、平均 = 0ms

 IPv4のアドレスで通信しているのが分かる。

 このように、アプリケーションによってはIPv4とIPv6のどちらか適切な方(たぶん、内部では早く名前解決などができた方だと思われる)を選んで通信するようになっている。

スコープIDについて

 ところで上の例では、IPv6アドレスの末尾に「%13」という変わった文字列がついているが、これは「スコープID」と呼ばれる、ネットワーク・インターフェイスの識別番号データだ。先ほどIPv6アドレスは1台のノードに複数つけることができるといったが、複数のインターフェイスがある場合、どのインターフェイスからパケットを送信するかが問題となることがある。例えば自動的に作成されている内部トンネル用インターフェイスから送信しようとしても相手には届かないし、相手先へつながっていないインターフェイス経由で送信してもエラーになる。そういう場合は、送信する元のインターフェイスを指定するために、このスコープIDを指定すればよい。またpingコマンドなどは、パケットを受信したインターフェイスが分かるように、IPv6アドレスの末尾にスコープIDが表示されることがある。

 スコープIDとは、具体的にはネットワーク・インターフェイスの番号である。「%13」なら、13番のインターフェイスを使って送受信したという意味だ。ちなみに、これはローカルのPCのインターフェイス番号である。通信相手のPCのインターフェイス番号ではない。

 インターフェイスの番号は、例えば「route print」コマンドを実行すると確認できる。

C:\>route print …ルーティング・テーブルの表示
==========================================================
インターフェイス一覧 …ここに番号が表示されている
 13...00 15 5d 00 90 48 ..Microsoft Virtual Machine バス ネットワーク アダプター #2
  1........................Software Loopback Interface 1
 12...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter
 14...00 00 00 00 00 00 00 e0 Teredo Tunneling Pseudo-Interface
==========================================================
…(中略)…
IPv6 ルート テーブル …IPv6のルーティング・テーブル
==========================================================
アクティブ ルート:
 If メトリック ネットワーク宛先  ゲートウェイ
  1    306 ::1/128               リンク上 …IPv6のアドレス例(リンク上 の原語はOn-Link)。これはループバック・アドレス
 13    261 fe80::/64             リンク上
 13    261 fe80::ed87:66e3:4fb2:2b4f/128 …割り当てられたIPv6アドレス
                                 リンク上
  1    306 ff00::/8              リンク上 …マルチキャスト・アドレス
 13    261 ff00::/8              リンク上
==========================================================
固定ルート:
  なし

 先頭にある「インターフェイス一覧」の左端に表示されているのがインターフェイス番号である。この場合は13番の「Microsoft Virtual Machine バス ネットワーク アダプター #2」が使われていたことが分かる。

 最後に、Internet Explorer(IE)でIPv6のアドレスを指定した例を紹介しよう。IEでIPv6アドレスを指定するには、[ ] で囲んで「http:// [fe80::f96b:8bcb:ce31:1bd9]/」 のように指定する。囲まずに直接 「http://fe80::f96b:8bcb:ce31:1bd9/」のように指定するとエラーとなる。

Windows Server 2008 R2上のIISへの接続例
IEでIPv6アドレスを直接指定する場合は、[ ] で囲むこと。さもないとエラーになる。

 ちなみにこの状態でnetstatコマンドを実行すると、次のようになる。IPv6経由で接続していると、アドレス表記が長くなるだけで、あとは通常のIPv4使用時と変わらない。TCPやUDPを使う側からすれば、IPv6でもIPv4でもそう大きな違いはないといえる。

C:\>netstat …接続の確認
アクティブな接続

 プロトコル  ローカル アドレス          外部アドレス    状態
 TCP  [fe80::ed87:66e3:4fb2:2b4f%13]:49166  SVR1:http ESTABLISHED

C:\>netstat -n …IPv6アドレスを表示させる

アクティブな接続

 プロトコル  ローカル アドレス          外部アドレス     状態
 TCP  [fe80::ed87:66e3:4fb2:2b4f%13]:49166  [fe80::f96b:8bcb:ce31:1bd9%13]:80  ESTABLISHED


 今回はIPv6アドレスの基礎と、pingでのIPv6の使用例などについてみてきた。ユーザーの視点からすると、IPv6でもアドレス表記が長くなっていることを除けば、特に従来と大きな違いはないようにも見える。だが内部的にはIPv4と比べると、さまざまな点が改良されている。次回はIPv6のパケットの構造について取り上げる。


「Windows管理者のためのIPv6入門」のインデックス

Windows管理者のためのIPv6入門

前のページへ 1|2|3       

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。