連載
» 2016年12月07日 05時00分 UPDATE

Tech Basics/Keyword:IPv6(Internet Protocol version 6)

従来のIPアドレスを128bit幅にして、利用可能なアドレス空間を大幅に拡大したIPv6。IoTやモバイルデバイスの普及などでIPアドレスの需要は今後大幅に増えそうであり、IPv6の重要性は増している。

[打越浩幸,デジタルアドバンテージ]
「Tech Basics/Keyword」のインデックス

連載目次

IPv6とは

 「IPv6(Internet Protocol version 6)」は、現在広く使われているTCP/IPIPv4(IP version 4)を拡張して、より多くのネットワークデバイスを接続できるようにするためのTCP/IPの拡張仕様のことである。アドレス幅の拡大とともに、従来のIPv4仕様の見直しも行われているため、IPv6に移行することで次のようなメリットが期待できる。

  • IPアドレス幅の拡大による広大なアドレス空間の実現
  • IPアドレスの設定の自動化
  • セキュリティ(暗号化)機能の標準装備
  • ヘッダサイズの固定化やエラー検出コードの削除による、ルーティングパフォーマンスの向上

128bit幅の広大なアドレス空間をサポートするIPv6

 従来のIPv4アドレスは32bit幅しかなく、最大でも43億個程度しかユニークなアドレスを確保できなかった。これでは世界中のコンピュータや社内のコンピュータ全てに対して、ユニークなIPアドレスを割り当てることは不可能であった。

 特にインターネットに接続するためのコンピュータに必要なグローバルIPアドレスの不足が顕著であり、新たなグローバルIPv4アドレスが割り当てられにくくなっている(現在は、プロバイダーが持つIPv4アドレスの在庫やアドレスの再配置などでやりくりしている状態)。

 これを解決するために考案されたのが、アドレス幅を大幅に拡大するというアイデアである。IPv6ではIPv4の4倍となる128bit幅という広大なアドレス空間を持たせることにしたので、10の38乗個以上という、とてつもなく多くのIPアドレスを表現することができるようになった。

 これだけあれば世界中のプロバイダーや組織に対して十分なIPアドレスを配布できるし、ルーティングの効率などを考慮した、管理しやすいアドレス割り当ても可能になる。

IPv6のアドレス表記

 IPv6のアドレス幅は、2進数で128bitもある。これだけ長いと、IPv4の「10.20.30.1」のような10進数を使った表記は面倒になるので、16桁の16進数を使った方法で表現する。

IPv6アドレスの表現方法 IPv6アドレスの表現方法
128bitのIPv6アドレスは16進数で表現する。まず4bitごとに16進数1桁に変換し、さらにそれを4桁ごとにまとめて「:」記号で区切って並べる。途中に連続する「:0:」があれば、それらをまとめて「::」にするなどして、さらに短く表現する。

IPv6アドレスの種類

 IPv4にグローバルIPv4アドレスやローカルIPv4アドレス、ブロードキャストアドレスなどがあったように、IPv6のアドレスにも用途別に幾つかの種類がある。

プリフィックス 2進数表記 用途
2000::/3 001 グローバルユニキャストアドレス(GUA)。IPv4でいうところのグローバルIPアドレス。インターネットに接続したいホストは、プロバイダーなどからこのアドレスを割り当ててもらう
fc00::/7 1111 110 ユニークローカルユニキャストアドレス(ULA)。IPv4でいうところのプライベートIPアドレス。組織内だけで閉じたネットワークで利用する場合は、このアドレス空間を利用する
fe80::/10 1111 1110 10 リンクローカルユニキャストアドレス。同一ネットワークセグメント上のホスト同士で、(IPv4のICMPやARPに相当する)管理用パケットのやりとりなどに利用される
ff00::/8 1111 1111 マルチキャストアドレス。複数のホストへ向けて同時に送信する場合に使用する
IPv6アドレスの種類(主なもの)
「/3」や「/7」は、IPv6アドレスの最上位からbit数を表す。例えば「2000::/3」は、最上位から3bitと言う意味。それが「001(2進数)」ならGUAを表す。

●グローバルユニキャストアドレス(GUA)

 IPv6でプロバイダーなどからGUAのアドレスブロックの割り当てを受けると、128bitのうち通常は48bit分が割り当てられる(64bitの場合もある)。残りの80bitは組織内で自由に割り当てて利用できる。具体的には次のようなアドレスパターンを持つ。これだけあれば、社内のホスト全てにグローバルなIPアドレスを十分に余裕を持って割り当てられるだろう。

