ネットワークの世界には、よく似ているのに役割がまったく違う2つの「アドレス」があります。「IPアドレス」と「MACアドレス」です。「IPアドレスは聞いたことがあるけれど、MACアドレスはちょっと曖昧……」という方も多いのではないでしょうか。
この記事では、MACアドレスとは何か、なぜIPアドレスとは別に必要なのか、そして実際の通信でどう使われているのかを丁寧に解説します。さらに、AWSなどクラウド環境におけるMACアドレスの扱いまで踏み込んで紹介します。読み終える頃には、ネットワーク機器の中で起きていることがクッキリ見えてくるはずです。
MACアドレスとは何か
MACアドレス(Media Access Control address)とは、ネットワーク機器に割り当てられる、世界で唯一の識別番号です。パソコンやスマホ、ルータ、プリンタなど、ネットワーク通信を行うすべての機器が持っています。正確に言うと、機器そのものではなく、機器に内蔵されているNIC(Network Interface Card:ネットワークインターフェースカード)に割り当てられる番号です。
MACアドレスは48ビット(6バイト)の数値で、人間が読めるよう16進数12桁で表記されます。00:1A:2B:3C:4D:5E のように2桁ずつコロンで区切って書くのが一般的です(ハイフンやドットで区切る流派もあります)。
MACアドレスは別名「物理アドレス」「ハードウェアアドレス」とも呼ばれます。これは、原則として製造時にハードウェアへ焼き付けられているからです。IPアドレスのように後から設定や変更を行うものではなく、機器固有の「指紋」のようなもの、と考えてください。

MACアドレスの48ビットは、意味のある2つの部分に分かれています。前半24ビットはOUI(Organizationally Unique Identifier)と呼ばれ、機器のメーカー(ベンダー)ごとに固有の番号が割り振られています。これはIEEE(米国電気電子学会)という標準化団体が一元管理しており、AppleやIntel、Ciscoといったメーカーはそれぞれ自分専用のOUIを持っています。後半24ビットは、OUIを取得した各メーカーが自社製品に重複しないよう割り当てる番号です。前半でメーカーを区別し、後半でその中の個体を区別する2段構えのおかげで、世界中の機器のMACアドレスは原則として重複しないようになっています。
豆知識:MACアドレスの前半24ビット(OUI)を調べると、その機器のメーカーが分かります。IEEEが公開しているOUI検索サービスや、ネット上のOUIルックアップサイトで誰でも確認できます。たとえばWi-Fiルータの裏面に書かれたMACアドレスから「これはBuffalo製だな」と特定できたりします。
IPアドレスとの違い
「IPアドレスがあるなら、MACアドレスはなぜ別途必要なの?」というのは、初学者が必ず通る疑問です。両者は役割も使われる場面もはっきり違います。対比して見ると違いがクリアになります。
| 項目 | MACアドレス | IPアドレス |
|---|---|---|
| 担当する層 | データリンク層(L2) | ネットワーク層(L3) |
| 識別する範囲 | 同じネットワーク内(LAN) | インターネット全体 |
| 割り当て元 | ハードウェア製造時に固定 | DHCPや管理者が付与 |
| 変わるか | 基本的に不変 | 接続先ごとに変わる |
| 表記 | 16進数12桁 | 10進数(IPv4の場合) |
| たとえると | パスポート番号 | ホテルの部屋番号 |
通信の流れで言うと、IPアドレスで「最終的にどこへ届けるか」を決め、MACアドレスで「目の前の機器に手渡す」という関係です。たとえば自宅から海外のサーバーへ通信するとき、IPアドレスは送信元と宛先で固定ですが、MACアドレスは経由するルータごとに書き換えられていきます。郵便で言えば、宛先住所(IPアドレス)は変わらないけれど、各中継局のスタッフが次の配達員(MACアドレス)にバトンを渡していくイメージです。
MACアドレスは「セグメント」の中でだけ使われる
MACアドレスを理解する上で最も重要なポイントが、「同じネットワーク(LAN)の中でだけ使われる」という性質です。コンピュータが他の機器にデータを送る相手は、必ず「直接つながっているネットワーク内の機器」だけです。あなたのPCが海外のサーバーへパケットを送るとき、PCができるのは、同じLANにいる「次のバトンを渡す相手」(通常は自宅のルータ)にパケットを渡すことだけ。そこから先はルータがリレー方式で運んでいきます。
このリレーの各区間(ホップ)のことをL2セグメントと呼びます。L2はOSI参照モデルの第2層(データリンク層)の略で、MACアドレスが活躍する層のことです。
L2セグメントは「ルータからルータまでの1区間」と理解すると分かりやすいです。同じLAN内の機器同士の通信も、ルータ同士の通信も、どちらも「直接つながっていてルータが間にない区間」という意味で、ネットワーク的には同じ「L2セグメント」として扱われます。

