
MACアドレス(メディアアクセス制御アドレス)は、ネットワークセグメント内の通信でネットワークアドレスとして使用するために、ネットワークインターフェイスコントローラ(NIC)に割り当てられる一意の識別子です。この使用法は、イーサネット、Wi-Fi、Bluetoothなど、ほとんどのIEEE 802ネットワーク技術で一般的です。オープンシステム相互接続(OSI)ネットワークモデルでは、MACアドレスはデータリンク層のメディアアクセス制御プロトコルサブレイヤーで使用されます。MACアドレスは通常、ハイフン、コロン、または区切り文字なしで区切られた2桁の16進数の6つのグループとして表現されます。
MACアドレスは主にデバイスメーカーによって割り当てられるため、焼き付けアドレス、イーサネットハードウェアアドレス、ハードウェアアドレス、または物理アドレスと呼ばれることが多い。アドレスは、インターフェースハードウェアの読み出し専用メモリなどに保存される場合もあれば、ファームウェアによって保存される場合もある。ただし、多くのネットワークインターフェースはMACアドレスの変更に対応している。
アドレスには通常、製造元の組織固有識別子(OUI) が含まれます。MAC アドレスは、電気電子学会(IEEE)が管理する拡張固有識別子 (EUI) に基づく 2 つの番号空間の原則に従って形成されます。EUI -48 (旧称MAC-48に代わるもの)とEUI-64です。
ルーターやマルチレイヤースイッチなど、複数のネットワークインターフェースを持つネットワークノードは、同一ネットワーク内の各ネットワークインターフェースに固有のMACアドレスを持つ必要があります。ただし、異なるネットワークに接続された2つのネットワークインターフェースは、同じMACアドレスを共有できます。

