MACアドレスとは?IPアドレスとの違いからAWSのENIまで、ネットワークの「物理的な住所」を徹底解説

ネットワーク

ネットワークの世界には、よく似ているのに役割がまったく違う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内に呼びかける仕組みです。教室で先生が「田中さん誰?」と呼びかけて、田中さんだけが「ここです!」と手を挙げるイメージで覚えると分かりやすいでしょう。

  1. ARPリクエスト:PCがLAN全体に「192.168.1.10を持っているのは誰?MACアドレス教えて!」とブロードキャストする。LAN内の全機器がこのメッセージを受け取ります。
  2. ARPリプライ:自分が該当するIPだとわかった機器だけが「私です、MACアドレスは 00:1A:2B:3C:4D:5E です」と返事する。
  3. 送信開始:PCはようやくMACアドレスを知ったので、それを宛先MACに書いてパケットを送る。

毎回ARPで問い合わせていたら効率が悪いので、各機器は一度知ったIPとMACの対応を一時的に記憶しておく仕組みを持っています。これがARPテーブル(またはARPキャッシュ)です。OSの中で、次のような表が管理されているイメージです。

IPアドレスMACアドレスインターフェース
192.168.1.100:11:22:33:44:55eth0
192.168.1.1000:1A:2B:3C:4D:5Eeth0
192.168.1.2000:AA:BB:CC:DD:EEeth0

このテーブルには有効期限(通常数分〜十数分)が設定されていて、期限が切れると消えます。機器が交換されたり故障したりした場合に、古い情報を引きずらないための仕組みです。

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

末尾の REACHABLESTALE はエントリの状態を示していて、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 linkifconfig を実行すると、ちゃんと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アドレスとの役割分担を理解することで、ネットワークの動作がぐっと立体的に見えてきます。トラブルシューティングやクラウド設計の場面でも、この知識はきっと役に立つはずです。


参考リソース

コメント

タイトルとURLをコピーしました