IPv6 のアドレス体系と近隣探索(NDP)
IPv6が「設定なしでつながる」理由が腑に落ちます。128ビットのアドレス構造・SLAAC自動構成・ARPを置き換えるNDPの内部動作までを原理から整理します。
- 1.IPv6アドレスは128ビットで、上位64ビットの サブネットプレフィックス と下位64ビットの インターフェースID に分かれ、1インターフェースが複数アドレスを併用する。
- 2.SLAAC は ルータが配る プレフィックス と自前のインターフェースID を結合し、DHCPサーバーなしで グローバルアドレス を自動生成する。
- 3.ARPは廃止され、ICMPv6ベースの NDP が近隣探索・ルータ発見・アドレス重複検出(DAD)を ソリシテッドノードマルチキャスト で行う。
なぜアドレス枯渇だけの話ではないのか
IPv6 は単に「IPv4 のアドレスを 32ビット から 128ビット に増やした」規格ではありません。アドレス空間の拡大に合わせて、自動構成(SLAAC)、近隣探索(NDP)、ヘッダ設計までが作り直されています。とくに ARP が消えて NDP に統合された点は、L2 解決の仕組みそのものが変わったことを意味します。ここでは「なぜそう設計されたか」を内部動作から追います。
128ビットアドレスの内部構造
IPv6 アドレスは 128ビット を 16ビット ずつ8ブロックに区切り、16進数を : で表記します。先頭の 0 省略と、連続する全ゼロブロックを :: で1回だけ畳む規則があります。
決定的なのは、ユニキャストアドレスが原則 上位64ビット=サブネットプレフィックス と 下位64ビット=インターフェースID に二分される点です。IPv4 のように可変長でホスト部を削るのではなく、サブネットは原則 /64 固定 という前提が、後述する SLAAC を成立させます。
| 範囲 | ビット | 役割 |
|---|---|---|
| グローバルルーティングプレフィックス | 上位48ビット程度 | ISPやAS単位の経路集約 |
| サブネットID | 残りで /64 まで | 組織内のセグメント識別 |
| インターフェースID | 下位64ビット | セグメント内のホスト識別 |
アドレスは用途別にスコープが分かれます。プレフィックスを見れば種別が判別でき、fe80::/10 は リンクローカル(同一リンク限定・ルーティングされない)、ff00::/8 は マルチキャスト、グローバルユニキャストは典型的に 2000::/3 です。IPv6 ではブロードキャストが廃止され、その役割は マルチキャスト に置き換わりました。
IPv6 ではリンクローカルとグローバルを最低でも同時に持ち、さらにプライバシー拡張の一時アドレスも併用します。「1インターフェース=1アドレス」という IPv4 的な前提は捨てる必要があります。
SLAAC:サーバーなしで住所が決まる
SLAAC(StateLess Address AutoConfiguration)は、DHCP サーバーに頼らずホスト自身がアドレスを生成する仕組みです。手順はおおむね次の通りです。
- 起動時、インターフェースID から リンクローカルアドレス(
fe80::/64+ ID)を仮生成する。 - そのアドレスが同一リンクで重複しないか DAD(重複アドレス検出) で確認する。
- ルータに RS(Router Solicitation) を送り、ルータが定期/応答で返す RA(Router Advertisement) から /64 プレフィックスを受け取る。
- 受け取ったプレフィックスと自分のインターフェースID を結合し、グローバルアドレス を構成する。
つまり「プレフィックスはネットワーク(ルータ)が、ホスト部はホスト自身が」決める分業です。インターフェースID は古くは MAC を 64ビット に拡張する EUI-64 で作りましたが、MAC からの追跡を避けるため、現在は RFC 7217 の安定ランダム ID や RFC 8981 のプライバシー一時アドレス が主流です。
RA の M/O フラグで役割を分担できます。アドレス自体は SLAAC で配り、DNS サーバーなどの付加情報だけを DHCPv6(ステートレス)で配る、といった併用が一般的です。アドレス管理を集中させたい環境では DHCPv6 のステートフル運用も選べます。
NDP が ARP を置き換える仕組み
NDP(Neighbor Discovery Protocol)は ICMPv6 上に定義され、ARP・ICMP リダイレクト・ルータ発見を1つに束ねたものです。ARP がデータリンク層のブロードキャストに依存していたのに対し、NDP は ソリシテッドノードマルチキャスト を使う点が本質的な違いです。
宛先 IPv6 アドレスの下位24ビットを ff02::1:ff00:0/104 に連結したグループ宛てに送るため、リンク全体ではなく「下位24ビットが一致しうるごく少数のホスト」だけが割り込みを受けます。ブロードキャストで全端末を起こす ARP より、無関係なホストの負荷が小さく済みます。
| 項目 | ARP(IPv4) | NDP(IPv6) |
|---|---|---|
| 動作層 | L2(独立プロトコル) | ICMPv6(L3メッセージ) |
| 問い合わせ宛先 | ブロードキャスト | ソリシテッドノードマルチキャスト |
| MAC解決 | Request / Reply | NS / NA(近隣要請・近隣広告) |
| ルータ発見 | ARPの範囲外 | RS / RA に統合 |
| 到達性確認 | なし(基本) | NUD で双方向に追跡 |
主要メッセージは4種です。NS(Neighbor Solicitation) が「このアドレスの MAC は?」、NA(Neighbor Advertisement) がその応答で、ARP の Request/Reply に対応します。RS/RA はルータ発見とプレフィックス配布を担います。
NDP は到達性も管理します。NUD(近隣到達不能検出) は、上位層が「通信できている」と示すヒントやNSの再送で隣接エントリの状態を REACHABLE / STALE / PROBE と遷移させ、相手がいなくなった経路を能動的に検知します。ARP テーブルが基本「期限切れまで放置」だったのと比べ、状態機械として近隣を追う設計です。
DAD:自分のアドレスを名乗る前の確認
DAD は、生成したアドレスの 重複 を使い始める前に検出する手続きです。送信元アドレスを未指定(::)にした NS を、自分が使おうとしているアドレスのソリシテッドノードマルチキャスト宛てに送り、誰かが NA で「それは私が使っている」と返せば、そのアドレスは使えないと判断します。応答がなければ確定して使い始めます。IPv4 にも Gratuitous ARP がありましたが、DAD は標準手順として組み込まれている点が異なります。
素の NDP は応答の正当性を検証しないため、偽の NA でキャッシュを汚す NDP スプーフィングや、偽 RA による経路乗っ取りが成立します。対策には RA Guard / ND Inspection や、暗号で近隣を保証する SEND(RFC 3971)があります。LAN 内を無条件に信用しない設計は IPv6 でも変わりません。
拡張ヘッダ:固定本体と数珠つなぎの設計
IPv6 の基本ヘッダは 40バイト固定 で、IPv4 にあった可変オプションやヘッダチェックサムを廃しました。固定長なのでルータがフィールド位置を計算なしで読め、転送が速くなります。オプション機能は 拡張ヘッダ を本体とペイロードの間に 数珠つなぎ にして表現します。
各ヘッダの Next Header フィールドが「次に何が続くか」を指し、Hop-by-Hop Options(経路上の全ルータが処理)→ Routing → Fragment → 上位プロトコル(TCP/UDP)のように連鎖します。中継ルータは原則 Hop-by-Hop 以外を読み飛ばせるため、深い検査の負荷を端点に寄せられます。
注目すべきは フラグメント処理の移動 です。IPv4 はルータが途中で分割できましたが、IPv6 では 中継ルータは分割せず、必要な分割は送信元が Fragment 拡張ヘッダで行います。経路の最小 MTU は Path MTU Discovery で事前に求めるのが前提で、ここは MTU とフラグメンテーション の理解がそのまま効きます。
「ARP は NDP に統合」「ブロードキャストは廃止しマルチキャストへ」「基本ヘッダは40バイト固定・チェックサムなし」「フラグメントは送信元のみ」「サブネットは原則 /64」。この5点は IPv6 設計思想の核で、資格試験でも頻出です。
つまずきポイント
- /64 を割らない:プレフィックスを /64 より長くすると SLAAC が動かなくなる。サブネット境界は /64 に揃えるのが原則。
- リンクローカルは必須:通信できないと感じても
fe80::は必ず存在する。NDP 自体がリンクローカルで動く。 - ブロードキャストを探さない:IPv4 の
255.255.255.255相当はない。「全ノード」はff02::1マルチキャストで表す。 - チェックサムは上位層任せ:基本ヘッダにチェックサムがないぶん、UDP のチェックサムは IPv6 では省略不可になっている。
アドレス構造は IPアドレスとサブネット の延長線上にあり、L2 解決は ARP との対比で捉えると、IPv6 が「拡張」ではなく「再設計」であることが見えてきます。
# 自分のIPv6アドレス(リンクローカル/グローバル/一時)を確認
ip -6 addr show
# NDP の近隣キャッシュ(ARPテーブル相当)を表示
ip -6 neighbor show
# ルータ広告(RA)で受けたデフォルトゲートウェイを確認
ip -6 route show default
ネットワーク Article
IPv6 のアドレス体系と近隣探索(NDP)を実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
IPv6
比較で見る軸
難易度: advanced / カテゴリ: ネットワーク / タグ数: 5
導入後に効く点
SLAAC は ルータが配る プレフィックス と自前のインターフェースID を結合し、DHCPサーバーなしで グローバルアドレス を自動生成する。
先に潰すリスク
用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。
- 難易度
- advanced
- カテゴリ
- ネットワーク
- タグ数
- 5
判断チェックリスト
- 自社の用途が「IPv6 / NDP」に近いか確認する。
- 強みである「IPv6アドレスは128ビットで、上位64ビットの サブネットプレフィックス と下位64ビットの インターフェースID に分かれ、1インターフェースが複数アドレスを併用する。」が本当に評価軸になるか確認する。
- 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。