IPv6

IPv4 のアドレス枯渇を根本解決し、設計上の改善も多い次世代 IP。 ヘッダ構造、アドレスの種類、SLAAC、NDP、移行技術までこと細かに。

IPv6 が必要な理由

表記

2001:0db8:85a3:0000:0000:8a2e:0370:7334
└──┘ └──┘ └──┘ └──┘ └──┘ └──┘ └──┘ └──┘
 16b  16b   16b  16b  16b  16b   16b  16b   = 128 bit
      

省略ルール

  1. 各 16 ビットブロックの先頭 0 を省略
    2001:0db8:0000:0000:0000:0000:0000:0001
    → 2001:db8:0:0:0:0:0:1
  2. 連続する 0 ブロックを「::」に短縮(1 アドレスに 1 回だけ)
    2001:db8:0:0:0:0:0:1 → 2001:db8::1
  3. 大文字小文字: 表記は小文字を推奨(RFC 5952)

完全表記省略表記
0000:0000:0000:0000:0000:0000:0000:0001::1(ループバック)
0000:0000:0000:0000:0000:0000:0000:0000::(未指定)
fe80:0000:0000:0000:0204:61ff:fe9d:f156fe80::204:61ff:fe9d:f156
2001:0db8:0000:0000:0000:ff00:0042:83292001:db8::ff00:42:8329

URL での書き方

ポート番号と区別するため角括弧で囲む:

http://[2001:db8::1]:8080/path
ssh user@[fe80::1%en0]   ← Link-local はゾーン ID 必須

プレフィックス

IPv6 ではマスク表記は使わず常に CIDR /n

アドレスの種類

範囲名称用途
::/128未指定未割当を表す
::1/128ループバックlocalhost
::ffff:0:0/96IPv4-mappedIPv6 ソケットで IPv4 を扱う表現
2000::/3グローバルユニキャストインターネット上の通常アドレス
fc00::/7ULA(ユニークローカル)プライベート相当(RFC 4193)
fe80::/10リンクローカル同一リンク内のみ
ff00::/8マルチキャストグループ通信
2001:db8::/32ドキュメント用例示・教材用(RFC 3849)

ブロードキャストはない

IPv6 にはブロードキャストの概念がなくなった。代わりにマルチキャストを使う。

主要なマルチキャストアドレス

リンクローカル (fe80::/10)

ULA (fc00::/7)

IPv6 ヘッダ

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version| Traffic Class |           Flow Label                  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Payload Length        |  Next Header  |   Hop Limit   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+                         Source Address                        +
|                          (128 bit)                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+                       Destination Address                     +
|                          (128 bit)                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      

拡張ヘッダ

IPv4 の Options に相当。連結式で挟む。

インタフェース ID(下位 64 ビット)

EUI-64(古典)

MAC アドレスから機械的に生成:

MAC: 00:1a:2b:3c:4d:5e
↓ 真ん中に ff:fe を挟む
00:1a:2b:ff:fe:3c:4d:5e
↓ 7 ビット目を反転 (Universal/Local bit)
02:1a:2b:ff:fe:3c:4d:5e

結果: ::21a:2bff:fe3c:4d5e
      

ただし MAC が漏れて追跡可能になるためプライバシー上の問題あり。

プライバシー拡張(RFC 4941)

安定プライベート(RFC 7217)

ランダムだが同じネットワーク内では一貫。NAT 越し DHCP のような挙動。Linux NetworkManager 既定。

SLAAC(Stateless Address Autoconfiguration)

DHCP なしで自分で IPv6 アドレスを生成する仕組み。RFC 4862。

動作

  1. NIC 起動時に Link-Local アドレス (fe80::xxxx) を生成
  2. DAD(Duplicate Address Detection)で重複検査
  3. Router Solicitation (RS) を送信
  4. ルータが Router Advertisement (RA) でプレフィックスを通知
  5. プレフィックス + インタフェース ID でグローバルアドレスを組み立てる
  6. もう一度 DAD
  7. 同時に複数のグローバルアドレスを持てる(一時 / 永続)

RA で配布される情報

NDP(Neighbor Discovery Protocol)

IPv4 の ARP / ICMP Redirect / Router Discovery を統合。ICMPv6 上で動く(RFC 4861)。

主要メッセージ(ICMPv6)

Type名称用途
133Router Solicitation (RS)ルータを探す
134Router Advertisement (RA)ルータの広告
135Neighbor Solicitation (NS)隣接の MAC を聞く(ARP 相当)
136Neighbor Advertisement (NA)NS への応答
137Redirectより良い経路を通知

Solicited-Node マルチキャスト

ARP のブロードキャストの代わりに、該当ノードだけに届くマルチキャストアドレスを使う。 無関係なホストは割り込まれない。

DAD(Duplicate Address Detection)

新しいアドレスを使う前に、同じアドレスを持つノードがいないかNS をマルチキャストして確認。 誰かが NA を返したら自分のアドレスを使えない。

DHCPv6

SLAAC で十分なケースもあるが、厳密管理したい場合は DHCPv6。

グローバル / 一時アドレスの両立

IPv6 は 1 NIC が複数のアドレスを同時に持てる:

OS が「どのアドレスで送るか」をRFC 6724 の優先順位に従って選ぶ。

ICMPv6 のその他の役割

移行技術

デュアルスタック

IPv4 と IPv6 を両方動かす。最も互換性が高い。OS / アプリ / ルータ全てが両方を扱える必要。

Happy Eyeballs(RFC 8305)

IPv6 と IPv4 を並列に試して速い方を採用。 IPv6 が遅い環境でも体感を悪くしない。ブラウザに広く実装。

NAT64 / DNS64

464XLAT

モバイルで主流。クライアント側でも変換することで IPv4 only アプリが IPv6 only 網を使える。

DS-Lite

ISP 側で 1 つのグローバル IPv4 を多くの加入者で共有。日本では IPv6 IPoE + DS-Lite が普及。

6to4 / Teredo(廃止傾向)

過渡期の自動トンネル。現代では推奨されない。

確認コマンド

# 自 IPv6
ip -6 a                # Linux
ifconfig | grep inet6  # macOS

# 隣接表(NDP)
ip -6 neigh
ndp -an                # macOS

# IPv6 ルート
ip -6 route

# 疎通
ping6 ipv6.google.com
ping -6 2001:4860:4860::8888

# 経路
traceroute6 ipv6.google.com

# DNS(AAAA レコード)
dig AAAA example.com

Linux で IPv6 を無効化(非推奨)

# /etc/sysctl.conf
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

現代では IPv6 は有効のままが原則。無効化はトラブルの引き金。

ファイアウォールでの IPv6

IPv6 普及率(2026 年初頭)

よくある誤解

セキュリティ

触ってみる

手元の ip afe80::...2001:... を見てみる。 Web ブラウザで https://ipv6.google.com に繋がれば、すでに IPv6 が動いている。 ブログのコメントで「IPv6 で繋がりません」と書く前に、自分の環境を確認するクセを。