MACアドレス
From Wikipedia, the free encyclopedia
MACアドレス(マック・アドレス、英語: Media Access Control address または 英語: Medium Access Control address)とは、Media Access Controlにおいて、ネットワークインタフェースを識別するために使用される識別子である。OSI参照モデルでは第2層にあたるデータリンク層に属する。
1982年にゼロックスが開発したイーサネットIIのアドレス体系に由来しており、2026年現在ではIEEE 802規格のほぼ全てのネットワークで用いられる。物理アドレス (Physical Address)[注釈 1]やノードID (Node ID) とも呼ばれ、原則として機器メーカによって全てのネットワーク機器に一意に割り当てられるが、様々な要因で例外が存在する。
アドレスの構成
世界中のMACアドレスの管理を行っているIEEE 802では、以下2種類の長さを持つアドレスを規定している[1][注釈 2]。
- EUI-48: 48ビット(6バイト)のアドレス。イーサネット・IEEE 802.11(Wi-Fi)・Bluetoothなどで用いる。
- EUI-64: 64バイト(8バイト)のアドレス。ZigBee・FireWireなどで用いる。
一般には04-A3-43-5F-43-23 や 32:61:3C:4E:B6:05 などのように、ハイフン・コロンなどで1バイトずつ区切った2桁の十六進数で表現される。このうち先頭1バイトには以下のような特殊ビットが含まれる[2]。
- ビット0x02 (上位7ビット目):
U/Lビット (G/Lビットとも)。0であればグローバルアドレス(Universal)、1であればローカルアドレス(Local)。 - ビット0x01 (上位8ビット目):
I/Gビット。0であればユニキャスト(Individual)、1であればマルチキャスト(Group)。
これらを組み合わせることで下表に示すようなMACアドレスになる。
| 種別 | 先頭1バイトの値 |
|---|---|
| グローバルユニキャスト | *0, *4, *8, *C |
| グローバルマルチキャスト | *1, *5, *9, *D |
| ローカルユニキャスト | *2, *6, *A, *E |
| ローカルマルチキャスト | *3, *7, *B, *F |
グローバルアドレス
IEEE Registration Authority (IEEE登録サイト)でプルダウンから「All MAC (MA-L, MA-M, MA-S)」を選択すると登録されている製造者名が一覧される。上位3バイト(6桁)のアドレスでFilterするとその製造者が表示される。
機器に割り振られるMACアドレスは、一般にグローバルユニキャストアドレスが用いられる。多くの場合、グローバルアドレスの上位3バイトは機器製造者を表す値で、これをOUI (Organizationally Unique Identifier)[3]と呼ぶ。
機器製造者はIEEEに料金を支払ってMACアドレスの先頭部分の登録を受けている。登録を受けた各製造者は残りの下位部分を独自に重複しないように割り当てており、3バイトのOUIの割り当てを受けることで残りの3バイトで1677万7216個(= 224)の製品に個別のMACアドレスが割り振れる。この仕組みにより、原則として、MACアドレスは世界中で唯一の番号となる。例えば 04-A3-43-5F-43-23 のようなMACアドレスでは、
- 最初の3バイト(
04-A3-43) がベンダーコード (OUI) - 次の1バイト(
5F) が機種ID - 最後の2バイト(
43-23) が機器シリアルID
などの運用が製造者によってしばしば行われるため、MACアドレスの上位4バイトから機種名を特定できる場合がある。
このような割り振り方はMA-L (MAC Address Block Large)と呼ばれるが、IEEEへの登録方式にはこのほかにも以下のようなものがある[4]。
- MA-L (Large) - 24ビット(3バイト)をOUIとして登録する。MACアドレス個数は224個(EUI-48)または240個(EUI-64)。
- MA-M (Medium) - 28ビットを登録する。MACアドレス個数は220個または236個。
- MA-S (Small) - 36ビットを登録する[注釈 3]。MACアドレス個数は212個または228個。
これにより、MA-Lよりも小さい規模のものをMA-MやMA-Sで安価に登録できるようになっている。IEEE 802ではMACアドレスの登録データをWebで検索できるようにしている[5]。
特殊なMACアドレス
IEEE 802による上記の規定のほか、IEEEのワーキンググループやIETFでは主なものとして以下の特殊アドレスが規定されている。
| MACアドレス | 用途 |
|---|---|
FF-FF-FF-FF-FF-FF[6] (EUI-48の例) |
ブロードキャストアドレス。全ビットが1から成るもの。ブロードキャストアドレス宛てのフレームをスイッチは常にフラッディングし、LAN内の全端末が受信する。 |
01-80-2C-00-00-**[7] |
IEEE 802.1Qで予約されているアドレス。**の部分は00~3Fの範囲の一部が規定されており、BPDU・PAUSEフレーム・LACP・EAP・LLDP・CFMなど多岐にわたる用途がある。00-80-2CはIEEE 802が所有するOUI。 |
01-00-5E-**-**-**[8] |
IPv4のマルチキャストパケットの変換に用いる。00-00-5EはIANAが所有するOUI。 |
33-33-**-**-**-**[9] |
IPv6のマルチキャストパケットの変換に用いる。**はIPv6アドレスの末尾32ビット。 |
00-00-5E-00-01-**[10] |
VRRPの仮想MACアドレス。**の部分は仮想ルータID (VRID)。 |
通信処理での役割
通常の機器間の通信では、送信ノードはユニキャストMACアドレスを宛先として指定したフレームを衝突ドメイン内の全ノードに送信する。一致するMACアドレスを持つノードのみがそのフレームを受信して処理し、それ以外のノードは無視する[11]。
L2スイッチなどのネットワーク中継機器では、通信機器のポートと、そのポートに接続される相手の通信機器のMACアドレスのマッピング情報をMACアドレステーブルに保存して学習している[12]。スイッチは、受信フレームの宛先MACアドレスとMACアドレステーブルを参照して以下のように動作を切り替えている[13]。
- 宛先MACアドレスがどのポート先にあるかを学習している場合は、そのフレームを当該ポートにのみ転送する。これをフィルタリングと呼ぶ。
- 宛先MACアドレスがどのポート先にあるかを学習していない場合は、そのフレームを受信ポートを除く全ポートに転送する。これをフラッディングと呼ぶ。
変更と重複
MACアドレスは物理アドレスと呼ばれるが、ソフトウェアの設定により変更可能なネットワーク機器も存在する。また、仮想マシンなどでは任意の値に変更できる場合もある。このため、無線LAN(Wi-Fi)などの情報セキュリティの確保のためにMACアドレス・フィルタリングを利用する場合、ブラックリストによる防御は突破される可能性がある[16]。
また、以下のOSでは、程度の差こそあれWi-Fiにおいて毎回異なるMACアドレスを使用する。
このようにMACアドレスは変更可能なため、MACアドレスが重複することがある。また、ハードウェアの出荷時点から重複が存在している可能性がRFC 7136やRFC 7217で指摘されている[20]。
近傍にMACアドレスが重複するネットワーク機器が複数あると正常な通信ができない。また、DHCPなど、MACアドレスを装置の識別に使用する場合もMACアドレスが重複すると意図しない動作となることがある。特に管理用途でMACアドレスを使う場合は、同一セグメントに限らず重複が問題となることがある。