2.

ARPとは|IPからMACを解決する仕組みとARPテーブル・コマンド

編集
この記事の要点
  • ARP (Address Resolution Protocol)IP アドレスから MAC アドレスを解決するプロトコル。同一 LAN セグメント内で動作
  • IPv4 パケットを送る前に「この IP の MAC は誰?」をブロードキャストで問い合わせ、該当ホストがユニキャストで応答する
  • 解決結果は ARP キャッシュ (ARP テーブル) に一時保存され、毎回問い合わせる無駄を省く
  • 確認は Windows/Linux/Mac とも arp -a。Linux なら ip neigh も等価
  • ARP スプーフィング (ARP poisoning) は同一 LAN 内の攻撃手法。中間者攻撃やセッション窃取の入口になるため、業務 LAN では IDS / DHCP Snooping / Dynamic ARP Inspection で防御

ARP とは

ARP (Address Resolution Protocol) は、IPv4 アドレスから MAC アドレスを解決するためのプロトコルです。OSI 参照モデルのデータリンク層 (第 2 層) と ネットワーク層 (第 3 層) を橋渡しする役割を担い、同一ネットワークセグメント内のホストが互いに通信する前に必ず使われています。

IPv6 では ARP は使われず、NDP (Neighbor Discovery Protocol) に置き換えられています。

なぜ ARP が必要なのか

IP パケットは「IP アドレス → IP アドレス」で宛先を指定しますが、実際にケーブル / 無線上を流れるイーサネットフレームは 送信元 MAC → 宛先 MAC のヘッダを持ちます。

つまり「同じ LAN にある 192.168.0.10 へ送る」場合、まずその IP に対応する MAC アドレスを知る必要があります。これを LAN 内で動的に解決するのが ARP です。

ARP の動作フロー

ステップ動き宛先
1. ARP Request「192.168.0.10 の MAC は誰?」ブロードキャスト (FF:FF:FF:FF:FF:FF)
2. ARP Reply「私です。MAC は aa:bb:cc:dd:ee:ffユニキャスト
3. キャッシュ応答内容を ARP テーブルに保存
4. 通信取得した MAC を宛先にイーサネットフレーム送信ユニキャスト

ARP キャッシュ (ARP テーブル)

毎回ブロードキャストすると LAN が無駄に騒がしくなるので、解決結果はキャッシュされます。通常 OS は数分〜数十分でエントリを破棄し、再解決します。

確認コマンド

OSコマンド
Windowsarp -a
Linuxarp -a / ip neigh
macOSarp -a
# Linux/Mac
$ arp -a
? (192.168.0.1) at aa:bb:cc:dd:ee:ff [ether] on eth0
? (192.168.0.5) at 12:34:56:78:9a:bc [ether] on eth0

# Linux (推奨)
$ ip neigh
192.168.0.1 dev eth0 lladdr aa:bb:cc:dd:ee:ff REACHABLE

キャッシュのクリア

# Windows (管理者権限)
arp -d *

# Linux
sudo ip -s -s neigh flush all

ARP パケットの構造(概略)

フィールド意味
Hardware Type1 = Ethernet
Protocol Type0x0800 = IPv4
Operation1 = Request / 2 = Reply
Sender MAC / IP送信元 MAC / IPv4
Target MAC / IP宛先 MAC(Request 時は 0)/ IPv4

関連プロトコル

プロトコル役割
ARPIPv4 → MAC アドレス解決
RARPMAC → IPv4 解決(現在は DHCP に置換)
Gratuitous ARP自分の IP に対する ARP を自発送信。重複検知 / 機器交換通知
Proxy ARPルータが代理で ARP 応答する
NDP (IPv6)ARP の代替。Neighbor Solicitation / Advertisement

ARP スプーフィング (ARP poisoning)

ARP は認証機構を持たないため、悪意のあるホストが偽の ARP Reply を流すと、被害者の ARP テーブルが汚染され、トラフィックが攻撃者経由になります。中間者攻撃やセッション窃取の足がかりとして広く使われます。

対策

  • Dynamic ARP Inspection (DAI): Cisco 等の L2 スイッチ機能。DHCP Snooping と組み合わせて正規 IP/MAC ペアだけを通す
  • DHCP Snooping: 信頼できるポート以外からの DHCP 応答を遮断
  • 静的 ARP エントリ: 重要サーバへの通信で利用 (運用負荷高)
  • IDS / arpwatch: ARP テーブルの変動を監視
  • セグメント分離: VLAN で攻撃面を縮小

FAQ

Q. ARP は別セグメントにも届くの?
A. 届きません。ARP はブロードキャスト (L2) ベースのため、ルータを超えません。別セグメントの宛先はデフォルトゲートウェイの MAC に向けて送られます。

Q. IPv6 では?
A. ARP は使われず、NDP が ICMPv6 のメッセージで同等の役割を担います。

Q. ARP テーブルが古い情報を返してつながらない
A. キャッシュを arp -d でクリアして再解決させると改善することがあります。

Gratuitous ARP の用途

Gratuitous ARP (GARP) は、自分の IP アドレスに対する ARP Request / Reply を自発的に LAN に流す動作です。以下の用途があります。

  • IP アドレス重複検知: 起動時に「この IP は誰?」を発信し、応答があれば自分の IP が重複しているのでアラート
  • 機器交換通知: 同じ IP で MAC が変わったことを LAN 内の他機器に伝え、ARP テーブルを更新させる
  • HA / フェイルオーバ: 仮想 IP を引き継いだ予備機が GARP を打ち、トラフィックを自分に向ける

静的 ARP エントリの登録

セキュリティや特殊用途で、ARP キャッシュを手動固定することがあります。

# Linux: 静的エントリ追加
sudo ip neigh add 192.168.0.10 lladdr aa:bb:cc:dd:ee:ff dev eth0 nud permanent

# Windows (管理者)
arp -s 192.168.0.10 aa-bb-cc-dd-ee-ff

運用負荷が高くスケールしないため、大規模ネットワークでは Dynamic ARP Inspection (DAI) の方が現実的です。

パケットキャプチャでの観察

Wiresharktcpdumparp フィルタをかければ、ARP Request / Reply の流れを観察できます。トラブルシュートに有効です。

# tcpdump で ARP のみ表示
sudo tcpdump -nn -i eth0 arp

# 例の出力
# ARP, Request who-has 192.168.0.10 tell 192.168.0.5, length 28
# ARP, Reply 192.168.0.10 is-at aa:bb:cc:dd:ee:ff, length 28

関連

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. IP
  2. ARP
  3. ICMP

最近更新/作成されたページ