ルータはセグメントの「境界」になります。ルータは複数のセグメントに同時に属しているので、複数のMACアドレスを持っています。家庭用のWi-Fiルータを例にすると、LAN側インターフェース(家庭内向け)・WAN側インターフェース(ISP向け)・Wi-Fi側インターフェースで、それぞれ別々のMACアドレスを持つのが普通です。実際に自宅のルータの管理画面を開くと「LAN MAC」「WAN MAC」のように分かれて表示されているはずです。
ARP:IPアドレスからMACアドレスを引き出す仕組み
私たちが通信するときに指定するのは「192.168.1.10」のようなIPアドレスであって、相手のMACアドレスは知りません。でも実際にデータを送るには、相手のMACアドレスを知っている必要があります。この橋渡しをしてくれるのがARP(Address Resolution Protocol:アドレス解決プロトコル)です。
ARPの役割をひと言で言うと、「このIPアドレスを持っている人、MACアドレスを教えて!」と同じLAN内に呼びかける仕組みです。教室で先生が「田中さん誰?」と呼びかけて、田中さんだけが「ここです!」と手を挙げるイメージで覚えると分かりやすいでしょう。
- ARPリクエスト:PCがLAN全体に「192.168.1.10を持っているのは誰?MACアドレス教えて!」とブロードキャストする。LAN内の全機器がこのメッセージを受け取ります。
- ARPリプライ:自分が該当するIPだとわかった機器だけが「私です、MACアドレスは 00:1A:2B:3C:4D:5E です」と返事する。
- 送信開始:PCはようやくMACアドレスを知ったので、それを宛先MACに書いてパケットを送る。
毎回ARPで問い合わせていたら効率が悪いので、各機器は一度知ったIPとMACの対応を一時的に記憶しておく仕組みを持っています。これがARPテーブル(またはARPキャッシュ)です。OSの中で、次のような表が管理されているイメージです。
| IPアドレス | MACアドレス | インターフェース |
|---|---|---|
| 192.168.1.1 | 00:11:22:33:44:55 | eth0 |
| 192.168.1.10 | 00:1A:2B:3C:4D:5E | eth0 |
| 192.168.1.20 | 00:AA:BB:CC:DD:EE | eth0 |
このテーブルには有効期限(通常数分〜十数分)が設定されていて、期限が切れると消えます。機器が交換されたり故障したりした場合に、古い情報を引きずらないための仕組みです。
ARPテーブルは実際にコマンドで確認できます。手元のPCで試してみると、「今このPCがLAN内のどの機器と最近通信したか」が一覧で見られて面白いですよ。
# ARPテーブルを表示(Windows / macOS / Linux 共通)
arp -a# 出力例
? (192.168.1.1) at 00:11:22:33:44:55 on en0 ifscope [ethernet]
? (192.168.1.10) at 00:1a:2b:3c:4d:5e on en0 ifscope [ethernet]最近のLinuxではモダンな ip コマンドが使われます。
# ARPテーブルを表示(モダンなLinux)
ip neigh show
# または短縮形で
ip n# 出力例
192.168.1.1 dev eth0 lladdr 00:11:22:33:44:55 REACHABLE
192.168.1.10 dev eth0 lladdr 00:1a:2b:3c:4d:5e STALE末尾の REACHABLE や STALE はエントリの状態を示していて、REACHABLE は最近通信が確認できた状態、STALE はしばらく通信していない状態を意味します。
豆知識:自宅のルータ(デフォルトゲートウェイ)のIPアドレスは、PCのARPテーブルにほぼ確実に載っています。なぜなら外部への通信はすべてルータ経由なので、PCは常にルータのMACアドレスを把握しておく必要があるからです。
AWS(クラウド)におけるMACアドレス
「クラウドの仮想サーバーって物理NICがないのに、MACアドレスはどうなっているの?」と気になる方もいるでしょう。結論から言うと、AWSのVPC内にもちゃんとMACアドレスが存在します。物理的なネットワークカードはなくても、仮想的に同じ仕組みが再現されているからです。
AWSにおいて鍵となるのがENI(Elastic Network Interface)という概念です。ENIはVPC内の「仮想ネットワークカード」にあたるリソースで、EC2インスタンスを起動すると自動的に1つのプライマリENI(eth0)が割り当てられます。
このENIには、以下のような属性がセットで付与されます。
- プライマリプライベートIPv4アドレス
- セカンダリプライベートIPv4アドレス(オプション)
- Elastic IPアドレスの関連付け(オプション)
- セキュリティグループ
- 固有のMACアドレス
実際にEC2インスタンスにSSHでログインして ip link や ifconfig を実行すると、ちゃんとMACアドレスが返ってきます。これはAWSのハイパーバイザー側で仮想NICに割り当てられているもので、物理NICのMACアドレスとは別物ですが、ネットワークプロトコルの観点では本物のMACアドレスとまったく同じように扱われます。
ENIに紐づいた属性(プライマリIP・MACアドレス・セキュリティグループなど)は、ENIをインスタンスから付け替えると一緒に移動します。つまりインスタンスAから切り離してインスタンスBに付け替えると、MACアドレスもプライベートIPも丸ごとBに引き継がれます。これを利用すると、以下のような実用的なシナリオが組めます。
- MACアドレスベースのライセンス認証ソフトをクラウドで動かす:インスタンスを入れ替えてもENIを付け替えればMACが維持されるので、特定MACアドレスでのみ動作するライセンスのソフトもAWSで運用できます。
- 障害時のフェイルオーバー:インスタンス障害時に別の待機インスタンスへENIを付け替えることで、IPとMACを保ったまま切り替えできます。
- セキュリティ分離:同じインスタンスに複数のENIを付け、それぞれ別のセキュリティグループ設定で通信を分離できます。
VPCはあくまで「物理ネットワークを仮想的に再現したもの」です。物理ネットワークで存在するL2の概念(MACアドレス・ARPなど)もVPC内にちゃんと再現されています。VPCを「物理ネットワークの仮想版」と捉えると、AWSのネットワーク機能の設計思想がぐっと腑に落ちるはずです。
まとめ
MACアドレスは、ネットワーク通信を支える「物理的な住所」です。要点を整理しておきましょう。
- MACアドレスは48ビットの固有識別番号で、
00:1A:2B:3C:4D:5Eのように16進数12桁で表記される - 前半24ビット(OUI)はメーカー固有、後半24ビットは製品ごとの番号
- 原則として製造時にハードウェアへ焼き付けられた「物理アドレス」
- IPアドレスは「最終目的地」、MACアドレスは「目の前の機器に手渡す」ための住所
- MACアドレスはL2セグメント(直接つながった区間)の中でだけ使われ、ルータを越えるたびに書き換わる
- IPアドレスからMACアドレスを引き出す仕組みがARP、その記憶領域がARPテーブル
- AWSではENI(仮想ネットワークカード)が固有のMACアドレスを持ち、付け替えも可能
普段意識することは少ないかもしれませんが、MACアドレスは私たちのあらゆるネットワーク通信を支える縁の下の力持ちです。IPアドレスとの役割分担を理解することで、ネットワークの動作がぐっと立体的に見えてきます。トラブルシューティングやクラウド設計の場面でも、この知識はきっと役に立つはずです。
参考リソース
- MACアドレス|Wikipedia — MACアドレスの体系的な解説
- なぜMACアドレスは48ビットなのか?|日経クロステック — 構造とビット配置の詳細
- IEEE OUI Public Listing — 公式OUIデータベース(メーカー検索)
- Elastic Network Interfaces|AWS公式ドキュメント — ENIの公式リファレンス
- ARPとは|インフラエキスパート — ARPの動作とパケット構造
- MACアドレスについて|神田ITスクール — 初学者向けの分かりやすい解説


コメント