リンクローカルアドレス
同じリンク(ルータを越えない範囲のネットワーク)の中だけで使えるIPv6アドレス。fe80::/10の範囲で、IPv6の機器は必ず自動で持つ。
イマシルちゃんの解説
IPv6の機器は、ネットワークにつながった瞬間に、まず「ご近所専用の名札」を自分で作るんだ。
これがリンクローカルアドレス!
ご近所専用だから、ルータを越えて遠くには届かない。
でも、ルータを見つけたり、ご近所さんと話したりするには、これで十分なんだよ。
より深い解説
定義
リンクローカルアドレスは、同じリンク内の通信にだけ使えるIPv6のユニキャストアドレスである。プレフィックスはfe80::/10と決まっていて、実際には fe80::/64 の形で使う。ルータは、リンクローカルアドレスを宛先や送信元とするパケットを、ほかのリンクへ転送しない。
IPv6が有効なインタフェースは、グローバルアドレスがあってもなくても、必ずリンクローカルアドレスを自動で持つ。
プレフィックスは固定
リンクローカルアドレスのプレフィックスは仕様で決まっているので、ルータ広告などで受け取る必要はない。ルータ広告で知らせるのは、インターネットでも使えるグローバルユニキャストアドレスのプレフィックスである。
インタフェースIDの作り方
下位64ビット(インタフェースID)は、次のいずれかの方法で作る。
| 方法 | 内容 |
|---|---|
| 修正EUI-64 | 48ビットのMACアドレスの真ん中にFFFEを挟んで64ビットにし、先頭から7ビット目(U/Lビット)を反転させる |
| ランダムな値など | プライバシー保護のため、MACアドレスを含まない値を使う(RFC 7217など)。最近のOSの多くはこちら |
例:MACアドレスが 00-1A-2B-3C-4D-5E の場合、修正EUI-64では 021a:2bff:fe3c:4d5e となり、リンクローカルアドレスは fe80::21a:2bff:fe3c:4d5e になる。
作ったアドレスは、使う前に重複アドレス検出で重複がないかを確かめる。
使われる場面
- 近隣探索プロトコルのメッセージの送信元
- ルータ広告の送信元(ホストはこれをデフォルトゲートウェイのアドレスとして使う)
- OSPFv3やRIPngなどのルーティングプロトコルで、隣のルータとのやり取りや次の転送先
ゾーンIDが必要な理由
どのインタフェースにも同じ fe80::/64 があるため、リンクローカルアドレスだけでは、どのインタフェースから送ればよいか決まらない。そこで fe80::1%eth0 のように、% の後にインタフェースを示すゾーンIDを付けて指定する。
IPv4で似たもの
IPv4では、DHCPサーバからアドレスをもらえなかったときに、169.254.0.0/16の範囲から自動でアドレスを付けることがある(リンクローカルアドレス、APIPA)。