InfraAcademy

InfraAcademy Blog

ARPテーブルとは?ARPテーブルを確認する方法解説

こんにちは、フルスタックエンジニアのryuです。

今回の記事はARPテーブルについて解説します。ARPテーブルをWindowsやLinuxで確認してみましょう。

ARPテーブルとは、MACアドレスとIPアドレスが紐づけられたテーブルのことです。通信に必須の技術となります。

ARPテーブルって何?どうやって見るの?と疑問に思ったことはありませんか。この記事を読めば、ARPテーブルの概要から確認・削除・登録のコマンド、障害切り分けでの活用方法まで一通り分かります。

ARPについて、良く分からないという方はARP(アープ)とは?IPアドレスとMACアドレスを紐づける仕組み【初心者向けに詳しく解説】を先に参考にしてください。

ARPテーブルとは?IPアドレスとMACアドレスの対応表

まず、ARPテーブルの概要についてご説明します。

ARPテーブルとはIPアドレスとMACアドレスの表のことです。

実際のARPテーブルは、以下のようなものです。

IPアドレスと物理アドレス(MACアドレス)が対応づけられて表示されていますね。PCやネットワーク機器は、このテーブルを参照しながら通信を行っています。

でも、なぜIPアドレスだけでは通信できないのでしょうか。実は、同じネットワーク内でデータを運ぶときの宛先には、IPアドレスではなくMACアドレスが使われるからです。

宛先のIPアドレスが分かっていても、対応するMACアドレスが分からなければデータを送り出せません。そこでARPという仕組みで相手のMACアドレスを調べ、その結果を保存しておく場所がARPテーブルというわけです。

ARPテーブルの見方

ARPテーブルは、主に3つの項目で構成されています。それぞれの意味を表に整理しました。

項目 意味
インターネットアドレス 通信相手のIPアドレス
物理アドレス 通信相手のMACアドレス
種類 エントリが登録された方法(動的・静的)

IPアドレスとはPCの住所のことです。通信に必須の情報になります。

MACアドレスとは、機器に割り当てられた唯一のアドレスです。工場出荷時に割り当てられます。

この2つのアドレスについては、IPアドレスの概要・仕組みが簡単に理解できる解説記事MACアドレスの概要や用途、確認方法の解説記事で詳しく説明しております。

動的エントリと静的エントリの違い

種類の欄は、そのエントリが登録された状況を表しています。自動で登録された場合は「動的」で、手動もしくはデフォルトで設定されているものは「静的」になります。

2つの違いを表で比べてみましょう。

比較項目 動的(dynamic) 静的(static)
登録のされ方 ARPの応答をもとに自動で登録 管理者がコマンドなどで手動登録
保持期間 一定時間が経つと自動で消える 削除するまで残り続ける
主な用途 通常の通信全般 特定の機器と確実に通信したいとき

普段の通信で使われているのは、ほとんどが動的エントリです。私たちが意識しなくても、通信のたびに登録と削除が自動で繰り返されています。

ARPテーブルにエントリが登録される流れ

では、動的エントリはいつ登録されるのでしょうか。エントリが作られるまでの流れを追ってみましょう。

PCが初めての相手と通信するとき、まずARPリクエストというブロードキャストをネットワーク全体へ送ります。このIPアドレスを使っている人はいませんか、という問いかけです。

該当する機器がARPリプライで自分のMACアドレスを返すと、PCはその結果をARPテーブルへ登録します。次回からはテーブルを見るだけで済むため、問い合わせを省略できるのです。

もし毎回ARPリクエストを送っていたら、ネットワークは問い合わせだらけになってしまいますよね。ARPテーブルには、通信を速くしてネットワークの無駄なトラフィックを減らす役割もあります。

このように、ARPテーブルではMACアドレスとIPアドレスを紐づけております。ここからは、実際に確認する方法を見ていきましょう。

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

ここからは、ARPテーブルの確認方法について解説します。まずは一番身近なWindowsからです。

WindowsでARPテーブルを確認するためには、コマンドプロンプトで以下のコマンドを実行します。

arp -a

コマンドを実行すると、先ほど紹介したARPテーブルが表示されます。

WindowsのARPテーブル

インターフェイスの行には、自分のPCに設定されたIPアドレスが表示されます。有線LANと無線LANの両方を使っている場合などは、インターフェイスごとにテーブルが分かれて表示されます。

しばらく時間を置いてから再度実行すると、エントリが消えたり増えたりする様子も観察できます。動的エントリが自動で管理されていることを、実際に体感できますよ。

エントリを削除・静的登録するコマンド

Windowsでは、テーブルの表示だけでなくエントリの削除や追加も可能です。次の2つのコマンドを使います。

