試験項目 1.4 · CCNA-023
Modified EUI-64
48-bit MAC / 24-bit分割 / FFFE挿入 / U/L bit反転 / 64-bit Interface Identifier / Prefix結合 / eui-64 / Verification
このページのゴール
48-bit MAC AddressからModified EUI-64 Interface Identifierを生成・検証し、/64 Prefixと組み合わせたIPv6 Addressが正しいか判断できるようにする。
このページで学ぶこと
- 48-bit MAC Split
- FFFE Insertion
- U/L Bit Inversion
- Modified EUI-64 Interface ID
- /64 Prefix + Interface ID
- eui-64 Keyword
- EUI-64 Result Verification
- EUI-64 vs SLAAC Boundary
- EUI-64 Not Universal IID
ページ022では、Cisco IOSインターフェースに設定されたIPv6アドレスとプレフィックス、ipv6 enable、リンクローカル設定を確認しました。
ページ023では、
48ビットMACアドレス
から、
64ビットのModified EUI-64
インターフェース識別子
を生成し、
/64プレフィックス
+
64ビットインターフェース識別子
から完成するIPv6アドレスを予測・検証します。
例えば、
MAC
00:1A:2B:3C:4D:5E
から生成されるModified EUI-64インターフェース識別子は、
021a:2bff:fe3c:4d5e
です。
プレフィックスが、
2001:db8:10:20::/64
なら、完成するアドレスは、
2001:db8:10:20:21a:2bff:fe3c:4d5e
です。
ページ023では、
48ビットMAC
↓
24ビット/24ビット分割
↓
FFFE挿入
↓
U/Lビット反転
↓
64ビットインターフェース識別子
↓
/64プレフィックスとの結合
↓
生成アドレス確認
の順に判断できるようにします。
1. Modified EUI-64はインターフェース識別子生成方法
Modified EUI-64は、
48ビットMACアドレス
などを基に、
64ビットインターフェース識別子
を形成する方法です。
重要なのは、
Modified EUI-64
=
IPv6アドレス割り当て方式
ではないことです。
Modified EUI-64が担当するのは、
IPv6アドレスの下位64ビットを
どう形成するか
という部分です。
SLAACやDHCPv6など、
アドレスを
どの方式で取得するか
は別の概念です。
2. ページ023では48ビットMACからの生成を扱う
ページ023の計算では、
IEEE 802
48ビットMACアドレス
が提示されたケースを扱います。
例えば、
00:1A:2B:3C:4D:5E
です。
6オクテットなので、
6 × 8ビット
=
48ビット
です。
この48ビットを64ビットインターフェース識別子へ変換します。
他のリンク種別や、MAC以外からインターフェース識別子を形成する実装詳細は、このページの範囲外です。
3. 最初にMACを24ビットずつへ分割する
MAC:
00:1A:2B:3C:4D:5E
を、
前半24ビット
00:1A:2B
後半24ビット
3C:4D:5E
へ分割します。
つまり、
00:1A:2B | 3C:4D:5E
です。
3オクテットずつなので、
24ビット
+
24ビット
=
48ビット
です。
Modified EUI-64では、この中央へ16ビットを追加します。
4. MACを16ビットずつ3分割するのではない
Modified EUI-64生成で最初に行うのは、
24ビット
+
24ビット
への分割です。
例えば、
00:1A
2B:3C
4D:5E
という16ビット単位への3分割から始めるわけではありません。
生成手順では、
最初の3オクテット
と、
最後の3オクテット
の間へ値を挿入します。
5. 中央へFF:FEを挿入する
分割したMAC:
00:1A:2B | 3C:4D:5E
の中央へ、
FF:FE
を挿入します。
結果:
00:1A:2B:FF:FE:3C:4D:5E
です。
元は6オクテットでしたが、
6オクテット
+
2オクテット
=
8オクテット
になります。
したがって、
8 × 8ビット
=
64ビット
です。
6. FFFEの位置を正確に確認する
FF:FEを挿入する場所は、
前半24ビット
と
後半24ビット
の間
です。
正しい形:
00:1A:2B:FF:FE:3C:4D:5E
例えば、
00:1A:FF:FE:2B:3C:4D:5E
ではありません。
また、
00:1A:2B:3C:FF:FE:4D:5E
でもありません。
トラブルシューティングでは、
FFFEが存在するか
だけでなく、
正しい中央位置にあるか
まで確認します。
7. FFFE挿入だけではModified EUI-64完成ではない
次の値:
00:1A:2B:FF:FE:3C:4D:5E
は、中央へのFFFE挿入までは完了しています。
しかしModified EUI-64では、さらに、
U/Lビット
を反転します。
したがって、
FFFEを挿入した
=
Modified EUI-64完成
ではありません。
8. U/LビットはMAC先頭オクテット内にある
Modified EUI-64で反転するのは、
MACアドレスの
先頭オクテットにあるU/Lビット
です。
16進数上では、
0x02
に相当するビットです。
したがって計算では、
先頭オクテット
XOR
02
と考えると分かりやすくなります。
9. MAC先頭00なら02へ変化する
MAC:
00:1A:2B:3C:4D:5E
では、先頭オクテットは、
00
です。
U/Lビットを反転すると、
00 XOR 02
=
02
です。
したがって、
00:1A:2B:FF:FE:3C:4D:5E
は、
02:1A:2B:FF:FE:3C:4D:5E
になります。
10. U/Lビットは「1へ設定」ではなく反転する
ここは重要です。
Modified EUI-64では、
U/Lビットを
必ず1にする
のではありません。
行うのは、
現在値を反転
です。
例えば先頭オクテットが、
00
なら、
00 XOR 02
=
02
ですが、
先頭オクテットが、
02
なら、
02 XOR 02
=
00
です。
したがって、
0 → 1
だけを覚えるのではなく、
U/Lビット反転
として理解します。
11. 反転するのは0x02であり0x01ではない
MAC先頭オクテットには別の意味を持つビットもあります。
Modified EUI-64で反転するのは、
0x02
に相当するU/Lビットです。
0x01
に相当するビットを反転するのではありません。
したがって、
00 XOR 01
=
01
という計算はModified EUI-64生成として誤りです。
正しくは、
00 XOR 02
=
02
です。
12. Modified EUI-64をヘクステット形式へ変換する
U/Lビット反転後の64ビット値:
02:1A:2B:FF:FE:3C:4D:5E
を2オクテットずつまとめると、
021A
2BFF
FE3C
4D5E
です。
IPv6のヘクステット表記では、
021a:2bff:fe3c:4d5e
となります。
これが64ビットのModified EUI-64インターフェース識別子です。
13. 生成手順全体
MAC:
00:1A:2B:3C:4D:5E
から生成する場合をまとめます。
1.
00:1A:2B | 3C:4D:5E
2.
中央へFF:FE挿入
00:1A:2B:FF:FE:3C:4D:5E
3.
U/Lビット反転
00 XOR 02
=
02
4.
02:1A:2B:FF:FE:3C:4D:5E
5.
2オクテットずつヘクステット化
021a:2bff:fe3c:4d5e
これが基本流れです。
14. /64プレフィックスと64ビットインターフェース識別子を結合する
IPv6アドレスは128ビットです。
ページ023では、
64ビットプレフィックス
+
64ビットインターフェース識別子
を組み合わせます。
例えば、
プレフィックス
2001:db8:10:20::/64
インターフェース識別子
021a:2bff:fe3c:4d5e
なら、
2001:db8:10:20:021a:2bff:fe3c:4d5e
です。
IPv6の先頭ゼロを省略すると、
2001:db8:10:20:21a:2bff:fe3c:4d5e
になります。
15. /64ではプレフィックス4ヘクステット + インターフェース識別子4ヘクステット
プレフィックス:
2001:db8:10:20::/64
は、
2001
0db8
0010
0020
の4ヘクステットがプレフィックス側です。
Modified EUI-64インターフェース識別子:
021a
2bff
fe3c
4d5e
も4ヘクステットです。
したがって、
プレフィックス4ヘクステット
+
インターフェース識別子4ヘクステット
=
8ヘクステット
となります。
完成アドレス:
2001:db8:10:20:21a:2bff:fe3c:4d5e
です。
16. プレフィックス部分までEUI-64で生成するわけではない
Modified EUI-64によって生成するのは、
下位64ビット
インターフェース識別子
です。
例えば、
2001:db8:10:20::/64
というプレフィックスそのものを、
MACアドレスから生成する
わけではありません。
ページ023では、
プレフィックス
→ 問題文・設定から与えられる
インターフェース識別子
→ MACからModified EUI-64で生成
両者を結合
→ IPv6アドレス
として扱います。
17. Cisco IOSのeui-64キーワード
Cisco IOSでは、
ipv6 address <ipv6-prefix>/64 eui-64
という形式を利用できます。
例えば、
interface GigabitEthernet0/0
ipv6 address 2001:db8:10:20::/64 eui-64
です。
この設定では、
プレフィックス
2001:db8:10:20::/64
を指定し、
下位64ビットのインターフェース識別子をインターフェース情報からEUI-64形式で構成します。
18. eui-64キーワードでは完成アドレスを直接入力していない
次のコマンド:
ipv6 address 2001:db8:10:20::/64 eui-64
では、
2001:db8:10:20::/64
というプレフィックスを指定しています。
完成した128ビットアドレスをすべて手動入力しているわけではありません。
したがってトラブルシューティングでは、
設定済みプレフィックス
+
インターフェースから生成されるインターフェース識別子
の両方から、完成アドレスを予測します。
19. eui-64キーワードと通常の静的アドレスを区別する
ページ022で扱った、
ipv6 address 2001:db8:10:20::1/64
は、完成アドレスを明示的に設定しています。
一方、
ipv6 address 2001:db8:10:20::/64 eui-64
は、
プレフィックス
+
EUI-64インターフェース識別子
からアドレスを構成します。
したがって、
静的完成アドレス
と、
プレフィックス + eui-64
では設定の読み方が異なります。
20. Cisco eui-64生成結果を予測する
インターフェースMAC:
00:1A:2B:3C:4D:5E
設定:
ipv6 address 2001:db8:10:20::/64 eui-64
なら、
MACから生成するインターフェース識別子は、
021a:2bff:fe3c:4d5e
です。
したがって期待するアドレスは、
2001:db8:10:20:21a:2bff:fe3c:4d5e
です。
トラブルシューティングでは、この期待値を実際値と比較します。
21. EUI-64生成結果の確認
MAC:
00:1A:2B:3C:4D:5E
プレフィックス:
2001:db8:10:20::/64
実際値:
2001:db8:10:20:1a:2bff:fe3c:4d5e
だったとします。
正しいインターフェース識別子は、
021a:2bff:fe3c:4d5e
です。
実際のインターフェース識別子は、
001a:2bff:fe3c:4d5e
に相当します。
したがって、
FFFE
→ 正しい位置
プレフィックス
→ 正しい
U/Lビット反転
→ 反映されていない
と切り分けられます。
22. FFFE位置の誤りを識別する
MAC:
00:1A:2B:3C:4D:5E
に対し、実際のインターフェース識別子が、
021a:fffe:2b3c:4d5e
だったとします。
正しい生成途中は、
00:1A:2B:FF:FE:3C:4D:5E
なので、期待するインターフェース識別子は、
021a:2bff:fe3c:4d5e
です。
実際値では、
FFFEの挿入位置
が誤っています。
生成結果だけを見るのではなく、
MAC分割
↓
FFFE
↓
U/L
へ戻って確認します。
23. プレフィックス誤りとインターフェース識別子誤りを分離する
期待値:
プレフィックス
2001:db8:10:20::/64
MAC
00:1A:2B:3C:4D:5E
期待するアドレス:
2001:db8:10:20:21a:2bff:fe3c:4d5e
実際値:
2001:db8:10:30:21a:2bff:fe3c:4d5e
なら、
インターフェース識別子
021a:2bff:fe3c:4d5e
→ 正しい
プレフィックス
2001:db8:10:30::/64
→ 期待値と不一致
です。
つまり、
EUI-64計算エラー
ではなく、
プレフィックス側の設定確認結果
です。
24. インターフェース識別子から元MACを逆算して検証できる
Modified EUI-64インターフェース識別子:
5054:00ff:fe12:3456
を検証します。
8オクテットへ戻すと、
50:54:00:FF:FE:12:34:56
です。
中央の、
FF:FE
を除くと、
50:54:00:12:34:56
です。
次にU/Lビットをもう一度反転します。
50 XOR 02
=
52
したがって元MACは、
52:54:00:12:34:56
です。
25. U/Lビット反転は逆算でも同じXOR 02
XORによるビット反転は、もう一度同じ動作を行うと元へ戻ります。
例えば、
00 XOR 02
=
02
なら、
02 XOR 02
=
00
です。
また、
52 XOR 02
=
50
なら、
50 XOR 02
=
52
です。
したがって、
MAC → インターフェース識別子
でも、
インターフェース識別子 → MACの検証
でも、
先頭オクテット XOR 02
を利用できます。
26. インターフェース識別子にFFFEが見えるだけで必ずMAC由来とは断定しない
Modified EUI-64で48ビットMACを変換すると、
FFFE
が中央に現れます。
そのため、
xxxx:xxff:fexx:xxxx
の形は強い手掛かりです。
ただしトラブルシューティングでは、
FFFEが見えた
=
必ずこのMACから生成された
と文字列だけで断定するのではなく、
提示されたMAC
U/Lビット
FFFE位置
プレフィックス
を合わせて検証します。
27. Modified EUI-64とSLAACは別概念
Modified EUI-64は、
インターフェース識別子
生成方法
です。
SLAACは、
ルーター広告などを利用した
IPv6アドレス割り当て方式
です。
したがって、
Modified EUI-64
=
SLAAC
ではありません。
ページ023では、この境界を固定します。
28. SLAACだから必ずModified EUI-64とは限らない
SLAACでIPv6アドレスを形成するとき、
インターフェース識別子
が必要になります。
しかし、
SLAACを使った
↓
必ずMAC由来Modified EUI-64
とは判断しません。
Modified EUI-64以外の方式で生成されたインターフェース識別子も存在します。
ページ023では他のインターフェース識別子アルゴリズム自体を講義しません。
重要なのは、
EUI-64は
インターフェース識別子生成方法の1つ
という境界です。
29. EUI-64を使ったからSLAACとも限らない
逆方向も同じです。
Cisco IOSで、
ipv6 address 2001:db8:10:20::/64 eui-64
と明示設定した場合、
EUI-64インターフェース識別子
を利用します。
しかしこれは、
ルーター広告を受信して
SLAACした
ことを意味しません。
つまり、
EUI-64インターフェース識別子を使用
≠
アドレス割り当て方式がSLAAC
です。
SLAACそのものはページ024で扱います。
30. すべてのIPv6インターフェース識別子がEUI-64ではない
IPv6アドレスを見て、
下位64ビット
=
必ずMAC由来Modified EUI-64
とは判断しません。
インターフェース識別子は、
手動設定
EUI-64
その他の自動生成方式
などで形成される場合があります。
したがって、
IPv6アドレスから
必ず元MACを復元できる
わけでもありません。
ページ023でMAC逆算を行うのは、
Modified EUI-64由来である
という条件がある場合です。
31. 現代のSLAACでEUI-64を普遍的な既定値と考えない
Modified EUI-64はIPv6アドレス設定を理解するうえで重要であり、Cisco IOSのeui-64キーワードでも明示的に使用できます。
一方、
現代のすべてのIPv6ホスト
が安定したMACアドレスをそのまま反映するModified EUI-64インターフェース識別子を既定で使用するわけではありません。
したがってCCNA問題では、
MACアドレスが提示される
Modified EUI-64を求める
eui-64キーワードがある
などの確認情報を基にEUI-64計算を適用します。
32. ページ023の/64とSLAACの/64を混同しない
ページ023では、
/64プレフィックス
+
64ビットのModified EUI-64インターフェース識別子
というアドレス構成を扱います。
ページ024でもSLAACと/64が登場しますが、責任は異なります。
ページ023
→ インターフェース識別子をどう生成するか
ページ024
→ アドレスをどの割り当て方式で得るか
です。
同じ/64が登場しても、学習対象を混同しません。
33. 設定と動作確認を分離する
設定:
ipv6 address 2001:db8:10:20::/64 eui-64
とMAC:
00:1A:2B:3C:4D:5E
が分かれば、
期待するアドレス
2001:db8:10:20:21a:2bff:fe3c:4d5e
を計算できます。
ページ023では、
期待値を算出
するところまで扱います。
実際にインターフェースへどのアドレスが載っているかを、
show ipv6 interface
などで確認するコマンド体系はページ025で扱います。
34. トラブルシューティングでは生成処理を分解する
Modified EUI-64が疑われる場合、完成アドレスだけを眺めるのではなく、
1. MACは正しいか
2. 24ビット/24ビットへ
正しく分割したか
3. FFFEは
正しい位置か
4. U/Lビットを
XOR 02したか
5. 64ビットインターフェース識別子へ
正しくまとめたか
6. /64プレフィックスは正しいか
7. プレフィックスとインターフェース識別子を
正しく結合したか
の順に確認します。
これによって、
プレフィックス誤り
FFFE誤り
U/L誤り
インターフェース識別子誤り
を分離できます。
35. ケース 1:正しいModified EUI-64
MAC:
00:1A:2B:3C:4D:5E
プレフィックス:
2001:db8:10:20::/64
実際のアドレス:
2001:db8:10:20:21a:2bff:fe3c:4d5e
計算:
00:1A:2B | 3C:4D:5E
↓
00:1A:2B:FF:FE:3C:4D:5E
↓
00 XOR 02 = 02
↓
02:1A:2B:FF:FE:3C:4D:5E
↓
021a:2bff:fe3c:4d5e
実際値と一致します。
したがってEUI-64生成結果に確認結果はありません。
36. ケース 2:U/Lビット反転漏れ
MAC:
00:1A:2B:3C:4D:5E
実際値:
2001:db8:10:20:1a:2bff:fe3c:4d5e
実際のインターフェース識別子を完全に見ると、
001a:2bff:fe3c:4d5e
です。
FFFE位置は正しいですが、
00
→
02
へのU/Lビット反転がありません。
確認結果:
U/Lビット反転欠落
です。
37. ケース 3:プレフィックスだけ誤っている
期待値プレフィックス:
2001:db8:10:20::/64
MAC:
00:1A:2B:3C:4D:5E
実際値:
2001:db8:10:30:21a:2bff:fe3c:4d5e
インターフェース識別子:
021a:2bff:fe3c:4d5e
は正しいです。
しかしプレフィックスが、
期待値
2001:db8:10:20::/64
実際値
2001:db8:10:30::/64
で不一致です。
したがって、
EUI-64アルゴリズム誤り
ではなく、
プレフィックス設定確認結果
です。
38. ケース 4:インターフェース識別子からMACを検証する
インターフェース識別子:
5054:00ff:fe12:3456
を8オクテットへ戻します。
50:54:00:FF:FE:12:34:56
中央のFFFEを除去:
50:54:00:12:34:56
先頭オクテットのU/Lビットを戻す:
50 XOR 02
=
52
したがって元MACは、
52:54:00:12:34:56
です。
提示MACがこれと異なるなら、MACとインターフェース識別子の整合性を再確認します。
39. よくある誤判断
誤り1:MACを16ビットずつ3分割する
最初は、
24ビット
+
24ビット
へ分けます。
誤り2:FFFEをMACの末尾へ追加する
中央へ挿入します。
誤り3:FFFEを挿入すれば完成
U/Lビット反転も必要です。
誤り4:U/Lビットを必ず1へ設定する
固定値へ設定するのではなく、
XOR 02
で反転します。
誤り5:0x01を反転する
対象は、
0x02
に相当するU/Lビットです。
誤り6:プレフィックスもMACから生成する
MACから生成するのはインターフェース識別子側です。
誤り7:eui-64キーワードはSLAACを開始するコマンド
eui-64はインターフェース識別子生成に関係します。
SLAACそのものとは別です。
誤り8:SLAACなら必ずEUI-64
Modified EUI-64以外のインターフェース識別子も存在します。
誤り9:EUI-64インターフェース識別子なら必ずSLAAC
Cisco IOSで明示的にeui-64を使用する設定もあります。
誤り10:すべてのIPv6アドレスからMACを復元できる
Modified EUI-64由来という条件がなければ、MAC復元を前提にしません。
誤り11:インターフェース識別子が正しければアドレス全体も正しい
プレフィックス側も期待値と比較します。
40. Modified EUI-64トラブルシューティングの流れ
1. 期待する/64プレフィックスを確認
↓
2. 48ビットMACアドレスを確認
↓
3. MACを24ビットずつへ分割
↓
4. 中央へFFFEを挿入
↓
5. MAC先頭オクテットの
U/LビットをXOR 02で反転
↓
6. 64ビットインターフェース識別子へ変換
↓
7. /64プレフィックスとインターフェース識別子を結合
↓
8. 期待するIPv6アドレスを算出
↓
9. 実際値と比較
↓
10. プレフィックス/FFFE/U/L/インターフェース識別子の
どこが不一致か特定
↓
11. EUI-64以外のインターフェース識別子を
誤ってEUI-64扱いしていないか確認
41. 最終的に判断できるようにすること
ページ023では最終的に、
48ビットMACを
24ビット + 24ビットへ分割できる
中央へFFFEを挿入できる
MAC先頭オクテットの
U/Lビットを識別できる
U/Lビットが
0x02に相当すると判断できる
XOR 02で
U/Lビットを反転できる
反転は固定値設定ではないと理解する
8オクテットを
64ビットインターフェース識別子へ変換できる
/64プレフィックスと
64ビットインターフェース識別子を結合できる
Cisco IOSの
ipv6 address <prefix>/64 eui-64
を読める
MACとプレフィックスから
期待するアドレスを予測できる
生成アドレスから
FFFE位置を検証できる
U/Lビット反転漏れを識別できる
インターフェース識別子から元MACを
逆算して検証できる
プレフィックス誤りと
インターフェース識別子誤りを分離できる
Modified EUI-64と
SLAACを区別できる
すべてのIPv6インターフェース識別子が
EUI-64由来ではないと判断できる
必要があります。
まとめ
Modified EUI-64は、
48ビットMACアドレス
から、
64ビットインターフェース識別子
を生成する方法です。
基本手順は、
48ビットMAC
↓
24ビット
+
24ビットへ分割
↓
中央へFFFE挿入
↓
先頭オクテットの
U/Lビットを反転
↓
64ビットのModified EUI-64インターフェース識別子
です。
例えば、
MAC
00:1A:2B:3C:4D:5E
なら、
00:1A:2B | 3C:4D:5E
↓
00:1A:2B:FF:FE:3C:4D:5E
↓
00 XOR 02
=
02
↓
02:1A:2B:FF:FE:3C:4D:5E
↓
021a:2bff:fe3c:4d5e
となります。
プレフィックスが、
2001:db8:10:20::/64
なら、
2001:db8:10:20:21a:2bff:fe3c:4d5e
が完成アドレスです。
Cisco IOSでは、
ipv6 address 2001:db8:10:20::/64 eui-64
のように指定プレフィックスとEUI-64インターフェース識別子を組み合わせる設定があります。
トラブルシューティングでは、
MAC
↓
FFFE
↓
U/Lビット
↓
インターフェース識別子
↓
プレフィックス
↓
完成アドレス
を順に確認し、
FFFE位置誤り
U/Lビット誤り
インターフェース識別子誤り
プレフィックス誤り
を分離します。
また、
Modified EUI-64
=
SLAAC
ではありません。
Modified EUI-64は、
インターフェース識別子生成方法
であり、SLAACは、
IPv6アドレス割り当て方式
です。
さらに、
すべてのIPv6インターフェース識別子
=
MAC由来Modified EUI-64
でもありません。
Modified EUI-64を適用する確認情報がある場合に、この生成手順を使用します。
ページ023での最終流れは、
48ビットMAC
↓
24ビット分割
↓
FFFE挿入
↓
U/Lビット反転
↓
64ビットインターフェース識別子
↓
/64プレフィックスとの結合
↓
期待するアドレス
↓
実際値との比較
↓
Modified EUI-64確認結果
です。
次のページ024では、Modified EUI-64というインターフェース識別子生成方法ではなく、SLAAC/ステートレスDHCPv6/ステートフルDHCPv6とRAフラグを使ったIPv6アドレス割り当て方式を扱います。
理解確認
このページの内容を14問で確認します。
理解確認14問へ →