「IP アドレスがあれば届く」は半分正解
IP アドレスはインターネット全体を貫く論理的な住所ですが、実際にケーブルや電波の上をパケットが流れる時点では、別の住所が必要です。それが MAC アドレスです。
この記事では、L2(データリンク層)で何が起きているのか、なぜ MAC アドレスが必要なのか、そして IP→MAC の解決を担う ARP の仕組みを解説します。
MAC アドレスは「機器の固有番号」
MAC アドレス(Media Access Control address)は、ネットワーク機器のNIC(ネットワークインターフェイスカード)に焼き付けられた48bitの識別子です。出荷時に決まっており、原則変わりません(OS で擬似的に変更は可能)。
例: 00:1A:2B:3C:4D:5E
└────┬────┘└────┬────┘
OUI(製造元) シリアル番号
Apple, Cisco 等の識別 機器ごとに一意前半 24bit は IEEE が管理する OUI(Organizationally Unique Identifier)で、メーカー固有。これを見れば「これは Apple 製品だな」「Cisco のルーターだな」と推測できます。
L2 と L3 の役割分担
IP(L3)と MAC(L2)の関係は次のように整理できます:
| 項目 | IP アドレス(L3) | MAC アドレス(L2) |
|---|---|---|
| 使われる範囲 | インターネット全体 | 同一ネットワーク内のみ |
| 長さ | 32bit (v4) / 128bit (v6) | 48bit |
| 変更 | サブネット移動時に変わる | 原則固定 |
| 誰が決める | ISP / 管理者 / DHCP | NIC メーカー |
| 例 | 192.168.1.10 | 00:1A:2B:3C:4D:5E |
パケットが LAN 内を流れるときは、IP ヘッダーで「最終目的地」、Ethernet(L2)ヘッダーで「次にこのパケットを物理的に渡す相手」を指定しています。ルーターを経由するたびに L2 アドレスは書き換えられ、L3 アドレスは変わりません。
ARP: IP から MAC を解決する
では「192.168.1.10 に送りたい」と思ったとき、その IP を持っている機器の MAC アドレスをどう知るか? ここで ARP(Address Resolution Protocol)が登場します。
PC(送信者)が同一 LAN 内の 192.168.1.10 に送りたい
1. ARP Request をブロードキャスト
"192.168.1.10 さん、MAC アドレス教えて!"
宛先 MAC: ff:ff:ff:ff:ff:ff(全員に届く)
2. 192.168.1.10 を持っている PC が応答(ARP Reply)
"私のMACは 00:1A:2B:3C:4D:5E です"
送信者だけにユニキャスト
3. 送信者は IP→MAC のマッピングを ARP テーブルにキャッシュ
以降そのキャッシュを使って通信Linux/macOS で arp -a、Windows で arp -a とコマンドを打つと、現在覚えている ARP テーブルが見られます。
ARP テーブルのキャッシュ
毎回 ARP するとブロードキャストが大量に流れるので、ARP テーブルにキャッシュされます。OS によって違いますが、通常 数分〜20分 程度で期限切れになり、再 ARP されます。
サーバーを別の物理マシンに切り替えた直後、ネットワーク的につながらない時間が生じることがあります。これは古い ARP キャッシュが残っているためで、しばらくすれば自然に解決するか、arp -d でキャッシュをクリアすれば即座に直ります。
セキュリティ問題: ARP スプーフィング
ARP には認証の仕組みが一切ありません。攻撃者が「192.168.1.1(ゲートウェイ)の MAC は私です」という偽の ARP Reply を流すと、被害者の通信が攻撃者に流れてしまいます。これを ARP スプーフィング / ARP ポイズニングと呼びます。
正常: PC ─→ ゲートウェイ ─→ Internet
攻撃: PC ─→ 攻撃者(MITM) ─→ ゲートウェイ ─→ Internet
↑ ARP Reply で偽装し、通信を中継しながら盗聴・改ざん対策:
- HTTPS / TLS: ARP スプーフィングされても暗号化されているので中身は読めない
- 静的 ARP エントリ: 重要な機器の MAC を手動で固定(運用負荷大)
- Dynamic ARP Inspection(DAI): 業務用スイッチの機能
- VPN を使う: 公衆 Wi-Fi でとくに有効
IPv6 では ARP が違う
IPv6 では ARP は使われず、代わりに NDP(Neighbor Discovery Protocol)が同じ役割を担います。NDP は ICMPv6 上で動き、ARP より洗練された機能(プレフィックス通知、自動構成、近隣到達性検出)を持ちます。
MAC アドレスのプライバシー問題
MAC アドレスは原則固定なので、店舗の Wi-Fi 等を使うと「同じ人が来た」と追跡可能です。これを防ぐため、最近のスマホ・PC は MAC アドレスランダム化機能を持っています:
- iOS: 設定 → Wi-Fi → 該当ネットワーク → プライベート Wi-Fi アドレス
- Android: ネットワークごとにランダム化(標準)
- Windows 10/11: ネットワーク設定 → 「ランダムなハードウェアアドレスを使う」
おわりに
日常では意識しない MAC アドレスと ARP ですが、トラブルシュートで arp -a の結果を読めるかどうかで切り分けの精度が大きく変わります。「同一 LAN 内の通信は MAC で動く、ルーターを越えるたびに MAC は書き換わる」という基本を押さえておくと、ネットワークの動きが立体的に理解できます。