InfraAcademy

InfraAcademy Blog

【図解】ARP(アープ)とは?IPアドレスとMACアドレスを紐づける仕組み【初心者向け】

| #ネットワーク #ITパスポート講座 #ネットワーク基礎講座
Linuxをブラウザで試してみる

Linux・ネットワーク・AWSを、環境構築なしで実践学習できます

こんにちは、インフラエンジニアのryuです。

ネットワークでは、IPアドレスとMACアドレスという2つの情報が使われます。どちらも通信先を識別しますが、役割は異なります。

では、パソコンはIPアドレスしか分からない相手へ、どのようにデータを届けているのでしょうか。

そこで使われるのがARPです。

ARPは、同じネットワーク内でIPv4アドレスに対応するMACアドレスを調べる仕組みです。LAN内の通信や、ルーターへデータを渡す場面で使われます。

この記事では、ARP RequestとARP Reply、ARPテーブル、別ネットワーク通信、確認コマンドを初心者向けに解説します。

ARPとは

ARPとは何なのでしょうか?

ARPは、IPv4アドレスに対応するMACアドレスを調べるためのプロトコルです。

正式名称はAddress Resolution Protocolです。日本語では、アドレス解決プロトコルと呼ばれます。

なぜ、IPアドレスとMACアドレスの両方が必要なのでしょうか。

IPアドレスは、通信相手がどのネットワークにいるかを判断し、複数のネットワークを越えてデータを届けるために使われます。

一方、Ethernetを使うLAN内では、最終的にMACアドレスを使ってフレームを届けます。

IPアドレスは分かっていても、対応するMACアドレスが分からなければ、同じLAN内でフレームを送信できません。そこでARPを使い、IPアドレスからMACアドレスを調べます。

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

ARPを理解するには、IPアドレスとMACアドレスの役割を分けて考えることが大切です。

元の記事ではMACアドレスを固有のIPアドレスと説明していましたが、これは正しくありません。MACアドレスとIPアドレスは、別の階層で利用される異なる情報です。

比較項目 IPアドレス MACアドレス
主な役割 ネットワーク上の通信先を識別する 同一LAN内の通信先を識別する
OSI参照モデル 第3層・ネットワーク層 第2層・データリンク層
192.168.1.10 00:1A:2B:3C:4D:5E
変更 接続先や設定で変わることがある 通常は機器に割り当てられるが変更も可能
主に使う機器 ルーター、L3スイッチ L2スイッチ、NIC

MACアドレスはネットワークインターフェースを識別する情報です。一般には製造時に割り当てられますが、設定で変更できる場合もあります。

IPアドレスは、所属するネットワークと機器を識別します。接続先が変われば、通常はIPアドレスも変わります。

【関連記事】IPアドレスとは?仕組み・種類・確認方法を初心者向けに解説

ARPは同じネットワーク内で使われる

ARPは、基本的に同じブロードキャストドメイン内で利用されます。

つまり、ルーターを越えた先にいる機器のMACアドレスを、ARPで直接調べるわけではありません。

同じネットワークと別のネットワークでは、ARPの対象が変わります。

同じネットワークへ通信する場合

たとえば、次の2台のPCが同じネットワークにいるとします。

機器 IPアドレス MACアドレス
PC1 192.168.10.10/24 00:11:22:33:44:55
PC2 192.168.10.20/24 AA:BB:CC:DD:EE:FF

PC1がPC2へ通信するとき、PC1はサブネットマスクを使い、PC2が同じネットワークにいると判断します。

しかし、最初はPC2のMACアドレスが分かりません。

そこでARPを使い、192.168.10.20に対応するMACアドレスを調べます。MACアドレスが分かると、PC1はPC2宛てのEthernetフレームを作成できます。

ARPでIPアドレスとMACアドレスを対応付ける図

別のネットワークへ通信する場合

PC1がインターネット上のサーバーなど、別のネットワークへ通信する場合を考えてみましょう。

このときPC1は、遠隔サーバーのMACアドレスを調べません。

PC1がARPで調べるのは、デフォルトゲートウェイであるルーターのMACアドレスです。まずルーターへフレームを渡し、その後はルーターが宛先IPアドレスを見て次のネットワークへ転送します。

通信先 ARPで調べるMACアドレス
同じネットワークのPC 相手PCのMACアドレス
別ネットワークのサーバー デフォルトゲートウェイのMACアドレス

外部サーバーのMACアドレスではなく、通常はゲートウェイのMACアドレスがARPテーブルへ登録されます。

