前回は、IPv4によるアドレス枯渇問題とその延命策について皆さんに紹介しました。今回は、そのアドレス枯渇問題を根本的に解消する対策である、IPv4の次期バージョン「IPv6」を紹介します。
IPv6とは?
インターネットとともに世界中に普及が進んだIPv4は、ユーザーが増え需要が高まったことで、1990年代には「近い将来、割り当て可能なアドレスが不足してしまう」という予測が発表されました。
前回は、この問題を回避するべく、IPv4アドレスを節約しながら使い続ける技術の仕組みを紹介しました。具体的には、可変長サブネットマスク(VLSM)や、プライベートアドレスの活用、NAT技術などです。
しかし、それらの技術では問題を先延ばしにするだけで根本的な問題の解決に至りません。そこで、将来的なグローバルアドレス不足の解決に向けた次世代IP(IPv6)の開発が必要となりました。
IPv6(Internet Protocol Version 6)はIPv4と同様、OSI参照モデルにおいてネットワーク層に位置付けられる代表的な通信プロトコルです。現在では、IPv4だけではなくIPv6を組織内のネットワークに導入するユーザーも徐々に増えています。
IPv6の特性
IPv6の特性をIPv4と比較しながら確認していきましょう。
アドレス空間の違い
IPv4とIPv6の一番の違いは、アドレス空間の広さにあります。IPv6はアドレス表現のためにIPv4の4倍のビット数を利用します。
IPv4アドレスは32ビットを利用するため2の32乗=4,294,967,296(約43億)個のアドレスを表すことができますが、一方のIPv6アドレスは、4倍の128ビットを利用することで、2の32乗×2の32乗×2の32乗×2の32乗(約43億の4乗)個という膨大なアドレスを表すことができるようになりました。
アドレスの設定方法
IPv6では、ホストへアドレスを設定する方法に新たな仕組みが追加されました。
IPv4の場合、ホストにアドレスを設定する方法は次の2種類です。
1. 手動によるアドレス設定
2. DHCP(アプリケーション層のプロトコル)を使った自動アドレス設定
IPv6では新たに3種類目の以下の方法が利用できるようになりました。 3. ステートレスアドレス自動設定(SLAAC)
SLAAC(Stateless Address Auto Configuration)は、同じネットワーク上のルータから受け取る「ネットワークの情報」と、ホスト自身がMACアドレスを基に生成する「個体を表す情報」を組み合わせることでIPv6アドレスを作り出す仕組みです。
IPv4ではDHCPというプロトコルが動作するサーバの力を借りてアドレスの自動設定を実現していましたが、IPv6ではSLAACの仕組みを導入することでDHCPの助けがなくてもアドレスの自動設定ができるようになりました。
ヘッダーの特徴
IPv4はヘッダーの長さが決まっていないため、一つひとつパケットのサイズを確認しながら通信処理を行う必要があります。
一方IPv6は、通信に必要な最低限の情報を「基本ヘッダー」としてまとめています。オプション機能を利用したいときだけ使う「拡張ヘッダー」と分けることで、特別な通信以外はヘッダーの長さが固定されます。ヘッダーの長さが決まることで、パケットのサイズを確認する処理が不要になり、機器の負荷を下げることにつながります。
パケットの暗号化
IPv4の通信において、セキュリティ確保のためパケットを暗号化するときは、IPsec (Internet Protocol Security) と呼ばれる別のプロトコルを利用します。IPsecには暗号化と同時にデータの書き換えが行われたことを検出できる機能も組み込まれています。
一方のIPv6では、このIPsecの機能がIPの仕組みの中に追加されるようになりました。必要に応じて拡張ヘッダーを使い、IPsecの機能を呼び出すことで、他のプロトコルに頼らずともIPv6の機能だけでパケットの暗号化を実現できるようになりました。
IPv6アドレスの構成
これまでIPv6の特性をIPv4と比較してきました。ここからは、IPv6のアドレスについて確認しましょう。
IPの通信において宛先・送信元となる個々のホストを識別する情報としてIPアドレスを使用することはIPv4もIPv6も変わりありません。いずれもネットワークに接続しているホストのインターフェイスに割り当てられます。
IPv4アドレスが「ネットワーク部」と「ホスト部」という2つの要素を表したのと同様、IPv6アドレスも一つのアドレス内に2つの要素を表しています。
・プレフィックス(前半64ビットの要素)
プレフィックスは、インターフェイスが所属するネットワークを識別する意味に使われます。
・インターフェイスID(後半64ビットの要素)
同一ネットワーク上における個々のホスト識別する意味に使われます。
このように、プレフィックスとインターフェイスIDの2つの要素によって、特定のネットワークとホストを識別することができるようになっています。
また、インターネットで一対一の通信を行うためには、一意のアドレスを持つグローバルユニキャストアドレスを用います。IPv6のグローバルユニキャストアドレスは先頭3ビットが「001」と固定され、それ以降64ビット目までのプレフィックスは以下のように定義されています。
・RIR
/23ビットまでを使い、どの地域のどこの国であるのかを表現します。世界を5つのブロックに分け、地域ごとに決められたアドレスが割り当てられています。各地域ではRIR(Regional Internet Registry)がアドレスを統括しており、日本の場合は、アジア地域なのでAPNIC(Asia-Pacific Network Information Centre)の配下に所属します。APNIC内では、さらに分割した各国や地域ごとにアドレスを管理するNIRs(National Internet Registries)へグローバルアドレスの範囲を割り当てています。日本ではJPNIC(Japan Network Information Center)が国内のアドレスを統括しています。
・ISPプレフィックス
/32ビットまでを使い、JPNICが国内のどこのISPに割り当てるものか、その範囲を表現します。
・サイトプレフィックス
/48ビットまでを使い、ISPが組織や個人に割り当てるアドレスの範囲を表しています。
・ホームサイト/サブネットプレフィックス
/64ビットまでを使い、どのようなロケーションを組んでいくのか、ユーザーがアドレス構成を考えます。
このようにインターネットのアドレス管理組織から割り当てられたアドレスを用いて、ユーザーはアドレス設計を行います。また、プレフィックスの情報を見ることで、どこの地域、国のどのISPへ割り当てたものなのか、識別ができるようになっています。
IPv6アドレスの表記方法
128ビットで表されるIPv6アドレスは、そのまま2進数で読み書きすることは現実的ではありません。そのため、次のような表記方法が定められています。
- 128ビットを16ビットずつ、8つの(フィールド)という単位に分け、コロン(:)で区切ります
- 各フィールドを2進数から4桁の16進数へ変換します
ここまでで、32桁の16進数でアドレスが表されました。
そして、さらに32桁のアドレス表記を省略する方法も定められています。
先頭が"0"で始まるフィールドは、一文字は必ず残して"0"を省略可能
例「:0010:」→「:10:」、「:0000:」→「:0:」0のフィールドが連続する場合(::)と省略することが可能
例「:0:0:」→「::」
複数箇所の省略が可能な場合は、最も省略範囲が広い箇所を省略します。
上図では、省略範囲が同じ場合なので、先頭に近い箇所を省略しています。
ちなみに、省略表記(::)が利用できるのは1アドレス内で1度だけです。仮に、(::)を2箇所で利用してしまうと、それぞれが何フィールド省略したのか特定できなくなるためです。
このようなアドレスの省略を使うことで桁数が減り、アドレスの入力や確認がしやすくなります。
まとめ
・IPv4のアドレス枯渇問題を解消する対策のひとつとしてIPv6が新たに策定された
・IPv6になると大きなアドレス空間を持ち、膨大なアドレスを利用することができる
・IPv6では、SLAACという仕組みを用いてアドレスを自動生成する機能を追加した
・IPv6のアドレス構成は、ネットワーク部を表す「プレフィックス」とホスト部を表す「インターフェイスID」の2つの要素で成り立っている
・IPv6アドレスの省略表記ルールはRFCによって定められている
次回は、グローバルアドレスの割り当て方について、その仕組みを紹介します。
著者プロフィール
大谷 星佳(おおたに せいか)
ネットワンシステムズ株式会社
ビジネス開発本部イノベーション推進部ネットワークアカデミーチーム所属
2020年ネットワンシステムズ入社。シスコシステムズ社認定インストラクター資格を取得し、社内外に向けて、主にネットワーク分野の研修を提供。初心者に向けての研修を得意としている。弊社が取り組む大学との共同開発カリキュラム提供では、実行担当者として産学連携の活動もしている。また、近年増加しているオンライン研修の品質向上を目指し、研修方式の調査・改善に取り組んでいる。