MAC アドレス生成

ランダムな MAC アドレスを生成。形式・個数・ユニキャスト/マルチキャスト・ローカル管理ビットを選択可。

必要な時にランダム MAC。 コロン・ハイフン・スペース・Cisco ドット表記で 1 つまたは複数の MAC を生成し、ユニキャスト/マルチキャストとローカル管理ビットを制御。暗号乱数でブラウザ内生成。

MAC アドレスの構造

6 バイト、2 つの部分

MAC アドレスは 48 ビットで、通常は 6 つの 16 進バイトで表記します。先頭 3 バイトは組織固有識別子(OUI)で、IEEE がハードウェアベンダーに販売するブロックです。後半 3 バイトはそのベンダーが個々の機器に割り当てます。MAC からメーカーをたどれるのはこのためで、OUI は公開レジストリであり、検索ツールは先頭 3 バイトを照合しているにすぎません。

表記はエコシステムによって異なりますが、意味は同じです。コロン区切り(00:1a:2b:3c:4d:5e)は Unix と IEEE の慣例、ハイフン区切り(00-1A-2B-3C-4D-5E)は Windows の表示、Cisco は 4 桁 16 進 3 組をドットで区切ります(001a.2b3c.4d5e)。いずれも同じ 48 ビットを符号化しています。

先頭オクテットにある 2 つのフラグビット

先頭バイトの下位 2 ビットは識別子の一部ではありません。ビット 0 はユニキャストとマルチキャストを区別し、0 なら単一インターフェース宛て、1 ならグループ宛てを意味します。01:00:5e:... が IPv4 マルチキャストのプレフィックスであり、ff:ff:ff:ff:ff:ff がブロードキャストなのは、このビットが立っているからです。

ビット 1 はローカル / グローバルフラグです。0 なら IEEE が割り当てた OUI 由来のアドレス、1 ならローカルに割り当てられたアドレスでベンダーとしての意味を持ちません。自分で生成するアドレスは必ずこのビットを立てるべきで、このツールが生成するバイトの 2 桁目が常に 2、6、A、E のいずれかになるのはそのためです。この手順を省くと、テストデータが実在ベンダーの範囲と衝突します。

ランダム MAC とその影響

MAC は Wi-Fi のプローブ要求ごとに平文で送出されるため、場所をまたいで個人を追跡する便利な手がかりになっていました。現在のスマートフォンやノート PC は既定でネットワークごとに異なるローカル管理 MAC を提示し、定期的にローテーションします。これにより受動的な追跡は破綻しますが、同時に「MAC は安定した端末識別子である」という前提も崩れます。MAC ベースの許可リスト、DHCP 予約、キャプティブポータルのセッションは、現代のクライアントがいるネットワークでは設計を見直す必要があります。

ここで生成されるようなアドレスは、検証用トポロジ、仮想マシンのテンプレート、テストデータ、ドキュメントなど、実在ハードウェアに属さないと保証されたもっともらしいアドレスが欲しい場面で役立ちます。

オープンソースに関する注記:crypto.getRandomValues を用いバニラ JavaScript で実装。サードパーティライブラリは使用していません。

よくある質問

「ローカル管理」とは何ですか?
先頭オクテットの下位から 2 番目のビットを立て、IEEE のベンダー OUI 由来ではなく自分で割り当てたアドレスであることを示します。自分で生成するアドレスには必ず付けてください。
ユニキャストとマルチキャストの違いは何ですか?
先頭オクテットの最下位ビットで決まります。0 ならユニキャストで単一のインターフェース宛て、1 ならマルチキャストでインターフェースのグループに配送されます。
どの形式を使うべきですか?
コロン区切りは Linux や一般的なネットワークの慣習、ハイフンは Windows でよく使われ、4 桁ごとのドット区切りは Cisco の表記です。表しているバイト列はいずれも同一です。
生成されたアドレスの一意性は保証されますか?
保証されません。暗号学的乱数源から生成しているため衝突はごく起こりにくいものの、実際のネットワークとの照合は行いません。大規模に導入する前に確認してください。
実際のネットワークで使えますか?
使えます。仮想マシン、コンテナ、テスト用インターフェースであれば問題ありません。ただしローカル管理ビットを立てて、ベンダー割り当てのアドレスと衝突しないようにしてください。
そもそもなぜ MAC アドレスを生成するのですか?
多くは仮想マシンやコンテナのプロビジョニング、ラボやテスト環境の構築、あるいは無線クライアントのプライバシー目的のアドレスランダム化のためです。