質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.30%
Network+

Network+とは、IT業界団体CompTIA認定のネットワーク技術に関する知識を証明する資格です。ネットワーク技術者として、実務で必要なネットワークセキュリティ・ネットワークアーキテクチャなどの知識を取得している証明となります。

Q&A

解決済

2回答

12718閲覧

MACアドレスのローカル、グローバルの判定方法

退会済みユーザー

退会済みユーザー

総合スコア0

Network+

Network+とは、IT業界団体CompTIA認定のネットワーク技術に関する知識を証明する資格です。ネットワーク技術者として、実務で必要なネットワークセキュリティ・ネットワークアーキテクチャなどの知識を取得している証明となります。

3グッド

7クリップ

投稿2020/03/12 09:32

質問内容

MACアドレスのローカルアドレスとグローバルアドレスをG/Lビット以外で区別する方法について

詳細

MACアドレスの第1オクテットの下位から2番目のビット(G/Lビット)が「1」の場合、ローカルアドレスである、となっています。
(参考 https://ascii.jp/elem/000/000/417/417556/ )

そのため、16進数で表した第1オクテットの1桁目は「2」「6」「A」「E」になり「02-xx-xx-xx-xx-xx」等はローカルアドレスに当たると思います。

しかし、IEEEが公開しているベンダーIDのリストを見ると、「02」から始まるベンダーIDが登録されているようです。
例 02-C0-8C (hex) 3COM

RFC5342等を読み落としていて、実はG/Lビット以外にもローカルアドレスと判定する条件があるのかもしれないと思い、質問させていただきました。

###問題点
例えば仮想環境等で重複がないようにローカル用のMACアドレスを生成した場合、本来であればそこに物理的なNICを追加したとしても、アドレス重複は生じないはずです。
しかしながら、上記の「02」等から始まるMACアドレスがベンダーIDに割り当てられていると、想定外のアドレスの重複により障害が生じそうです。(確率的には低そうですが)

RFCを読んでも、G/Lビット以外にローカルアドレスとグローバルアドレスを区別する条件は見当たりませんでした。
G/Lビットが立っていて、かつ、ベンダーIDのリストと重複しない、という条件でローカルアドレスを生成すれば重複しないでしょうが、ベンダーIDは増える可能性があるため、インターネットに繋ぐ等、リスト更新の仕組みを追加しなければなりません。

s.k, tyochiai👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

10

ベストアンサー

otn さんの仰るように、歴史的経緯のようですね。 MAC アドレスのベンダー ID は、 正確には OUI (Organizationally Unique Identifier) と呼ばれますが、 こちらの IEEE による OUI の割り当てに関するガイドライン にて、 p.2 に次のような記載が御座います。

NOTE – Approximately 18 organizational identifiers assigned to early Ethernet implementers (some of the BlockID assignments made prior to approval of IEEE Std 802.3 - 1985) have the X bit equal to 1. The BlockID,like the OUI that replaced it, was a 24-bit number that served as the base for a block of 2**24 48-bit MAC addresses. The BlockID assignments are recorded in the MA-L (OUI) registry.

(拙訳)
注: 初期の Ethernet 実装者に割り当てられた (IEEE 802.3-1985 標準の承認前に BlockID として割り当てられた) 、約 18 個の識別子に於いては X bit (訳注: MAC アドレスでは G/L bit 相当) が 1 になっています。 BlockID とは、 OUIに類似した 48 bit MAC アドレスを 24 bit 毎のブロックに分けるための 24 bit の値で、 OUI のレジストリに吸収される形で置き換えられました。

つまり、 G/L bit の扱いが決まる以前に割り当てられた OUI であって、その時の負債が今も残っているということかと。特に「G/L bit 以外にローカルアドレスを識別する条件が存在する」というわけでは無さそうです。

こういった事情なので、「ローカルアドレスとして判定する」手段としては、以下の何れかを自ら判断して選択することになると思われます。

  1. あくまで歴史的経緯で存在するだけで、現行のハードウェアとして出会うことはまず無いと考えられるため、例外は無視して G/L bit のみで判定する
  2. あくまで歴史的経緯で存在するだけで、将来追加されることは無いため、既知の G/L bit が立った OUI を静的に覚えておいて除外する

投稿2020/03/12 15:03

編集2020/03/12 15:06
argparse

総合スコア1017

ttb, TsukubaDepot, zyun, CHERRY, s.k, ikedas, nerianighthawk, FKD👍を押しています

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/03/12 16:24

OUIを調べてみたら、02から始まるのは確かに老舗(というかもう存在しない企業も)ばかりでした。 おっしゃるとおり、新規追加はされなさそうと割り切り、念のためくらいで静的に除外リストをもってしまうのが正解みたいですね。 (BlockIDという用語は初めて知りました)
guest

1

WWW登場以前の歴史は調べにくいので、ちゃんと調べずに書いてしまいますが、歴史的経緯ではないでしょうか?
ローカルのMACアドレスが登場する以前に割り当てられてしまったとか。
NICのMACアドレスをユーザーが書き換えられるようになったのは、当初からではなかったと思います。
(そんな機能を付けるとコストが上がるはず)

投稿2020/03/12 11:44

otn

総合スコア86329

退会済みユーザー👍を押しています

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/03/12 16:14 編集

回答ありがとうございます。 まさかWWW以前の歴史までさかのぼるとは思わずびっくりしています。 VM環境だけではなく、ドライバによってはお手軽に物理NICのMACアドレスを書き換えられため、標準的な機能かと思っていました。 確かにRFCの番号が比較的若いので遡って調べてみます。
otn

2020/03/12 23:51

昔の話なので、いつ頃だったか覚えていませんが、PCのNICのプロパティを見て、MACアドレスが設定可能になってたので、驚いた記憶があります。 企業のLANが大規模になって、障害調査のために、あらかじめMACアドレスを自分で発番管理したいというニーズが出てきたからでしょうね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問