IPv6 が生まれた理由
IPv6(RFC 8200)は、IPv4 の 43 億個のアドレスが尽きることが明らかになった 1990 年代に設計されました。IPv6 アドレスは 128 ビット、つまり 2¹²⁸(約 3.4 × 10³⁸)個のアドレスがあります。大事なのは数の大きさではなく、どのネットワークも必要なだけのアドレス空間を得られ、すべての機器が再び世界中から到達可能なアドレスを持てる、つまり NAT が不要になる点です。
IPv6 は IPv4 のアップグレードではなく、2 つのプロトコルは並行して動きます(デュアルスタック)。現在、主要サービスへの通信のうち大きな、そして増え続ける割合が IPv6 を使っており、特にモバイル回線で顕著です。
表記:16 進数のグループ
IPv6 アドレスは、4 桁の 16 進数を 8 グループ、コロンで区切って書きます。
2001:0db8:0000:0000:0000:ff00:0042:8329
1 グループは 16 ビットです。16 進数の数字は 0〜9 と a〜f で、大文字・小文字は区別されませんが、慣例として小文字で書きます。
省略のルール
長いゼロの連続はよく現れるため、2 つの省略ルールがあり(RFC 4291)、RFC 5952 がその唯一正しい適用方法を定めています。
- 各グループの先頭のゼロを省く:
0db8→db8、0042→42、0000→0。 - 連続する 0 のグループを 1 か所だけ
::に置き換える:最も長い連続(同じ長さなら最初のもの)で、2 グループ以上にわたる場合に限ります。::は 1 回しか使えません。2 回以上使うとアドレスが一意に決まらなくなるためです。
こうして 2001:0db8:0000:0000:0000:ff00:0042:8329 は 2001:db8::ff00:42:8329 になります。ループバックアドレス 0:0:0:0:0:0:0:1 は ::1、未指定アドレスは単に :: です。
下のエクスプローラーで任意のアドレスを試してみてください。完全表記と正規表記を並べて表示します。
完全表記
省略表記
2001:db8::ff00:42:8329
スコープ: 特殊用途 · Documentation (2001:db8::/32)
プレフィックスと /64
IPv6 も IPv4 と同じく CIDR 表記を使います。典型的なグローバルユニキャストアドレスは次のように分かれます。
- ルーティングプレフィックス(通常 /48 または /56)— プロバイダーが拠点に割り当てます。
- サブネット ID — /64 までのビットで、拠点内のネットワークに番号を付けます。/48 には 65,536 個のサブネットがあります。
- インターフェース ID(下位 64 ビット)— ネットワーク上の機器を識別します。
1 つの LAN はほぼ必ず /64 です。ステートレスアドレス自動設定(SLAAC)はこれを前提としており、機器は自分でインターフェース ID を選びます。現在はプライバシー保護のためランダムに生成され(RFC 8981)、定期的に変わります。
よく見かけるアドレスの種類
- グローバルユニキャスト
2000::/3— 公開されたルーティング可能なアドレス。 - リンクローカル
fe80::/10— すべての IPv6 インターフェースが持ち、同じリンク内でのみ有効。近隣探索やルーティングプロトコルで使われます。 - ユニークローカル
fc00::/7(実際にはfd00::/8)— プライベートアドレスに相当する IPv6 アドレス(RFC 4193)。 - マルチキャスト
ff00::/8— IPv6 にはブロードキャストがなく、マルチキャストグループが代わりを務めます。 - ループバック
::1と未指定::。 - IPv4 射影
::ffff:0:0/96— IPv6 のソフトウェアが IPv4 の相手を表す形式。例:::ffff:192.0.2.1。 - ドキュメント用
2001:db8::/32と3fff::/20— このページのような例示のためのアドレス。
特殊用途の IPv6 ブロック
予約されている IPv6 ブロックの一覧です。このサイトの分類機能が使う IANA のレジストリから生成しています。
| ブロック | 用途 | 参照 | グローバル到達可能 |
|---|---|---|---|
| ::/128 | Unspecified Address | RFC 4291 | いいえ |
| ::1/128 | Loopback Address | RFC 4291 | いいえ |
| ::ffff:0:0/96 | IPv4-mapped Address | RFC 4291 | いいえ |
| 64:ff9b::/96 | IPv4-IPv6 Translation (NAT64) | RFC 6052 | はい |
| 64:ff9b:1::/48 | Local-use IPv4/IPv6 Translation | RFC 8215 | いいえ |
| 100::/64 | Discard-Only Address Block | RFC 6666 | いいえ |
| 2001::/32 | TEREDO | RFC 4380 | いいえ |
| 2001:2::/48 | Benchmarking | RFC 5180 | いいえ |
| 2001:db8::/32 | Documentation | RFC 3849 | いいえ |
| 2001:10::/28 | Deprecated (ORCHID) | RFC 4843 | いいえ |
| 2001:20::/28 | ORCHIDv2 | RFC 7343 | はい |
| 2002::/16 | 6to4 | RFC 3056 | いいえ |
| 3fff::/20 | Documentation | RFC 9637 | いいえ |
| 5f00::/16 | Segment Routing (SRv6) SIDs | RFC 9602 | いいえ |
| fc00::/7 | Unique-Local | RFC 4193 | いいえ |
| fe80::/10 | Link-Local Unicast | RFC 4291 | いいえ |
| ff00::/8 | Multicast | RFC 4291 | いいえ |
デュアルスタックと、このサイトが両方のアドレスを検出する方法
ブラウザは一度に 1 つのアドレスファミリーで接続します。両方が使える場合は通常 IPv6 を優先します(Happy Eyeballs、RFC 8305)。両方のアドレスを表示するために、ipaddress.si はブラウザから追加で 2 つのホスト名にアクセスします。1 つは IPv4(A)レコードだけ、もう 1 つは IPv6(AAAA)レコードだけを持つホスト名です。それぞれが見たアドレスが、そのファミリーでのあなたのアドレスです。IPv6 のリクエストが失敗した場合、あなたの接続では IPv6 が使えません。
よくある質問
- IPv6 が使えるかどうかを確認するには?
- このサイトのトップページを開いてください。メインのアドレスまたは IPv6 の行に IPv6 アドレスが表示されていれば、接続は IPv6 に対応しています。
- IPv6 は IPv4 より速いですか?
- 本質的に速いわけではありませんが、速くなることはあります。IPv6 の通信はキャリアグレード NAT を経由しないことが多く、中継と状態管理によるボトルネックが 1 つ減るためです。
- IPv6 でもファイアウォールは必要ですか?
- 必要です。NAT がないと機器は世界中からルーティング可能なアドレスを持つことになります。求められていない着信をブロックするステートフルファイアウォールが、NAT が暗黙的に果たしていた保護を担います。
- IPv6 アドレスが頻繁に変わるのはなぜ?
- プライバシー拡張(RFC 8981)が一時的なインターフェース ID を生成して入れ替えるため、ネットワークをまたいで機器を追跡されにくくなります。/64 のプレフィックスは通常変わりません。