bit数 用途 意味
48bit グローバルルーティングプリフィックス 2000::/48。先頭の3bitが「001」で、残り45bitがユニークになるようにプロバイダーなどから割り当てられる
16bit サブネットID 割り当てられた組織内でサブネット分割のためのIDとして利用可能なフィールド。各組織内で割り当て、管理する
64bit インタフェースID ネットワーク内のホストに割り当てるユニークな数値。各組織内で割り当て、管理する
グローバルユニキャストアドレスGUAのアドレス構造
IPv6でインターネットに接続する組織は、プロバイダーから48bitのグローバルなアドレスを割り当ててもらう。下位の80bit(16bit+64bit)は組織内で管理する。これだけあれば、かなり柔軟にアドレス割り当てを計画できる。

●ユニークローカルユニキャストアドレス(ULA)

 ULAは、IPv4でいうところの、プライベートIPアドレスに相当する。組織内だけで独自にIPv6アドレスを割り当てて使うことが可能である。

 IPv6では広大なグローバルアドレス空間が利用できるため、いちいちプライベートなIPアドレスを利用しなくても、グローバルなIPアドレスを組織内のホストにそのまま直接割り当て可能だ。

 だがセキュリティのために、組織内部で閉じたローカルなアドレス空間を作りたい場合は、このULAのアドレス空間を利用できる。

bit数 用途 意味
7bit プリフィックス FC00::/7。先頭の7bitが「1111 110」
1bit Lフラグ グローバルIDの使い方を指定するフラグ
40bit グローバルID 組織内で任意に設定可能なIDフィールド
16bit サブネットID 割り当てられた組織内で、サブネット分割のためのIDとして利用可能なフィールド。各組織内で割り当て、管理する
64bit インタフェースID インタフェースごとのID。各組織内で割り当て、管理する
ユニークローカルユニキャストアドレスULAのアドレス構造
FC00://7は組織内で自由に使用してよいIPアドレス。インターネットへはルーティングされない。

●リンクローカルユニキャストアドレス

 リンクローカルユニキャストアドレスすなわち「fe80::/10」は、同一ネットワークセグメント上のホスト同士でのみ通信する場合に利用するアドレスである(このIPv6アドレスはルータを越えて通信する場合には利用できない)。

 IPv6では、各インタフェースがIPv6のホストとして有効な場合は、必ず1つはリンクローカルユニキャストアドレスを持つことが要請されている。IPv6では、このfe80::/10宛のパケットを使って管理用のデータをやりとりし、通信相手を検出する。

IPv6とTCP/IPの関係

 IPv6はIPv4とはIPアドレス体系がまったく異なる一方で、上位のTCPやUDPはほぼそのまま互換性がある。IPパケットの最小サイズは、IPv4が20bytesだったのに対し、IPv6パケットでは40bytesになっているという違いはあるものの、その上位のプロトコルレベルでは互換性が維持されている。

 ネットワークを設計したり、ルータやファイアウォールを設定するときは、IPv6用のルールを追加するなどの対応が必要だが、TCPやUDPのポート番号などの設定はそのまま利用できる。

TCP/IPのプロトコル階層とIPv6 TCP/IPのプロトコル階層とIPv6
TCP/IPは概念的には4階層のプロトコルだ。アプリケーションが利用するのがTCPかUDPで、TCPやUDPのパケットを運ぶのがIPv4やIPv6の役割である。ICMPやARPは、IPv4ではIPとは別のプロトコルであったが、IPv6の場合はリンクローカルアドレスを使って同等の機能を実現している。

 IPv6でもDNS(DNSv6)が利用できるので、通常は通信相手がIPv4とIPv6のどちらであるかを意識する必要はなく、アプリケーションではFQDN名で通信相手を指定すればよいだろう。

 必要なら直接IPv6アドレスを指定して通信することも可能である。例えばInternet ExplorerのようなWebブラウザなら、アドレスバーに 「http://[fe80::29a6:10d1:1ba6:4e44]」のように角括弧で囲んで入力すれば、IPv6でWebサーバにアクセスできる。

IPv4からIPv6への移行と共存

 IPv4とIPv6はアドレス体系が異なるため、IPv4とIPv6のホストは直接通信することはできないし、IPv4の機器(ルータやファイアウォールなど)ではIPv6を扱うこともできない(イーサネットのスイッチなど、L2レベルで動作する機器はそのまま利用可能)。だからといって、全てのネットワーク機器をすぐにIPv6に切り替えるわけにもいかない。IPv6に対応していないシステムやアプリケーションなども少なくないからだ。

 そのため現実のシステムでは、IPv4ベースのネットワークやシステムを使いつつ、今後はIPv6対応の機器を徐々に増やしながらIPv6への移行を行うことになるだろう。そこで必要になるのがIPv4とIPv6の相互運用性である。

 IPv4ネットワークとIPv6ネットワークの相互運用性を確保するための技術としては、次のようなものがある。

