従来のIPアドレスを128bit幅にして、利用可能なアドレス空間を大幅に拡大したIPv6。IoTやモバイルデバイスの普及などでIPアドレスの需要は今後大幅に増えそうであり、IPv6の重要性は増している。
「IPv6(Internet Protocol version 6)」は、現在広く使われているTCP/IPのIPv4(IP version 4)を拡張して、より多くのネットワークデバイスを接続できるようにするためのTCP/IPの拡張仕様のことである。アドレス幅の拡大とともに、従来のIPv4仕様の見直しも行われているため、IPv6に移行することで次のようなメリットが期待できる。
従来のIPv4アドレスは32bit幅しかなく、最大でも43億個程度しかユニークなアドレスを確保できなかった。これでは世界中のコンピュータや社内のコンピュータ全てに対して、ユニークなIPアドレスを割り当てることは不可能であった。
特にインターネットに接続するためのコンピュータに必要なグローバルIPアドレスの不足が顕著であり、新たなグローバルIPv4アドレスが割り当てられにくくなっている(現在は、プロバイダーが持つIPv4アドレスの在庫やアドレスの再配置などでやりくりしている状態)。
これを解決するために考案されたのが、アドレス幅を大幅に拡大するというアイデアである。IPv6ではIPv4の4倍となる128bit幅という広大なアドレス空間を持たせることにしたので、10の38乗個以上という、とてつもなく多くのIPアドレスを表現することができるようになった。
これだけあれば世界中のプロバイダーや組織に対して十分なIPアドレスを配布できるし、ルーティングの効率などを考慮した、管理しやすいアドレス割り当ても可能になる。
IPv6のアドレス幅は、2進数で128bitもある。これだけ長いと、IPv4の「10.20.30.1」のような10進数を使った表記は面倒になるので、16桁の16進数を使った方法で表現する。
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を表す。 |
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は、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はIPv4とはIPアドレス体系がまったく異なる一方で、上位のTCPやUDPはほぼそのまま互換性がある。IPパケットの最小サイズは、IPv4が20bytesだったのに対し、IPv6パケットでは40bytesになっているという違いはあるものの、その上位のプロトコルレベルでは互換性が維持されている。
ネットワークを設計したり、ルータやファイアウォールを設定するときは、IPv6用のルールを追加するなどの対応が必要だが、TCPやUDPのポート番号などの設定はそのまま利用できる。
IPv6でもDNS(DNSv6)が利用できるので、通常は通信相手がIPv4とIPv6のどちらであるかを意識する必要はなく、アプリケーションではFQDN名で通信相手を指定すればよいだろう。
必要なら直接IPv6アドレスを指定して通信することも可能である。例えばInternet ExplorerのようなWebブラウザなら、アドレスバーに 「http://[fe80::29a6:10d1:1ba6:4e44]」のように角括弧で囲んで入力すれば、IPv6でWebサーバにアクセスできる。
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のどちらでも利用できるようになっていることが多い。
以下は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」や「プロキシ」は、IPv4ではインターネットとイントラネットの接続境界点において、ネットワークアドレスやポート番号を変換する場合によく使われる技術である。
これと同様に、IPv4パケットとIPv6パケットの内容を変換して、相互に通信できるようにするのがこの方式である。IPv4しかサポートしていないホスト(サーバなど)に対してIPv6で接続したり、逆にIPv6しかサポートしていないホストに対してIPv4で接続したりする場合に使うことができる。既存のネットワーク構成を変えることなくIPv6に対応しやすい。
現実のネットワークでは、複数の方式を組み合わせて段階的にIPv6化することになるだろう。例えば、社内はIPv4で構築したネットワークのままにするが、インターネットとの境界でNATなどを導入してIPv4やIPv6のサイトへ接続したり、拠点間をトンネルで相互接続したりする。
IPv4アドレスの枯渇に伴い、グローバルなIPv4アドレスの割り当てが完全に終了する時期も近い。そう遠くないうちに、IPv6でしか利用できないWebサイトなども出てくるだろう。
そのような事態に備え、例えばiOSのアプリでは2015年からIPv6対応が必須となっているなど、IPv6へ移行するための環境は整いつつある(次の記事参照)。
今後はIoTやモバイルデバイスなどの普及に伴い、IPアドレスを必要とする機器が急速に増えることが見込まれる。いよいよIPv6への移行が本格的に始まりそうである。
Copyright© Digital Advantage Corp. All Rights Reserved.