ネットワークトラブルの調査やIPアドレスとMACアドレスの対応関係を知りたいときに役立つのが「ARPテーブル」です。Linuxでは、この情報を簡単に確認できる「arp」コマンドがあります。本記事では、ARPテーブルの概要と「arp」コマンドの使い方、さらに関連するコマンドについてもわかりやすく解説します。ネットワーク初心者の方でも理解できるように丁寧に説明しますので、ぜひ参考にしてください。
ARP(Address Resolution Protocol)は、IPアドレスとMACアドレスを対応づけるための通信プロトコルです。ネットワーク機器がローカルネットワーク内で他の機器にデータを送信する際、宛先のMACアドレスが必要になります。IPアドレスからMACアドレスを割り出すために使用されるのがARPです。
具体的には、以下のような流れでARPが機能します。
このようにして、同一ネットワーク内の通信がスムーズに行えるようになります。
Linux環境でARPテーブルを表示したい場合、基本的には以下のコマンドを使用します。
arp -a
このコマンドを実行すると、現在のARPテーブルに記録されているIPアドレスと、それに対応するMACアドレスの一覧が表示されます。
? (192.168.1.1) at 00:11:22:33:44:55 [ether] on eth0
? (192.168.1.20) at 66:77:88:99:AA:BB [ether] on eth0
表示される内容は以下の通りです。
この情報をもとに、どのIPアドレスがどのMACアドレスと対応しているのか確認できます。
arp
コマンドにはいくつかのオプションがあり、目的に応じて使い分けが可能です。
オプション | 説明 |
---|---|
-a | 全エントリを表示 |
-n | ホスト名の解決を行わずにIPアドレスをそのまま表示 |
-d <IP> | 特定のエントリを削除 |
-s <IP> <MAC> | 新しいARPエントリを手動で追加 |
sudo arp -d 192.168.1.20
このコマンドで、指定したIPアドレスのエントリをARPテーブルから削除できます。
sudo arp -s 192.168.1.30 00:aa:bb:cc:dd:ee
このように手動でエントリを追加することも可能です。ただし、再起動などで消えてしまう一時的な設定です。
最近のLinuxディストリビューションでは、「ip neighbor」コマンド(ip n
と省略可)が推奨されています。これはiproute2
パッケージに含まれており、より詳細かつ柔軟な操作が可能です。
ip neighbor show
192.168.1.1 dev eth0 lladdr 00:11:22:33:44:55 REACHABLE
192.168.1.20 dev eth0 lladdr 66:77:88:99:AA:BB STALE
この出力では以下の情報が得られます:
ARPエントリの状態まで確認できる点が、arp -a
よりも優れています。
ARPテーブルは以下のような場面で役立ちます。
例えば、ある機器がネットワークに接続できない場合、ARPテーブルを確認してMACアドレスが正しいかどうか調べることができます。また、ARPエントリが「INCOMPLETE」になっていれば通信が届いていない可能性があるとわかります。
ネットワークに接続してきた不明な機器を特定する際、ARPテーブルに記録されたMACアドレスをもとに、機器の製造元や管理状況を確認できます。
原因としては、まだ通信が発生していないためARPリクエストが飛んでいないことが考えられます。この場合は、対象機器にping
を送ってみると良いです。
ping 192.168.1.20
通信が成功すればARPテーブルにエントリが追加されるはずです。
ARPテーブルの情報は一定時間で更新されますが、時には古い情報が残ってしまうこともあります。この場合は手動で削除するか、ネットワークインターフェースを再起動するとよいでしょう。
最近のLinux環境では、arp
コマンドがインストールされていないケースがあります。その場合は以下の方法で対応します。
前述のように、ip neighbor show
でほぼ同様の情報が得られます。
古い形式のarp
コマンドを使いたい場合は、以下のようにパッケージをインストールします。
sudo apt install net-tools
またはRedHat系であれば、
sudo yum install net-tools
これでarp
やifconfig
などが使えるようになります。
ARPテーブルは、ネットワーク上の機器同士が正しく通信できているかを確認する重要な情報源です。Linuxでは「arp」や「ip neighbor」コマンドを使うことで簡単に確認できます。
ネットワークトラブルが発生したときや、見慣れない端末が接続されていないかチェックしたいときに、ぜひ本記事で紹介した方法を役立ててください。コマンドラインの操作に慣れることで、トラブルシューティングの力がぐっと向上します。