🔗

MACアドレスの深掘り学習

に公開

1. はじめに

1.1 この記事について

MACアドレスはネットワーク機器の「物理的な識別番号」として重要な役割を担っています。
本稿では、MACアドレスの基本構造から、IPアドレスとの違い、ARPプロトコルの仕組み、
実践的な確認方法、セキュリティの注意点まで体系的に解説します。

1.2 記事執筆の経緯

記事執筆の経緯から説明します。
以前下記の記事を投稿して、主にIPなどについて学習しました。

ネットワークにおける通信についてIPアドレスだけでなくMACアドレスも
重要な役割を担っているので、合わせて深掘りして学習しようと考え、
記事を執筆して投稿します。

2. MACアドレスの基礎

2.1 MACアドレスとは

MACアドレスは、ネットワーク機器の 物理的な識別番号 です。

比較項目 IPアドレス MACアドレス
役割 インターネット上の住所 機器固有の識別番号
イメージ 郵便番号・住所 マイナンバー
変更 変わる可能性がある 基本的に変わらない
設定時期 ネットワーク接続時 製造時に固定
有効範囲 インターネット全体 ローカルネットワーク内
階層 OSI参照モデル第3層(ネットワーク層) OSI参照モデル第2層(データリンク層)
形式 32ビット/128ビット(IPv4/IPv6) 48ビット(6バイト)
表記 ドット区切り10進数 コロン/ハイフン区切り16進数

2.2 MACアドレスの構造

MACアドレスは前半24ビット後半24ビットに分かれ、それぞれが意味を持っています。

構造の詳細

  00:1A:2B : 3C:4D:5E
  --------   --------
  前半24ビット 後半24ビット
  (OUI)      (デバイス固有)
部分 ビット数 役割 説明
前半24ビット 24ビット OUI(ベンダーID) メーカー(ベンダー)の識別番号
後半24ビット 24ビット デバイス固有番号 メーカーが製造する機器ごとに割り当てる番号

具体例

MACアドレス: 00:1A:2B:3C:4D:5E

  • 00:1A:2B → 特定のメーカー(例: Apple、Intelなど)に割り当てられた番号
  • 3C:4D:5E → そのメーカーが製造した機器ごとの固有番号

重複を避ける仕組み

同じメーカーが作る機器でも、後半24ビットが異なることで重複を避けています。

例: Appleのデバイス
  00:1A:2B:3C:4D:5E  ← iPhone
  00:1A:2B:12:34:56  ← MacBook
  --------
  同じベンダーID
          --------
          異なるデバイス番号

2.3 MACアドレスの特徴

  • ネットワーク機器の製造時に設定される
  • デバイスに固定されている番号
  • 基本的に変更されることはない
  • 基本的に各機器に一意に割り当てられる
    • 組み合わせ次第ではわずかだが重複する可能性がある。
    • ただしローカルネットワーク内で重複しなければ大きな問題にならない
  • ローカルネットワーク内で使われる
    • 同じネットワーク内でデータを正しい機器に届けるために使用
    • インターネット全体ではなく、特定のネットワーク(LAN)内で機能

MACアドレスを後から割り当てる手法

  • ローカル管理アドレス: 管理者が手動で設定したアドレス(第2ビットが1)
  • 仮想マシン: ハイパーバイザーが生成する仮想MACアドレス
  • プライバシー保護: スマートフォンのランダムMACアドレス機能

IPアドレスとの範囲の違い

IPアドレス   → インターネット全体(グローバル)
MACアドレス  → ローカルネットワーク内(ローカル)

3. IPアドレスとMACアドレスの役割分担

3.1 IPアドレスとMACアドレス両方が必要な理由

MACアドレスは 「どのデバイスかを識別する番号」 であり、
そのデバイスが 「どのネットワーク上にいるか」 を表すIPアドレスと共に通信に使用される、
OSI参照モデルではMACアドレスは第2層(データリンク層)、IPアドレスは第3層(ネットワーク層)に相当している。
ネットワーク通信では、IPアドレスとMACアドレスがそれぞれ異なる階層で異なる役割を担っているため、両方が必要不可欠です。

IPアドレス(第3層:ネットワーク層)の役割

  • インターネット全体での最終的な宛先を指定
  • ルーターがパケットをどの経路で転送するかを決定
  • ネットワークを跨いだエンドツーエンド通信を実現

MACアドレス(第2層:データリンク層)の役割

  • 同一ネットワーク内での次の転送先を指定
  • スイッチやブリッジが直接接続された機器にフレームを配送
  • 物理的な隣接ノード間の通信を実現

つまり、IPアドレスが「最終目的地の住所」であるのに対し、
MACアドレスは「次の中継地点への道案内」の役割を果たします。
インターネット通信は複数のネットワークを経由するため、
各区間でMACアドレスを使い分けながら、IPアドレスで示された
最終目的地まで到達する仕組みになっています。