方式 内容
デュアルスタック IPv4とIPv6の両方をサポートし、どちらでも通信できるようにする
トンネリング トンネリング技術を使って、IPv6トラフィックをIPv4上に流したり、逆にIPv4トラフィックをIPv6上に流したりする
NAT/プロキシ IPv4とIPv6のパケットデータを変換して通信したり、プロキシサーバで代理受信したりして、通信を中継する
IPv6への移行で利用される主な技術

●デュアルスタック方式

 これは1台のホストに、IPv4とIPv6の両方のプロトコルスタック(ネットワーク機能)を実装して、どちらでも通信できるようにする方式である。現在のOSではほとんどがこのデュアルスタックを実装しているので、通信先がIPv4とIPv6のどちらでも利用できるようになっていることが多い。

IPv4とIPv6のデュアルスタック構成 IPv4とIPv6のデュアルスタック構成
Windows OSをはじめ、現在のシステムではIPv4とIPv6の両方をサポートしていることが多く、相手がどちらでも通信できる。

 以下はWindows OSの例である。

※デュアルスタックをサポートしているWindows 10上でIPアドレスを確認した例
C:\>ipconfig

Windows IP 構成

イーサネット アダプター Ethernet0:

   接続固有の DNS サフィックス . : example.jp
   IPv6 アドレス . . . . . . . . : 2001:db8:abba:1001:f597:7b5f:1caa:7a75 ……IPv6アドレス1
   一時 IPv6 アドレス. . . . . . : 2001:db8:abba:1001:c91a:d49f:eaaf:242e ……IPv6アドレス2

   リンクローカル IPv6 アドレス. : fe80::f597:7b5f:1caa:7a75%2 ……IPv6のリンクローカルアドレス

   IPv4 アドレス . . . . . . . . : 10.20.30.100 ……IPv4アドレス
   サブネット マスク . . . . . . : 255.255.255.0
   デフォルト ゲートウェイ . . . : 10.20.30.1
…(以下省略)…



●トンネリング方式

 「トンネリング」とは、2台のホストや拠点間に仮想的なトンネルを作成し、その中にネットワークトラフィックを流す方式である。離れた場所にある2つのIPv4ネットワーク同士をIPv6上に構築したトンネルを経由してつないだり、逆に、2つのIPv6ネットワーク同士をIPv4上に構築したトンネルを経由してつないだりする。

●NAT/プロキシ方式

 「NAT」や「プロキシ」は、IPv4ではインターネットとイントラネットの接続境界点において、ネットワークアドレスやポート番号を変換する場合によく使われる技術である。

 これと同様に、IPv4パケットとIPv6パケットの内容を変換して、相互に通信できるようにするのがこの方式である。IPv4しかサポートしていないホスト(サーバなど)に対してIPv6で接続したり、逆にIPv6しかサポートしていないホストに対してIPv4で接続したりする場合に使うことができる。既存のネットワーク構成を変えることなくIPv6に対応しやすい。

●複数の方式の組み合わせ

 現実のネットワークでは、複数の方式を組み合わせて段階的にIPv6化することになるだろう。例えば、社内はIPv4で構築したネットワークのままにするが、インターネットとの境界でNATなどを導入してIPv4やIPv6のサイトへ接続したり、拠点間をトンネルで相互接続したりする。

IPv6の導入パターンの例 IPv6の導入パターンの例
そう遠くない将来、インターネットに接続するためのグローバルIPv4アドレスの割り当てが受けられなくなるだろう。すると、インターネットへの接続にはIPv6が必須になる。その場合は、例えば組織内ではIPv4アドレス体系を維持したまま、NATを使ってインターネットへIPv6接続したり、リモートオフィスにはIPv4を通す仮想的なトンネルを使って接続したりする、などの対応が必要になる。この方法は、すべての機器をIPv6対応させるよりも導入が簡単である。IPv4でしかアクセスできないサイトへは、IPv4とIPv6を相互に接続/中継するサービスなどが利用できる。


 IPv4アドレスの枯渇に伴い、グローバルなIPv4アドレスの割り当てが完全に終了する時期も近い。そう遠くないうちに、IPv6でしか利用できないWebサイトなども出てくるだろう。

 そのような事態に備え、例えばiOSのアプリでは2015年からIPv6対応が必須となっているなど、IPv6へ移行するための環境は整いつつある(次の記事参照)。

 今後はIoTやモバイルデバイスなどの普及に伴い、IPアドレスを必要とする機器が急速に増えることが見込まれる。いよいよIPv6への移行が本格的に始まりそうである。

■関連リンク


「Tech Basics/Keyword」のインデックス

Tech Basics/Keyword

Copyright© 1999-2017 Digital Advantage Corp. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

Touch Barという新UIを得た「MacBook Pro」、プレゼント!

この記事に関連するホワイトペーパー

RSSについて

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

メールマガジン登録

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