arp -d 192.168.1.1
arp -s 192.168.1.10 00-1a-2b-3c-4d-5e

1行目の arp -d は、指定したIPアドレスのエントリを削除するコマンドです。IPアドレスの代わりに * を指定すると、テーブル全体をクリアできます。

2行目の arp -s は、IPアドレスとMACアドレスを指定して静的エントリを追加するコマンドです。どちらのコマンドも管理者権限が必要なので、コマンドプロンプトを管理者として実行してから試してください。

古い情報が残っていて通信が不安定なときは、arp -d によるクリアが定番の対処法です。詳しくは後述のトラブルシューティングの章で紹介します。

arpコマンドの主要オプション一覧

arpコマンドには、ほかにもオプションが用意されています。よく使うものを表にまとめました。

オプション 役割
-a ARPテーブルを一覧表示する
-d 指定したエントリを削除する
-s 静的エントリを手動で追加する
-n 名前解決せずIPアドレスのまま表示する(Linux版のみ)

まずは -a での表示と -d での削除をおさえておけば十分です。残りのオプションは、必要になったときに調べれば問題ありません。

LinuxでARPテーブルを確認する方法

続いて、LinuxでARPテーブルを確認する方法です。Linuxには新旧2つのコマンドがあるため、順番に解説します。

現在の標準はip neighコマンド

現在のLinuxでは、ip neigh コマンドでARPテーブルを確認するのが標準です。

実行すると、次のように表示されます。

$ ip neigh
192.168.1.1 dev eth0 lladdr 00:00:5e:00:53:01 REACHABLE
192.168.1.20 dev eth0 lladdr 00:00:5e:00:53:14 STALE

lladdr の後ろに並んでいるのが相手のMACアドレスです。dev eth0 は、そのエントリを学習したネットワークインターフェース名を表します。

行末の大文字の単語はエントリの状態で、REACHABLEは到達確認済み、STALEは情報が古くなって再確認待ちの状態です。静的に登録したエントリには、PERMANENTと表示されます。

テーブルをクリアしたいときは、sudo ip neigh flush all を実行します。特定のエントリだけ消したい場合は、ip neigh del にIPアドレスとインターフェース名を指定しましょう。

従来のarpコマンドで確認する方法

古くからあるarpコマンドを使う場合は、以下のコマンドを実行します。

arp

LinuxでARPコマンドを入力すると、このようにARPテーブルが表示されます。

Address列がIPアドレスまたはホスト名で、HWaddress列がMACアドレスです。arp -n とすると名前解決を行わずIPアドレスのまま表示されるため、表示も速くなります。

なぜip neighへの移行が進んでいるのか

arpコマンドは、net-toolsという古いパッケージに含まれています。net-toolsの開発は現在メンテナンス中心となっており、後継である iproute2 の ip コマンドへの移行が進んでいます。

そのため、新しめのLinuxディストリビューションでは、net-toolsが最初から入っていないことがあります。arpコマンドが見つからない環境に出会ったら、ip neigh を使いましょう。

また、ip neigh はIPv4のARPエントリとIPv6の近隣探索(NDP)のエントリを、同じ書式で扱えるのも利点です。旧arpコマンドはIPv4専用なので、これから学ぶ方はipコマンドに慣れておくのがおすすめです。

新旧コマンドの対応関係を表にまとめておきます。

やりたいこと 旧コマンド(net-tools) 新コマンド(iproute2)
テーブルの表示 arp -a ip neigh
エントリの削除 arp -d <IPアドレス> ip neigh del <IPアドレス> dev <インターフェース名>
静的エントリの追加 arp -s <IPアドレス> <MACアドレス> ip neigh add <IPアドレス> lladdr <MACアドレス> dev <インターフェース名> nud permanent

コマンドの読み替えさえ覚えてしまえば、どちらの環境でも困りません。まずは手元のLinuxで ip neigh を打つところから始めてみましょう。

Cisco機器でARPテーブルを確認する方法

ARPテーブルは、PCだけでなくネットワーク機器の中にも存在します。CiscoのルーターやL3スイッチでは、特権EXECモードで show ip arp と入力すると表示されます。

出力には、IPアドレスや経過時間を示すAge、ハードウェアアドレス(MACアドレス)、エントリを学習したインターフェースが並びます。Ageの単位は分で、機器自身のインターフェースのエントリにはハイフンが表示されます。

障害対応では、PC側とネットワーク機器側の両方のテーブルを見比べる場面がよくあります。両方を確認できるようになると、切り分けのスピードが大きく変わってきますよ。

トラブルシューティングでのARPテーブルの活用

