Modified EUI-64
48ビットのMACアドレスから、IPv6アドレスの下位64ビットのインタフェース識別子を作る方式。MACアドレスの真ん中に FFFE を挟み、U/Lビットを反転させる。
イマシルちゃんの解説
IPv6のアドレスは、前半の「町の名前」(プレフィックス)と、後半の「番地」(インタフェース識別子)に分かれているんだったね。
番地を決めるいちばん簡単な方法は、パソコンがもともと持っている「製造番号」(MACアドレス)を使うことなんだ。
でも、MACアドレスは番地より短いから、そのままでは長さが足りないんだ。
そこで、真ん中に決まった値を差し込んで、番地の長さに伸ばすのがModified EUI-64なんだよ!
より深い解説
定義
Modified EUI-64は、RFC 4291で定められた、IEEEのEUI-64形式を一部修正した、インタフェース識別子の作り方である。48ビットのMACアドレス(EUI-48)から、64ビットのインタフェース識別子を作る。
作り方
- 48ビットのMACアドレスを、前半24ビット(OUI:製造者の番号)と後半24ビットに分ける
- 間に、16ビットのFFFEを挿入して、64ビットにする
- 先頭のオクテットの、下位から2ビット目(U/Lビット:グローバル/ローカルの区別)を反転させる
例:MACアドレス AA-BB-CC-11-22-33 の場合
| 手順 | 値 |
|---|---|
| MACアドレス | AA-BB-CC-11-22-33 |
| FFFEを挿入 | AA-BB-CC-FF-FE-11-22-33 |
| 先頭オクテットのU/Lビットを反転(AA=10101010 → 10101000=A8) | A8-BB-CC-FF-FE-11-22-33 |
| インタフェース識別子 | a8bb:ccff:fe11:2233 |
逆に、インタフェース識別子の真ん中に ff:fe があれば、Modified EUI-64形式で作られたものと推測でき、元のMACアドレスも復元できる。
IPv6アドレスの構造との関係
| サブネットプレフィックス(64ビット) | インタフェース識別子(64ビット) |
IPv6アドレスは128ビットで、16ビットずつ8つのブロックに区切り、「:」でつないで表す。SLAACで作るアドレスは、上位64ビットをRAで知らされたプレフィックス、下位64ビットをインタフェース識別子とする。
プライバシーの問題と、現在の作り方
MACアドレスは機器ごとに固定なので、Modified EUI-64で作ったインタフェース識別子は、どのネットワークにつないでも同じになる。そのため、アクセスしたWebサイトなどに、アドレスの下位64ビットから同じ端末だと追跡されるおそれがある。現在は、固定のMACアドレスからModified EUI-64でインタフェース識別子を作る方法は推奨されない。
| 作り方 | 内容 |
|---|---|
| Modified EUI-64 | MACアドレスから作る。追跡されやすい |
| 安定したランダムな識別子(RFC 7217) | ネットワークごとに異なるが、同じネットワークでは変わらない値を、疑似乱数関数で作る |
| 一時アドレス(RFC 8981) | ランダムに作り、一定時間ごとに作り直す。外部への通信に使う |
ルータなどのネットワーク機器では、管理のしやすさから、インタフェース識別子を手動で(::1 のように)設定することが多い。