Cisco / CCNA 200-301 v2.0

試験項目 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問へ →