IPv4 と IPv6:表記、特殊範囲、移行戦略の現状

約8分

IPv4 アドレス枯渇は 2010 年代に語られて久しい話題ですが、IPv6 への移行は今なお完了していません。本記事では IPv4 と IPv6 の表記の違い、特殊な予約範囲、そして「IPv4 だけ」「IPv6 だけ」「両方」という現代の運用形態を整理します。

アドレス長:32 bit と 128 bit

項目IPv4IPv6
アドレス長32 bit128 bit
総アドレス数約 43 億(4.3 × 10^9)約 3.4 × 10^38
表記10進数のドット区切り16進数のコロン区切り
192.168.1.12001:db8::1

128 bit のアドレス空間は実質無限と言っていい大きさで、地球上の全原子数(約 10^50)には及ばないものの、「すべての電子機器に一意のグローバル IP を割り振る」ことができる規模です。

IPv6 表記のルール

IPv6 アドレスは 16 bit ごとにコロンで区切り、計 8 ブロックで表現:

2001:0db8:0000:0000:0000:ff00:0042:8329

これを短縮するルールが 2 つあります:

1. 各ブロックの先頭ゼロは省略可能

2001:0db8:0000:0000:0000:ff00:0042:8329
→ 2001:db8:0:0:0:ff00:42:8329

2. 連続するゼロブロックは :: で 1 度だけ省略可能

2001:db8:0:0:0:ff00:42:8329
→ 2001:db8::ff00:42:8329

::1 つの IPv6 アドレスに 1 回だけ 使えるルール。複数あるとどこを展開すべきか不定になります。

2001:0:0:1:0:0:0:1     ← 連続ゼロが 2 箇所ある
2001::1:0:0:0:1        ← OK(最長を ::)
2001:0:0:1::1          ← OK(後ろを ::)
2001::1::1             ← NG(:: が複数)

CIDR:IPv4 と IPv6 で考え方は同じ

CIDR 表記(プレフィックス長)は両方で同じ概念:

IPv4: 192.168.1.0/24
IPv6: 2001:db8::/32

ただし IPv6 は割り当て規模が大きく、慣習的に:

  • /64 — 1 サブネット(ホスト 2^64 個分)
  • /56 — エンドユーザーへの一般的割り当て
  • /48 — 企業や組織への割り当て
  • /32 — ISP への割り当て

IPv4 の感覚で「/64 は小さい」と思うと逆で、IPv6 では /64 が標準的なサブネットサイズです。

特殊範囲:両方に存在する予約アドレス

IPv4 の主要予約範囲

範囲用途
10.0.0.0/8プライベート(クラス A)
172.16.0.0/12プライベート(クラス B)
192.168.0.0/16プライベート(クラス C)
127.0.0.0/8ループバック(127.0.0.1 が代表)
169.254.0.0/16リンクローカル(DHCP 失敗時)
224.0.0.0/4マルチキャスト
255.255.255.255ブロードキャスト

IPv6 の主要予約範囲

範囲用途
::1/128ループバック(IPv4 の 127.0.0.1 相当)
fe80::/10リンクローカル
fc00::/7ユニークローカル(IPv4 のプライベート相当)
2001:db8::/32ドキュメント用(公開しない例示用)
ff00::/8マルチキャスト
::/128未指定アドレス

IPv6 にはブロードキャストアドレスが存在しません。代わりにマルチキャストでブロードキャスト的な配信を実装します。

NAT が IPv6 で(基本的に)不要な理由

IPv4 では枯渇問題のために NAT(ネットワークアドレス変換) が広く使われています:

  • 家庭内 LAN:192.168.1.0/24 内に複数端末
  • ルータがグローバル IP を 1 つ持ち、外部通信時に変換
  • 結果、家庭内の各端末は外部から直接アクセスできない

IPv6 ではアドレス空間が膨大なため、各端末にグローバルアドレスを割り当てられます。NAT は本質的には不要。代わりにファイアウォールでアクセス制御を行います。

ただし NAT が「副次的なファイアウォール効果」を持っていたため、IPv6 で各端末がグローバル到達可能になることに対するセキュリティ懸念があり、ルーターはデフォルトで NAT 同等のフィルタリングを行うのが普通です。

Dual Stack:現実の運用形態

完全な IPv6-only 移行はまだ多くないため、現実は IPv4 と IPv6 の両方を喋る Dual Stack が標準:

  • ホストは IPv4 と IPv6 の両方のアドレスを持つ
  • DNS は AAAA レコード(IPv6)と A レコード(IPv4)の両方を持つ
  • アプリケーションはどちらでも通信可能

Dual Stack で起こる問題:

1. アドレス選択ポリシー(RFC 6724)

クライアントは IPv6 と IPv4 の両方に到達できる場合、どちらを使うかを決める必要があります。一般に IPv6 優先ですが、経路の品質が悪いと体感速度が悪化することがあります。

2. Happy Eyeballs(RFC 8305)

IPv6 接続のタイムアウトを待たずに、IPv4 の接続も並行して試す手法。最近のブラウザは Happy Eyeballs v2 を実装しているため、IPv6 が遅くてもユーザー体感は IPv4 並みに保たれます。

3. ログの IP アドレス記録

サーバー側で IP を記録するときに、192.168.1.1 形式と 2001:db8::1 形式が混在します。DB の VARCHAR カラムサイズや、IP-based 集計ロジックは両方に対応する必要があります。

IPv4-mapped IPv6 アドレス

IPv4 アドレスを IPv6 形式で表現できる仕組み:

::ffff:192.168.1.1   ← IPv6 表記の中に IPv4 を埋め込み

Linux/macOS のソケット API ではデフォルトで Dual Stack ソケットが有効になっており、IPv4 接続も内部的にこの形式で表現されます。アクセスログで IPv6 が記録されているように見えても、実は IPv4 接続だった、ということがあります。

移行の現状:2026 年時点

  • IPv6 採用率:Google の統計で約 50%(地域差大、米国・インド・ドイツが高い、日本は中位)
  • モバイルキャリア:多くが IPv6 を採用済み
  • クラウドプロバイダ:AWS、GCP、Azure すべて IPv6 サポート(一部は追加料金)
  • 企業内 LAN:IPv4 + NAT が依然主流

実装で注意すべき点:

  • バリデーション:IPv4 形式のチェックだけだとエラーになる
  • ログ:両形式を扱える設計
  • 設定ファイル:bind 0.0.0.0 だけでは IPv6 で待ち受けない(bind :: または両方)
  • ファイアウォール:iptables(IPv4)と ip6tables(IPv6)は別ルールセット

まとめ

  • IPv4 は 32 bit、IPv6 は 128 bit
  • IPv6 は :: でゼロ省略、1 アドレスで 1 回だけ
  • 特殊範囲は両プロトコルで概念的に対応するものがある
  • 現代の運用は Dual Stack が主流
  • 新規実装ではコード・ログ・設定の両プロトコル対応を初期から考慮

IP アドレスの表記確認やゼロ省略の展開を試したい場合、本サイトの IP アドレス情報ツールが手早いです。IPv4 / IPv6 両方のフォーマットチェックと、CIDR 計算が連動しています。