IPv6の基礎:その概要と重要性
インターネットはIPv4アドレスが枯渇しています。IPv6は128ビットアドレスとよりクリーンな設計でこの問題を解決します。知っておくべきことをご紹介します。
IPv6が存在する理由#
IPv4アドレスは枯渇しました。「枯渇するかもしれない」や「枯渇する可能性がある」ではなく、実際に枯渇したのです。IANAは2011年に最後のブロックを地域レジストリに割り当て、2015年までにはほとんどの地域でアドレスプールが使い果たされました。
IPv4の32ビットアドレス空間では約43億個のアドレスが利用可能です。1981年当時は無限に思えましたが、スマートフォン、IoTデバイス、サーバー、その他インターネットに接続されるあらゆるものが、予想を上回る速さでこれらのアドレスを消費しました。私たちはNAT、キャリアグレードNAT、そしてますます複雑なハックで対処してきました。これらのハックは機能しますが、遅延を増やし、エンドツーエンドの接続性を損ない、ネットワーク管理をより困難にします。
IPv6は128ビットアドレスを使用します。これは340澗個のアドレス、つまり地球表面の1平方メートルあたり数十億のアドレスを割り当てるのに十分な数です。枯渇することはありません。
128ビットアドレス形式#
IPv6アドレスは次のようになります:
2001:0db8:85a3:0000:0000:8a2e:0370:7334コロンで区切られた4桁の16進数8グループです。各グループは16ビットを表します(16進数4桁 × 1桁あたり4ビット = 16ビット)。8グループ × 16ビット = 合計128ビットです。
16進数は0-9とa-fを使用します。大文字小文字は区別されません。2001:DB8::1と2001:db8::1は同一です。
圧縮ルール#
32桁の16進数をすべて書き出すのは面倒です。IPv6にはアドレスを短縮するための2つの圧縮ルールがあります。
ルール1:先頭のゼロを省略#
任意のグループから先頭のゼロを削除できます:
2001:0db8:0000:0042:0000:8a2e:0370:7334
↓
2001:db8:0:42:0:8a2e:370:7334各グループには少なくとも1桁が必要です。0000を何もない状態に圧縮することはできません。それはルール2が処理します。
ルール2:連続するゼロを::に置き換え#
連続するすべてゼロのグループの1つのシーケンスを::にできます。これはアドレスごとに1回だけ機能します。2回使用すると曖昧になります。各::が何個のゼログループを表すか判断できなくなるためです。
2001:db8:0:0:0:0:0:1
↓
2001:db8::1最長のゼロの連続を選択します。同じ長さの連続が2つある場合は、最初のものを圧縮します(ほとんどのツールは慣例として最も左側を圧縮します)。
アドレスごとに1つの::
::は1回だけ使用できます。アドレス2001::db8::1は無効です。各::が何個のゼログループを表すか判断できないためです。
実用的な例#
実際のアドレスでの圧縮の動作は次のとおりです:
| 完全なアドレス | 圧縮形式 | 備考 |
|---|---|---|
2001:0db8:0000:0000:0000:0000:0000:0001 | 2001:db8::1 | ホスト1を持つドキュメンテーションプレフィックス |
fe80:0000:0000:0000:0000:0000:0000:0001 | fe80::1 | リンクローカルループバック |
0000:0000:0000:0000:0000:0000:0000:0001 | ::1 | グローバルループバック |
0000:0000:0000:0000:0000:0000:0000:0000 | :: | 未指定アドレス |
2001:0db8:85a3:0000:0000:8a2e:0370:7334 | 2001:db8:85a3::8a2e:370:7334 | アドレス中央のゼロ |
IPv6バリデーターで異なる形式を試して、圧縮の仕組みを確認してください。
IPv6とIPv4:単なる大きさ以上の違い#
ほとんどの比較はアドレス空間に焦点を当てています。それは妥当です。これがIPv6が存在する主な理由です。しかし、プロトコルの再設計は他の問題も修正しました。
| 機能 | IPv4 | IPv6 | 影響 |
|---|---|---|---|
| アドレス長 | 32ビット | 128ビット | 340澗対43億アドレス |
| アドレス形式 | ドット10進数 | コロン16進数 | ニブル境界でのサブネット化が容易 |
| ヘッダーサイズ | 20-60バイト(可変) | 40バイト(固定) | より高速なルーティング判断 |
| ヘッダーチェックサム | あり | なし | ルーターのパケットごとの処理が軽減 |
| フラグメンテーション | 任意のルーター | 送信元のみ | ルーターの処理が軽減、パスMTU検出が必須 |
| NAT要件 | ほぼ普遍的 | 不要 | エンドツーエンド接続性の復元 |
| IPsec | 後付け | 最初から設計に組み込み | より簡単な暗号化通信 |
| 自動設定 | DHCP必須 | SLAAC組み込み | デバイスが自己設定可能 |
アドレス空間を超える主な改善点#
簡素化されたヘッダー#
IPv4のヘッダーには12の必須フィールドがあり、オプションによって60バイトまで拡張されます。ルーターはすべてのパケットに対してこれらすべてを解析する必要があります。IPv6のヘッダーは常に40バイトで8フィールドです。拡張ヘッダーは追加のものを処理しますが、ほとんどのパケットには不要です。ルーターはパケットをより高速に処理します。
NATが不要#
IPv4では、ほぼすべての家庭やオフィスのネットワークがNATの背後に隠れています。NATは、IPアドレスを埋め込むプロトコル(VoIP用のSIPなど)を破壊し、ピアツーピア接続を困難にし、ルーターに状態を追加します。すべてに十分なIPv6アドレスがあれば、デバイスはグローバルにルーティング可能なアドレスを持つことができます。ラップトップ、スマートフォン、スマート冷蔵庫は、必要に応じてすべてエンドツーエンドで到達可能になります(ファイアウォールは依然として存在します。NATなしで着信トラフィックをブロックできます)。
自動設定(SLAAC)#
IPv6デバイスはSLAAC(ステートレスアドレス自動設定)を使用して自己設定できます。ルーターがネットワークプレフィックスをアドバタイズし、デバイスが独自のアドレスを生成します。DHCPサーバーは不要です。集中管理のためにDHCPv6を使用することもできますが、基本的な接続性はそれなしで機能します。
IPsecの組み込み#
IPv4は展開の数年後にIPsecを追加しました。IPv6は最初からそれを含んでいました。設計がよりクリーンです(IPsecは現在、必須ではなく推奨ですが、統合はIPv4の後付けよりも優れています)。
実世界でのパフォーマンス
実際には、IPv6はしばしばIPv4よりも優れたパフォーマンスを発揮します。FacebookはIPv6ユーザーの接続が10〜15%高速であると報告しています。IPv6トラフィックはより直接的なパスを通るためです。キャリアグレードNATがなく、ミドルボックスが少なく、複雑さが少ないのです。
目にする特別なアドレス#
ループバック:::1#
IPv6ループバックアドレスです。IPv4の127.0.0.1と同じ目的です。このアドレスへのトラフィックはローカルマシンに留まります。IPv6にはIPv4の127.0.0.0/8ブロック全体ではなく、1つのループバックアドレスしかありません。
未指定:::#
「アドレスなし」または「任意のアドレス」を表します。デバイスがまだアドレスを持っていない場合、またはすべてのインターフェイスにバインドするリスニングソケット設定で、これが表示されます。
リンクローカル:fe80::/10#
すべてのIPv6インターフェイスはfe80::で始まるリンクローカルアドレスを自動的に生成します。これらのアドレスはローカルネットワークセグメントでのみ機能します。ルーターはそれらを転送しません。近隣探索、ルーターアドバタイズメント、ローカル通信に不可欠です。インターフェイスは、サフィックスの生成方法に応じて、fe80::1またはfe80::a4b2:c3d4:e5f6:7890になる可能性があります。
ドキュメンテーション:2001:db8::/32#
例とドキュメンテーション用に予約されています。2001:db8:で始まるアドレスは、実際のインターネットで割り当てられることは決してありません。そのため、チュートリアル、RFC、およびこれらの例で見られます。ドキュメントを書いている場合は、読者が誤って本番アドレスを設定しないように、2001:db8::プレフィックスを使用してください。
URLでのIPv6#
URLでのIPv6アドレスには角括弧が必要です。これらがないと、アドレス内のコロンがポート区切り文字と競合します:
http://[2001:db8::1]/
http://[2001:db8::1]:8080/
https://[2001:db8:85a3::8a2e:370:7334]/api/endpoint角括弧により、アドレスがどこで終わり、ポートがどこから始まるかが明確になります。この表記法は、ブラウザURL、設定ファイル、およびIPv6アドレスを他のコンポーネントと組み合わせる他の場所で使用します。
現在の状況#
IPv6の採用は現実ですが、不均一です。Googleは、トラフィックの約40%がIPv6経由で到着すると報告しています。主要なクラウドプロバイダー(AWS、Google Cloud、Azure)、CDN(Cloudflare、Akamai)、およびISP(Comcast、T-Mobile、Deutsche Telekom)は強力なIPv6サポートを持っています。モバイルネットワークは、必要に応じてIPv4への変換を使用してIPv6のみで実行されることがよくあります。
企業ネットワークは遅れています。多くの内部ツールやセキュリティアプライアンスは、依然としてIPv6をオプションとして扱っています。これは変化していますが、ゆっくりです。
良いニュースは、IPv4とIPv6が並行して動作することです。デュアルスタックネットワークは両方をサポートします。スイッチを切り替えて一晩ですべてを変換する必要はありません。しかし、新しいシステムを構築している場合は、最初からIPv6用に設計してください。後で追加する方が難しいです。
関連記事#
- IPv6アドレスタイプ:グローバル、リンクローカル、マルチキャストの解説 - さまざまなタイプのIPv6アドレスと、それぞれの用途について詳しく学びます。
- IPv6サブネット化:/48から/64へ - IPv6アドレス空間をサブネットに分割する方法を学びます。IPv4よりもシンプルです。
実際に試してみましょう
IPv6バリデーターを使用して、IPv6アドレスの記述と圧縮を練習してください。正規形式が表示され、一般的な間違いがキャッチされます。