3.2 通信における役割

[送信元] → インターネット → [宛先ネットワーク] → [宛先デバイス]
            ↑                 ↑                    ↑
         IPアドレスで        IPアドレスで         MACアドレスで
         経路を特定          ネットワークを特定    機器を特定

3.3 ARP(Address Resolution Protocol)の仕組み

ARPは、IPアドレスからMACアドレスを調べるプロトコルです。
同一ネットワーク内で通信する際、IPアドレスだけでは物理的な
機器を特定できないため、ARPを使ってMACアドレスを取得します。

ARPの動作フロー

具体例:ホストA(172.20.1.1)からホストB(172.20.1.2)への通信

ホストA (172.20.1.1) → ホストB (172.20.1.2)
※ホストAはホストBのMACアドレスを知らない

動作手順

  1. ARP要求のブロードキャスト

    • ホストAがARP要求パケットを同一セグメント上の全ホストへブロードキャスト送信
    • パケット内容:「IPアドレス172.20.1.2のMACアドレスを教えてください」
  2. 全ホストによる受信

    • ネットワーク内の全デバイスがARP要求を受信
    • 自身のIPアドレスと照合
  3. 該当ホストからのARP応答

    • ホストBのみが自身のIPアドレスであることを確認
    • ホストBがARP応答パケットをホストAへユニキャストで返送
  4. MACアドレスの取得

    • ホストAがホストBのMACアドレスを取得
    • 以降の通信でこのMACアドレスを使用

ARPコマンドの実践

# 特定IPアドレスのMACアドレスを確認
ping 192.168.1.1  # まずpingで通信を発生させる
arp -a | grep 192.168.1.1  # ARPテーブルで確認

# ARPテーブル全体を表示
arp -a

# Linux - ARPテーブルのクリア(管理者権限必要)
sudo arp -d -a

4. MACアドレスの実践的な確認と操作

4.1 MACアドレスの確認方法

各OSで自分のMACアドレスを確認する方法を紹介します。

# Windows - 詳細表示
ipconfig /all | findstr "物理アドレス"
# 出力例:
# 物理アドレス. . . . . . . . . . . .: 00-1A-2B-3C-4D-5E

# Windows - シンプル表示
getmac /v /fo list

# Linux - すべてのインターフェース表示
ip link show
# 出力例:
# 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500
#    link/ether 00:1a:2b:3c:4d:5e brd ff:ff:ff:ff:ff:ff

# Linux - 従来のコマンド
ifconfig | grep ether
# 出力例:
# ether 00:1a:2b:3c:4d:5e  txqueuelen 1000  (Ethernet)

4.2 ARPテーブルの確認と操作

ARPテーブルは、IPアドレスとMACアドレスの対応表です。
ネットワークトラブルシューティングで重要な役割を果たします。

# ARPテーブル全体を表示
# Windows/Linux/Mac共通
arp -a

# 出力例(Windows):
# インターフェイス: 192.168.1.10 --- 0x3
#   インターネットアドレス  物理アドレス          種類
#   192.168.1.1          00-1a-2b-3c-4d-5e     動的
#   192.168.1.5          11-22-33-44-55-66     動的
#   224.0.0.251          01-00-5e-00-00-fb     静的

# 特定のIPアドレスのエントリを確認
arp -a 192.168.1.1

# ARPエントリを手動で追加(静的ARP)
# Windows(管理者権限必要)
arp -s 192.168.1.100 00-aa-bb-cc-dd-ee

# Linux(管理者権限必要)
sudo arp -s 192.168.1.100 00:aa:bb:cc:dd:ee

4.3 MACアドレススプーフィング(教育目的)

# Linux - 一時的なMACアドレス変更

# 1. 変更前のMACアドレスを確認
ip link show eth0

# 2. ネットワークインターフェースを停止
sudo ip link set dev eth0 down

# 3. MACアドレスを変更
sudo ip link set dev eth0 address 00:11:22:33:44:55

# 4. ネットワークインターフェースを起動
sudo ip link set dev eth0 up

# 5. 確認
ip link show eth0

# 元のMACアドレスに戻す(Linux)
sudo ip link set dev eth0 down
sudo ip link set dev eth0 address <元のMACアドレス>
sudo ip link set dev eth0 up

5. セキュリティとMACアドレス

5.1 MACアドレスフィルタリング

MACアドレスフィルタリングは、無線LANルーターなどで特定のMACアドレスのみ接続を許可する機能です。

メリットとデメリット

項目 内容
メリット ・登録済みデバイスのみ接続可能
・不正アクセスの基本的な防御
・設定が比較的簡単
デメリット ・MACアドレススプーフィングで回避可能
・新デバイス追加時の手間
・大規模環境では管理が煩雑

5.2 セキュリティ上の注意点

