IPv4 と IPv6:表記、特殊範囲、移行戦略の現状
IPv4 アドレス枯渇は 2010 年代に語られて久しい話題ですが、IPv6 への移行は今なお完了していません。本記事では IPv4 と IPv6 の表記の違い、特殊な予約範囲、そして「IPv4 だけ」「IPv6 だけ」「両方」という現代の運用形態を整理します。
アドレス長:32 bit と 128 bit
| 項目 | IPv4 | IPv6 |
|---|---|---|
| アドレス長 | 32 bit | 128 bit |
| 総アドレス数 | 約 43 億(4.3 × 10^9) | 約 3.4 × 10^38 |
| 表記 | 10進数のドット区切り | 16進数のコロン区切り |
| 例 | 192.168.1.1 | 2001: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 計算が連動しています。