ARP RequestとARP Replyの仕組み

ARPによるアドレス解決では、ARP RequestとARP Replyという2種類のメッセージが使われます。

ARP Requestはブロードキャスト

PC1が192.168.10.20のMACアドレスを知りたい場合、同じLAN全体へARP Requestを送ります。

ARP Requestの内容は、簡単に表すと次のような問い合わせです。

192.168.10.20を使っている機器は、
自分のMACアドレスを教えてください。

宛先MACアドレスがまだ分からないため、Ethernetの宛先にはブロードキャストアドレスが使われます。

FF:FF:FF:FF:FF:FF

同じブロードキャストドメインの機器が受信し、対象の機器だけが回答します。

ARP Replyは通常ユニキャスト

192.168.10.20を持つPC2は、ARP RequestへARP Replyを返します。

192.168.10.20は私です。
MACアドレスはAA:BB:CC:DD:EE:FFです。

ARP Replyは、通常は問い合わせ元のPC1へユニキャストで送られます。

PC1は対応関係をARPテーブルへ保存し、しばらく再利用します。

ARPテーブルとは

ARPテーブルは、IPv4アドレスとMACアドレスの対応関係を保存した表です。

ARPキャッシュや近隣キャッシュと呼ばれることもあります。

登録される主な情報は、次のとおりです。

項目
IPアドレス 192.168.10.20
MACアドレス AA:BB:CC:DD:EE:FF
種類 動的、静的
インターフェース Ethernet、Wi-Fiなど
状態 到達可能、未解決など

動的に学習した情報は一定時間後に削除され、古い対応関係を使い続けないようになっています。

静的登録もできますが、通常は動的学習が中心です。

OSI参照モデルとARPの関係

ARPが必要なのは、IP通信とEthernet通信で扱うアドレスが異なるためです。

IPアドレスは第3層のネットワーク層、MACアドレスは第2層のデータリンク層で利用されます。

ルーターはIPアドレスを見て、どのネットワークへ転送するかを判断します。

一方、同じEthernet LAN内で実際にフレームを送るには、宛先MACアドレスが必要です。ARPは、この第3層のIPアドレスと第2層のMACアドレスを対応付けます。

初心者の段階では、IPv4通信に必要なMACアドレスをLAN内で調べる仕組みと理解すれば十分です。

【関連記事】プロトコルとは?ネットワーク通信のルールを初心者向けに解説

WindowsでARPテーブルを確認する

ここからは、自分のパソコンでARPテーブルを確認してみましょう。

Windowsでは、コマンドプロンプトやPowerShellを開きます。

Windowsでコマンドプロンプトを起動する画面

次のコマンドを入力します。

arp -a

すると、インターフェースごとにARPテーブルが表示されます。

Windowsで表示したARPテーブル

表示例は環境によって異なりますが、次のような情報を確認できます。

Internet Address      Physical Address      Type
192.168.1.1           aa-bb-cc-dd-ee-ff     dynamic
192.168.1.20          11-22-33-44-55-66     dynamic

Internet AddressがIPv4アドレス、Physical AddressがMACアドレスです。

ルーターや最近通信した機器が表示されます。同じLAN内の全機器が必ず表示されるわけではありません。

PowerShellではGet-NetNeighbor -AddressFamily IPv4でも確認できます。

LinuxでARP情報を確認する

Linuxでは、従来のarpコマンドよりもip neighコマンドを使うのが一般的です。

ip neigh

表示例は次のとおりです。

192.168.1.1 dev eth0 lladdr aa:bb:cc:dd:ee:ff REACHABLE
192.168.1.20 dev eth0 lladdr 11:22:33:44:55:66 STALE

lladdrの後ろがMACアドレスです。

INCOMPLETEFAILEDなら、MACアドレスを取得できていません。相手の電源、VLAN、配線、Wi-Fiなどを確認します。

macOSでARPテーブルを確認する

macOSでは、ターミナルから次のコマンドを実行します。

arp -a

対象へpingを実行してからarp -aを見ると、新しいエントリを確認しやすくなります。

ping -c 1 192.168.1.1
arp -a

ARPテーブルを削除・再学習する方法

古いARP情報が残っていると、通信先のMACアドレスが変わった後に一時的な通信障害が起こることがあります。

Windowsでは、管理者権限のコマンドプロンプトで次のように削除できます。

arp -d *

Linuxでは、次のコマンドで近隣キャッシュを削除できます。