ARPテーブルの確認は、ネットワーク障害の切り分けで役立つ基本テクニックです。代表的な3つの場面を紹介します。

1つ目は、pingが通らないときの切り分けです。同じネットワーク内の相手へpingを実行した後にARPテーブルを確認し、相手のMACアドレスが登録されていれば、ケーブルやスイッチのレベルでは届いていると判断できます。

逆にエントリが登録されない場合は、配線や相手の電源、IPアドレスの設定ミスなど、より下のレイヤーを疑います。どの層に原因がありそうかのあたりを付けられるのが、ARPテーブルを確認する強みです。

2つ目は、IPアドレス重複の調査です。同じIPアドレスに対して、表示されるMACアドレスが機器によって違ったり頻繁に入れ替わったりする場合は、IPアドレスの重複を疑ってください。

MACアドレスは機器ごとに一意なので、どの機器がぶつかっているのかを特定する手がかりになります。前半の桁はメーカーごとに割り当てられているため、製造ベンダーまで絞り込めることもあります。

3つ目は、機器交換後の通信不良です。サーバーのNICやルーターを交換すると、周囲の機器には交換前の古いMACアドレスのエントリがしばらく残ります。

古いエントリが残ったままでは、新しい機器と通信できないことがあります。そんなときは arp -dsudo ip neigh flush all でテーブルをクリアすれば、正しい情報を学習し直せます。

なお、偽のARP応答を流して通信を横取りする、ARPスプーフィングという攻撃も存在します。デフォルトゲートウェイのIPアドレスに見覚えのないMACアドレスが紐づいていたら、注意が必要です。

ARPテーブルに関するよくある疑問

最後に、ARPテーブルについて初心者の方からよく聞かれる疑問へ答えていきます。気になるところだけ読んでいただいても大丈夫です。

ARPテーブルとARPキャッシュは何が違う?

結論から言うと、ほぼ同じものを指しています。ARPで解決した結果を一時的に保存しておく領域なので、キャッシュと呼ばれることも多いのです。

書籍やサイトによって呼び方は揺れますが、どちらもIPアドレスとMACアドレスの対応表のことだと理解しておけば問題ありません。

エントリはどれくらいの時間保持される?

動的エントリの保持時間は、OSや機器によって異なります。Windowsの場合は、基準値30秒に0.5〜1.5のランダムな係数を掛けた時間が目安とされています。

インターフェース番号を指定して netsh interface ipv4 show interfaces を実行すると、Windowsでの設定値を確認できます。Linuxでは、REACHABLEからSTALEへと状態を変えながら管理され、使われないエントリはやがて削除されます。

保持時間が短いように感じるかもしれませんが、通信が続いている限りエントリは更新され続けます。そのため、実用上は期限切れを意識する場面はほとんどありません。

MACアドレステーブルとは何が違う?

名前が似ているものに、スイッチが持つMACアドレステーブルがあります。混同しやすいのですが、この2つは別物です。

ARPテーブルはIPアドレスとMACアドレスの対応表で、MACアドレステーブルはMACアドレスとスイッチのポートの対応表です。前者は宛先のMACアドレスを知るために、後者はフレームを送り出すポートを選ぶために使われます。

資格試験ではどのように問われる?

ARPテーブルは、基本情報技術者試験などの資格試験でも問われる定番テーマです。同一LAN上のPCを調べるコマンドを選ばせる問題などが、実際に出題されています。

仕組みと確認コマンドをセットで覚えておくと、選択肢に迷わなくなりますよ。過去問の詳しい解説は、同一LAN上のPCを調べるコマンドを問う基本情報技術者試験の過去問解説をご覧ください。

ARPテーブルとは?まとめ

今回の記事では、ARPテーブルについて解説しました。

ARPテーブルとはIPアドレスとMACアドレスの表のことで、確認するコマンドはWindowsなら arp -a、Linuxなら ip neigh でしたね。削除や静的登録などの操作も、同じコマンドの仲間から行えます。

まずは自分のPCでARPテーブルを表示して、どんな機器と通信しているのか眺めてみてください。実際に手を動かすと、仕組みの理解が一気に深まりますよ。

当ブログでは、このようなネットワークやインフラに関連した技術を発信しているので興味のある方は是非ご覧ください。ネットワーク入門講座一覧Linux入門講座一覧AWS入門講座一覧から体系的に学べます。

さらにネットワークについて勉強したい方は、こちらの参考書がオススメです。

Next Action

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

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

この記事を書いた人

ryu

InfraAcademy運営 / エンジニア

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

X: @ryu63614894

Related

関連記事

ブログ一覧へ

Roadmap

まずはこの4講座から

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

講座一覧を見る