MACアドレスは平文で送信されるため、以下のプライバシー・セキュリティリスクがあります。

  1. 位置追跡

    • 公共Wi-FiでMACアドレスが記録される
    • 複数の場所での接続履歴から移動経路が推測可能
  2. デバイス特定

    • MACアドレスのOUIからメーカーが判明
    • 個人のデバイス構成が推測される
  3. 行動分析

    • 接続時間や頻度から行動パターンが分析される
    • マーケティング目的で利用される可能性
  4. 暗号化されない

    • MACアドレスは平文で送信される
    • パケットキャプチャで簡単に確認可能
  5. 偽装が容易

    • ソフトウェア的に変更可能
    • 正規のMACアドレスをコピーして使用可能
  6. 単体では不十分

    • WPA2/WPA3などの暗号化と併用必須
    • 多層防御の一部として活用

推奨される対策

  • MACアドレスフィルタリング+WPA3暗号化
  • 定期的なMACアドレスリストの見直し
  • ゲストネットワークの分離
  • VPN利用による通信の暗号化

6. まとめ

6.1 この記事のまとめ

本稿では、MACアドレスについて基礎から実践まで体系的に学習しました。

  • MACアドレスはネットワーク機器の物理的な識別番号
  • 48ビット構成で、前半24ビットがメーカー識別(OUI)、後半24ビットがデバイス固有番号
  • IPアドレスと連携してネットワーク通信を実現
  • ARPによってIPアドレスとMACアドレスを相互変換
  • セキュリティ面では限定的のため、他の技術などと組み合わせ使用する。

MACアドレスは、ネットワークの基礎を支える重要な要素です。IPアドレスと共に理解することで、ネットワークトラブルシューティングやセキュリティ対策の幅が広がります。

本稿がMACアドレスの理解を深める一助となれば幸いです。実際にコマンドを実行して確認しながら、理解を深めていってください。

6.2 主要なポイント

MACアドレスとIPアドレスの違い

観点 MACアドレス IPアドレス
識別層 物理層(OSI参照モデル第2層) 論理層(OSI参照モデル第3層)
変更可否 原則変更不可(※スプーフィング可能) 変更可能
有効範囲 ローカルネットワーク内 インターネット全体
用途 同一ネットワーク内での機器特定 ネットワーク間のルーティング

実務での活用シーン

  • ネットワークトラブルシューティング

    • ARPテーブルの確認で接続問題を診断
    • MACアドレスから問題のある機器を特定
  • デバイス管理・資産管理

    • 企業内の機器を一意に識別
    • 接続許可デバイスの管理
  • 基本的なアクセス制御

    • MACアドレスフィルタリングによる簡易的な制限
    • ゲストと社内デバイスの区別

セキュリティの限界と対策

限界を理解する

  • MACアドレスは暗号化されずに送信される
  • スプーフィング(偽装)が比較的容易
  • 単体では強固なセキュリティにならない

推奨される多層防御

第1層:MACアドレスフィルタリング(基本的な制限)
第2層:WPA3暗号化(通信の保護)
第3層:802.1X認証(企業向け)
第4層:VPN(エンドツーエンド暗号化)

6.3 復習ポイント

記事の理解度を確認するための復習問題です。

Q1. MACアドレスの構造について

MACアドレスは何ビットで構成され、前半と後半はそれぞれ何を表していますか?

答えを見る
  • 48ビット(6バイト) で構成
  • 前半24ビット: OUI(ベンダーID)- メーカーの識別番号
  • 後半24ビット: デバイス固有番号 - メーカーが製造する機器ごとの番号

Q2. OSI参照モデルでの位置づけ

MACアドレスとIPアドレスは、それぞれOSI参照モデルの第何層で動作しますか?

答えを見る
  • MACアドレス: 第2層(データリンク層)
  • IPアドレス: 第3層(ネットワーク層)

Q3. ARPプロトコルの役割

ARPプロトコルは何を解決するためのプロトコルですか?

答えを見る

ARPは IPアドレスからMACアドレスを調べる ためのプロトコルです。
同一ネットワーク内で通信する際、IPアドレスだけでは物理的な機器を
特定できないため、ARPを使ってMACアドレスを取得します。

Q4. コマンド問題

Linuxで自分のMACアドレスを確認するコマンドを2つ挙げてください。

答えを見る
  1. ip link show - 推奨される新しいコマンド
  2. ifconfig | grep ether - 従来のコマンド

Q5. セキュリティの理解

MACアドレスフィルタリングだけでは十分なセキュリティにならない理由を2つ挙げてください。

答えを見る
  1. MACアドレスは平文で送信される - パケットキャプチャで簡単に確認可能
  2. MACアドレスは偽装(スプーフィング)が容易 - ソフトウェア的に変更可能

そのため、WPA3暗号化やVPNなどとの併用が必要です。

7. 参考資料

7.1 書籍

Discussion