IEEE 802 MAC アドレスは、元々はXerox Network Systems Ethernet アドレス指定方式に由来します。 [ 1 ]この48 ビットのアドレス空間には、潜在的に2⁴⁸ (281 兆以上) 個の MAC アドレスが存在します。IEEE は、元々 MAC-48 と呼ばれ、現在は EUI-48 識別子と呼ばれる MAC アドレスの割り当てを管理しています。IEEE は、EUI-48 空間を使用するアプリケーションの目標寿命を 100 年 (2080 年まで) としており、それに応じてアプリケーションを制限しています。IEEE は、Ethernet 以外のアプリケーションには、より豊富な EUI-64 の採用を推奨しています。[ 2 ]
EUI-48 と MAC-48 識別子の違いは、名前と用途のみです。MAC-48 は、既存の 802 ベースのネットワーク アプリケーション内のハードウェア インターフェイスのアドレス指定に使用されていました。EUI-48 は現在、802 ベースのネットワークに使用されており、Bluetoothなどの他のデバイスやソフトウェアを識別するためにも使用されています。[ 3 ] [ 4 ] IEEE は現在、MAC-48を廃止された用語とみなしています。[ 5 ]現在、すべてのケースでEUI-48が使用されています。さらに、EUI-64 番号付けシステムは、当初、単純な変換メカニズムによって MAC-48 と EUI-48 の両方の識別子を包含していました。[ 3 ] [ a ]これらの変換はその後廃止されました。[ 3 ]
個別アドレスブロック(IAB) は、以前はOUI-36と呼ばれていたMA-S ( MAC アドレスブロック、小) に置き換えられた非アクティブなレジストリであり、 2014 年 1 月 1 日現在、IAB [ 4 ]レジストリ製品とのアドレスの重複はありません。IAB は、以前はOUIレジストリと呼ばれていたMA-L ( MAC アドレスブロック、大) レジストリのOUIを使用します。OUI という用語はまだ使用されていますが[ 4 ]、IEEE 登録機関は管理していません。OUI には、IEEE が提供する 12 ビットが追加されて連結され (合計 36 ビット)、IAB を所有する組織が (最大 4096 台の) 個々のデバイスに割り当てることができるのは 12 ビットのみです。IAB は、4096 個以下の固有の 48 ビット番号 (EUI-48) を必要とする組織に最適です。 OUI では、割り当て先がさまざまな番号空間 (たとえば、EUI-48、EUI-64、SNAPやEDIDなどのさまざまなコンテキスト依存識別子番号空間) に値を割り当てることができますが、個別アドレスブロック (IAB) は EUI-48 識別子の割り当てにのみ使用できます。IAB が割り当てられる OUI に基づくその他のすべての潜在的な使用は予約されており、IEEE 登録機関の所有物のままです。2007 年~ 2012 年 9 月の間は、OUI 値 00:50:C2 が IAB の割り当てに使用されました。2012 年 9 月以降は、値 40:D8:55 が使用されました。すでに割り当てられている IAB の所有者は、引き続きそれを使用できます。[ 4 ]
MA-Sレジストリには、登録者ごとに、一部の規格で使用される36ビットの固有番号と、EUI-48およびEUI-64識別子のブロックが含まれています(ただし、IABの登録者はEUI-64を割り当てることはできません)。MA-SにはOUIの割り当ては含まれていません。
さらに、MA-M(MACアドレスブロック、媒体)は、2 20個のEUI-48識別子と2 36個のEUI-64識別子の両方を提供し、最初の28ビットはIEEEによって割り当てられます。割り当てられたMA-Mブロックの最初の24ビットは、IEEEに割り当てられたOUIであり、再割り当てされないため、MA-MにはOUIの割り当ては含まれません。
アドレスは、ユニバーサル管理アドレス (UAA) またはローカル管理アドレス (LAA) のいずれかになります。ユニバーサル管理アドレスは、デバイスの製造元によって一意に割り当てられます。最初の 3 オクテット (送信順) は、識別子を発行した組織を識別し、組織固有識別子(OUI) として知られています。[ 3 ]アドレスの残りの部分 (EUI-48 では 3 オクテット、EUI-64 では 5 オクテット) は、一意性の制約の下で、その組織がほぼ自由に割り当てます。ローカル管理アドレスは、ソフトウェアまたはネットワーク管理者によってデバイスに割り当てられ、物理デバイスの焼き付けられたアドレスを上書きします。
ローカル管理アドレスは、アドレスの最初のオクテットの最下位 2 番目のビットを設定 (値 1 を割り当てる) することで、ユニバーサル管理アドレスと区別されます。このビットは、 Universal/Localの略であるU/Lビットとも呼ばれ、アドレスがどのように管理されているかを識別します。[ 6 ] [ 7 ] : 20このビットが 0 の場合、アドレスはユニバーサル管理されます。そのため、すべての UAA ではこのビットは 0 です。1 の場合、アドレスはローカル管理されます。例のアドレス06-00-00-00-00-00では、最初のオクテットは 06 (16 進数) で、その 2 進形式は 000001 1 0 であり、最下位 2 番目のビットは 1 です。したがって、これはローカル管理アドレスです。[ 8 ]多くのハイパーバイザーは独自の OUI 内で動的 MAC アドレスを管理します が 、LAA 範囲内で完全に一意の MAC を作成すると便利な場合がよくあります。[ 9 ]
仮想化環境では、 QEMUやXenなどのハイパーバイザーが独自のOUI(組織固有識別子)を持っています。新しい仮想マシンはそれぞれ、ローカルネットワーク上で一意となるように最後の3バイトを割り当てることでMACアドレスを設定して起動されます。これはMACアドレスのローカル管理ではありますが、IEEEの定義におけるLAA(ローカルアクセスアドレス)ではありません。
このハイブリッドな状況の歴史的な例として、DECnetプロトコルが挙げられます。DECnetプロトコルでは、ユニバーサルMACアドレス(Digital Equipment CorporationのOUI AA-00-04)がローカルで管理されます。DECnetソフトウェアは、完全なMACアドレスの最後の3バイトを00-XX-YYに設定します(これにより、完全なMACアドレスはAA-00-04-00-XX-YYとなります)。ここで、XX-YYはホストのDECnetネットワークアドレスxx.yyを表します。これにより、DECnetホストのMACアドレスはDECnetアドレスから特定できるため、DECnetにアドレス解決プロトコルは不要になります 。
アドレスの最初のオクテットの最下位ビットは、I/G、つまり個人/グループビットと呼ばれます。[ 6 ] [ 7 ] : 20このビットが0(ゼロ)の場合、フレームは1つの受信ネットワークインターフェイスにのみ到達することを意味します。[ 10 ]このタイプの送信はユニキャストと呼ばれます。ユニキャストフレームは、衝突ドメイン内のすべてのノードに送信されます。最新の有線環境(つまり、単純なハブではなくスイッチを使用する場合)では、衝突ドメインは通常、2つのネットワークインターフェイス間のイーサネットケーブルの長さです。無線環境では、衝突ドメインは、特定の無線信号を検出できるすべての受信機です。スイッチが特定のMACアドレスにつながるポートを知らない場合、スイッチはユニキャストフレームをすべてのポート(送信元ポートを除く)に転送します。この動作はユニキャストフラッドとして知られています。[ 11 ]一致するハードウェアMACアドレスを持つノードのみが(通常)フレームを受け入れます。 MACアドレスが一致しないネットワークインターフェースは、プロミスキャスモードになっていない限り、フレームを無視します。
最初のオクテットの最下位ビットが1に設定されている場合(つまり、2番目の16進数が奇数の場合)、フレームは1回だけ送信されます。ただし、ネットワークインターフェースコントローラは、個々のMACアドレスの一致以外の基準に基づいて、フレームを受け入れるか無視するかを選択します。たとえば、設定可能なマルチキャストMACアドレスの受け入れリストに基づいて判断します。これをマルチキャストアドレッシングと呼びます。
IEEEは、複数のネットワークインターフェースカードを同時にアドレス指定できるように、いくつかの特殊なアドレスタイプを組み込んでいます。
これらはすべてグループアドレスの例であり、個別アドレスとは異なります。MACアドレスの最初のオクテットの最下位ビットによって、個別アドレスとグループアドレスが区別されます。個別アドレスではこのビットは0に設定され、グループアドレスでは1に設定されます。グループアドレスは、個別アドレスと同様に、全体管理またはローカル管理が可能です。
U/LビットとI/Gビットは独立して処理され、4つの可能性すべてが存在します。[ 8 ] IPv6マルチキャストは、33-33 - XX-XX-XX-XX (両方のビットがセットされている)の範囲のローカル管理マルチキャストMACアドレスを使用します。[ 12 ] : §2.3.1
U/LビットとI/Gビットの位置が分かれば、一般的なMACアドレス表記では、次の表に示すように、1桁の数字でそれらを識別できます。
IEEE 802c 規格[ 13 ]では、ローカルで管理される MAC アドレス ブロックをさらに 4 つの象限に分割しています。この追加の分割は構造化ローカル アドレス プラン (SLAP) と呼ばれ、その使用は任意です。
以下のネットワーク技術は、EUI-48識別子フォーマットを使用します。
IEEE 802ネットワーク(イーサネットやWi-Fiなど)に接続するすべてのデバイスは、EUI-48アドレスを持っています。PC、スマートフォン、タブレット端末といった一般的なネットワーク接続機器は、EUI-48アドレスを使用します。
EUI-64識別子は以下で使用されます。
イーサネットなどのブロードキャストネットワークでは、MACアドレスはセグメント上の各ノードを一意に識別し、フレームを特定のホスト宛てにマークすることを可能にする。そのため、MACアドレスは、上位層プロトコルが複雑で機能的なネットワークを構築するために依存する、リンク層(OSI参照モデルの第2層)ネットワークの大部分の基礎を形成している。
多くのネットワークインターフェイスは、MACアドレスの変更をサポートしています。ほとんどのUnix系システムでは、コマンドユーティリティifconfigを使用してリンクアドレスエイリアスを削除および追加できます。たとえば、NetBSDでは、アクティブifconfigディレクティブを使用して、接続されているアドレスのうちどれをアクティブにするかを指定できます。[ 16 ]したがって、さまざまな構成スクリプトとユーティリティにより、起動時またはネットワーク接続を確立する前にMACアドレスをランダム化できます。
ネットワーク仮想化では、MACアドレスの変更が必要です。MACスプーフィングでは、これはコンピュータシステムのセキュリティ脆弱性を悪用するために行われます。Apple iOSやAndroidなどの最新のオペレーティングシステム、特にモバイルデバイスでは、追跡システムを回避するために、無線アクセスポイントをスキャンする際にネットワークインターフェイスにランダムなMACアドレスを割り当てるように設計されています。[ 17 ] [ 18 ]
インターネットプロトコル(IP)ネットワークでは、 IPアドレスに対応するインターフェースのMACアドレスは、IPv4の場合はアドレス解決プロトコル(ARP)、 IPv6の場合は近隣探索プロトコル(NDP)によって照会できます。このように、ARPとNDPはOSIレイヤ3アドレスとレイヤ2アドレスを関連付けます。
エドワード・スノーデンによると、米国国家安全保障局は、MACアドレスを監視することで都市内のモバイルデバイスの動きを追跡するシステムを持っている。[ 19 ]この行為を阻止するため、Appleはネットワークをスキャンする際にiOSデバイスでランダムなMACアドレスを使用し始めた。 [ 17 ]他のベンダーもすぐにこれに倣った。スキャン中のMACアドレスのランダム化は、Androidバージョン6.0以降、[ 18 ] Windows 10、[ 20 ] Linux 3.18に追加された。[ 21 ] MACアドレスのランダム化技術の実際の実装は、デバイスによって大きく異なる。[ 22 ]さらに、これらの実装のさまざまな欠陥や不備により、攻撃者はMACアドレスが変更された場合でも、プローブ要求の他の要素[ 23 ] [ 24 ]やタイミング[25][22]などからデバイスを追跡できる可能性がある。ランダムなMACアドレスが使用されていない場合、研究者は実際のIDを特定の無線MACアドレスにリンクできることを確認している。[ 26 ]
ランダム化された MAC アドレスは、上述の「ローカル管理」ビットによって識別できます。[ 27 ]
SSID非表示モード(ネットワーククローキング)で無線アクセスポイントを使用すると、モバイル無線デバイスは移動中に自身のMACアドレスを公開するだけでなく、プローブ要求パケットの一部としてこれらのMACアドレスを送信するように設定されている場合、デバイスが既に接続したSSIDに関連付けられたMACアドレスも公開してしまう可能性があります。これを防ぐための代替策としては、アクセスポイントをビーコンブロードキャストモードまたはSSID付きプローブ応答モードに設定することが挙げられます。これらのモードでは、プローブ要求は不要になるか、以前に認識されたネットワークのIDを公開せずにブロードキャストモードで送信されます。[ 28 ]
EUI-48 アドレスを人間が読みやすい形式で印刷するための標準 ( IEEE 802 ) フォーマットは、送信順にハイフン ( - ) で区切られた 6 つの 2 つの16桁のグループ (例: 01-23-45-67-89-AB ) です。この形式は、EUI-64 でも一般的に使用されています (例: 01-23-45-67-89-AB-CD-EF )。[ 3 ]他の慣例としては、コロン (:) で区切られた 6 つの 16 桁のグループ (例: 01:23:45:67:89:AB ) や、ドット (.) で区切られた 3 つの 16 桁のグループ (例: 0123.4567.89AB ) などがあります。これも送信順です。[ 29 ]
MAC アドレスの標準表記法(正規形式とも呼ばれる)は、各バイトの最下位ビットが最初に送信される送信順に記述され、たとえばifconfig、、、ip addressコマンドの出力で使用されます。ipconfig
しかし、IEEE 802.3 (イーサネット) とIEEE 802.4 (トークンバス) は、バイト (オクテット) を左から右へ、各バイトの最下位ビットから順にワイヤ上に送信するのに対し、IEEE 802.5 (トークンリング) とIEEE 802.6 (FDDI) は、バイトを最上位ビットから順にワイヤ上に送信するため、後者のシナリオでアドレスが標準表現とは逆のビットで表現されると混乱が生じる可能性があります。たとえば、標準形式のアドレス12-34-56-78-9A-BC は、標準の送信順序 (最下位ビットから) でビットとしてワイヤ上を送信されます01001000 00101100 01101010 00011110 01011001 00111101。しかし、トークンリング ネットワークでは、最上位ビットから順にビットとして送信されます00010010 00110100 01010110 01111000 10011010 10111100。後者は、48-2C-6A-1E-59-3Dと誤って表示される可能性があります。これはビット反転順序、非正規形式、MSB形式、IBM形式、またはトークンリング形式と呼ばれます。[ 30 ]
MAC アドレスの普遍的な管理は、ゼロックス社がイーサネット アドレスのブロック識別子 (ブロック ID) を管理したことから始まりました。
エンドユーザーのプライバシーを向上させるため、さまざまなオペレーティングシステムベンダー(Apple iOS 14、Android 10、Windows 10)は、Wi-Fi動作用のランダムMACアドレスとも呼ばれるローカル管理MACアドレス(LAA)の使用を有効にしています。ワイヤレスエンドポイントがランダムMACアドレスに関連付けられている場合、エンドポイントのMACアドレスは時間の経過とともに変化します。
人間が読みやすい形式で表現するには、次の形式で MAC アドレスを入力できます。送信順にハイフン (-) で区切られた 6 つの 2 つの 16 桁のグループ、[...]コロン (:) で区切られた 6 つの 2 つの 16 桁のグループ、[...]ドット (.) で区切られた 3 つの 16 桁のグループ...