sudo ip neigh flush all

削除後に通信すると、ARP RequestとARP Replyが再度行われます。

削除だけで済ませず、相手の電源、IP設定、VLAN、接続も確認しましょう。

Gratuitous ARPとは

Gratuitous ARPは、自分自身のIPアドレスに関するARP情報を、要求される前に通知する仕組みです。

IPアドレスの重複確認や、冗長化機器の切り替え後に周囲のARP情報を更新するために使われます。

ARPスプーフィングとは

偽のARP情報を送り込む攻撃をARPスプーフィングと呼びます。企業ネットワークではDynamic ARP Inspectionや通信の暗号化などで対策します。

IPv6ではARPを使わない

ARPはIPv4で利用される仕組みです。

IPv6ではARPの代わりに、ICMPv6を使ったNeighbor Discovery Protocol、略してNDPが利用されます。

IPv6では、近隣探索やルーター探索などをNDPが行います。

ARPが原因で通信できないときの確認方法

同じネットワーク内の機器へ通信できない場合は、ARP情報も確認します。

エンジニア歴10年の経験でも、基本から順番に確認することが大切です。

順番 確認内容 主な方法
1 自分のIPアドレスとサブネット ipconfigip address
2 相手と同じネットワークか IPアドレスとCIDRを比較
3 相手が起動しているか 電源、NIC、Wi-Fiを確認
4 ARP情報が作成されるか arp -aip neigh
5 ARP状態が失敗していないか INCOMPLETEFAILEDを確認
6 VLANや配線が正しいか スイッチ設定、接続を確認
7 IPアドレスが重複していないか DHCP、固定IP設定を確認
8 ファイアウォールの影響 ICMPや対象通信を確認

INCOMPLETEのままならARP Replyが返っていません。MACアドレスを取得済みなら、ファイアウォールやサービスも確認します。

WiresharkでARPを確認する

ARPの動きをより深く理解したい場合は、Wiresharkなどのパケットキャプチャツールを使います。

表示フィルターへ次のように入力すると、ARPだけを表示できます。

arp

ARP Requestのブロードキャストと、ARP Replyで返るMACアドレスを確認できます。

InfraAcademyのネットワーク入門講座でARPを実践する

ARPは、文章を読んで覚えるだけでは、IPアドレスとMACアドレスがどの場面で使われるのか分かりにくい分野です。

InfraAcademyのネットワーク入門講座では、IPアドレス、サブネット、ルーティング、スイッチ、VLAN、NAT、ACLまで順番に学べます。

独自シミュレーターでPC、スイッチ、ルーターを配置し、IP設定とpingを実践できます。

ARPを単体で暗記するのではなく、次の順番で学ぶのがおすすめです。

IPアドレス
→ サブネット
→ ARP
→ スイッチ
→ デフォルトゲートウェイ
→ ルーティング

最初の講座は無料です。ネットワークを基礎から学びたい方はロードマップを確認してください。

InfraAcademyのネットワーク学習ロードマップを見る

まとめ

ARPは、同じネットワーク内でIPv4アドレスに対応するMACアドレスを調べる仕組みです。

同じネットワークの相手へ通信する場合は、相手のMACアドレスをARPで調べます。別ネットワークへ通信する場合は、デフォルトゲートウェイのMACアドレスを調べます。

ARP Requestはブロードキャストで送られ、対象の機器が通常はユニキャストのARP Replyを返します。

取得した情報はARPテーブルへ一時的に保存されます。Windowsではarp -aGet-NetNeighbor、Linuxではip neighで確認できます。

まずは自分のパソコンでデフォルトゲートウェイへpingを実行し、ARPテーブルにどのような情報が追加されるか確認してみましょう。

その後、ネットワークシミュレーターでPCやルーターを配置すると、ARPとルーティングの関係をさらに理解しやすくなります。

Next Action

記事で読んだ内容を、講座で実装してみましょう

InfraAcademyでは、ブラウザ上でLinuxやネットワークの実践環境を使いながら学習できます。無料で始められる講座から、学習の流れを試せます。

この記事を書いた人

ryu

InfraAcademy運営 / エンジニア

エンジニア歴10年。Linux、ネットワーク、クラウドを中心に、実務で役立つインフラ技術を初心者にもわかりやすく解説しています。

X: @ryu63614894

Related

関連記事

ブログ一覧へ

Roadmap

まずはこの4講座から

ログインすれば無料で始められる講座です。気になったテーマから手を動かして学べます。

講座一覧を見る