ネットワークトラブルの調査やIPアドレスとMACアドレスの対応関係を知りたいときに役立つのが「ARPテーブル」です。Linuxでは、この情報を簡単に確認できる「arp」コマンドがあります。本記事では、ARPテーブルの概要と「arp」コマンドの使い方、さらに関連するコマンドについてもわかりやすく解説します。ネットワーク初心者の方でも理解できるように丁寧に説明しますので、ぜひ参考にしてください。
ARPとは?仕組みを簡単に解説
ARP(Address Resolution Protocol)は、IPアドレスとMACアドレスを対応づけるための通信プロトコルです。ネットワーク機器がローカルネットワーク内で他の機器にデータを送信する際、宛先のMACアドレスが必要になります。IPアドレスからMACアドレスを割り出すために使用されるのがARPです。
具体的には、以下のような流れでARPが機能します。
- 送信元が宛先のIPアドレスを知っているがMACアドレスがわからない。
- ネットワーク上に「このIPアドレスのMACアドレスは誰ですか?」というARPリクエストをブロードキャスト。
- 対応するIPアドレスを持つ機器が自分のMACアドレスを返信(ARPリプライ)。
- 送信元はARPテーブルにこの情報を一時的に記録。
このようにして、同一ネットワーク内の通信がスムーズに行えるようになります。
Linuxで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アドレス(192.168.1.1 など)
- MACアドレス(00:11:22:33:44:55 など)
- ネットワークインターフェース(eth0 など)
この情報をもとに、どのIPアドレスがどのMACアドレスと対応しているのか確認できます。
arpコマンドのオプション解説
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
このように手動でエントリを追加することも可能です。ただし、再起動などで消えてしまう一時的な設定です。
ip neighborコマンドでもARPテーブルを確認できる
最近の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
この出力では以下の情報が得られます:
- IPアドレス
- 使用しているインターフェース
- MACアドレス(lladdr)
- 状態(REACHABLE, STALE, DELAYなど)
ARPエントリの状態まで確認できる点が、arp -a
よりも優れています。
ARPテーブルの活用シーンとは?
ARPテーブルは以下のような場面で役立ちます。
ネットワークトラブルの原因調査
例えば、ある機器がネットワークに接続できない場合、ARPテーブルを確認してMACアドレスが正しいかどうか調べることができます。また、ARPエントリが「INCOMPLETE」になっていれば通信が届いていない可能性があるとわかります。
不正アクセスやMACアドレスの確認
ネットワークに接続してきた不明な機器を特定する際、ARPテーブルに記録されたMACアドレスをもとに、機器の製造元や管理状況を確認できます。
よくあるトラブルと対処法
ARPテーブルにIPアドレスがない
原因としては、まだ通信が発生していないためARPリクエストが飛んでいないことが考えられます。この場合は、対象機器にping
を送ってみると良いです。
ping 192.168.1.20
通信が成功すればARPテーブルにエントリが追加されるはずです。
古いエントリが残っている
ARPテーブルの情報は一定時間で更新されますが、時には古い情報が残ってしまうこともあります。この場合は手動で削除するか、ネットワークインターフェースを再起動するとよいでしょう。
arpコマンドが使えない?代替方法と確認ポイント
最近のLinux環境では、arp
コマンドがインストールされていないケースがあります。その場合は以下の方法で対応します。
ip neighborを使う
前述のように、ip neighbor show
でほぼ同様の情報が得られます。
net-toolsパッケージのインストール
古い形式のarp
コマンドを使いたい場合は、以下のようにパッケージをインストールします。
sudo apt install net-tools
またはRedHat系であれば、
sudo yum install net-tools
これでarp
やifconfig
などが使えるようになります。
まとめ:ARPテーブルを確認してネットワークの見える化をしよう
ARPテーブルは、ネットワーク上の機器同士が正しく通信できているかを確認する重要な情報源です。Linuxでは「arp」や「ip neighbor」コマンドを使うことで簡単に確認できます。
ネットワークトラブルが発生したときや、見慣れない端末が接続されていないかチェックしたいときに、ぜひ本記事で紹介した方法を役立ててください。コマンドラインの操作に慣れることで、トラブルシューティングの力がぐっと向上します。