「社内ネットワークにある別のPCと通信できなくなったけれど、IPIP [アイピー]Internet Protocol。インターネット通信の基本プロトコルアドレスしか分からなくて原因調査が進まない」「ネットワーク機器や端末のMACアドレスを素早く確認したい」といった悩みを抱えていませんか?
ネットワークのトラブルシューティングやセキュリティ管理において、IPアドレスとMACアドレスの対応関係を把握することは極めて重要です。arpコマンドを活用すれば、現在通信している機器のMACアドレスを簡単に確認し、ネットワーク経路の異常を切り分けることができます。
この記事を読むことで、LinuxLinux [リナックス / ライナックス]オープンソースのOSカーネルおよびWindows環境におけるarpコマンド(または代替コマンド)の基本操作から、ARPテーブルの表示・追加・削除、さらには実際のトラブルシューティングやセキュリティ対策(ARPスプーフィングの検知)までの具体的な手順がすべてわかるようになります。
動作確認環境(Windows / Linux)
本記事で紹介するコマンドおよび手順は、以下の環境で動作確認を行っています。
- Windows環境: Windows 11
- Linux環境: UbuntuUbuntu [ウブントゥ]人気のLinuxディストリビューション 22.04 LTS
arpコマンドとは?IPアドレスとMACアドレスの対応を管理する仕組み
ネットワーク上でコンピュータ同士が通信を行う際、IPアドレス(ネットワーク層)だけでなく、MACアドレス(データリンク層)を用いて宛先を特定しています。このIPアドレスとMACアドレスの対応関係を管理・解決するためのプロトコルがARP(Address Resolution Protocol)です。
ARP(Address Resolution Protocol)の仕組み
MACアドレスは、同じネットワーク(同一リンク)上で通信相手を識別するために使われるアドレスです。IP通信では、IPパケットをEthernetEthernet [イーサネット]有線LANなどのコンピュータネットワークで最も普及している通信規格などのリンク層で送信する際に、宛先のMACアドレスが必要になります。しかし、私たちが知っているのは宛先のIPアドレスだけというケースがほとんどです。
そこでOSOS [オーエス]Operating System。基本ソフトウェアは、同じリンク上にある機器に対して「このIPアドレスを使っている機器のMACアドレスを教えてください」というARPリクエストをブロードキャストします。該当するIPアドレスを持つ端末が「それは私です。私のMACアドレスはこれです」と返答(ARPリプライ)することで、通信が可能になります。
この一度学習した「IPアドレスとMACアドレスの対応表」を一時的に保存している場所が**ARPテーブル(またはARPキャッシュ)**です。
【重要】ARPで確認できるのは基本的に同一リンク上の相手のみ IPv4IPv4 [アイピーブイフォー]インターネットプロトコル第4版。32ビットでIPアドレスを表現するのARPで直接MACアドレスを解決できるのは、同一リンク上の相手です。別サブネットにある宛先へ通信する場合、端末は宛先PCのMACアドレスではなく、次の転送先となるデフォルトゲートウェイなどのMACアドレスをARPで解決します。
どんな時にarpコマンドを使うのか
arpコマンドは、主に以下のようなシーンで活用されます。
- 通信障害の切り分け: 特定の端末と通信できないとき、ARPテーブルに相手のMACアドレスが正しく登録されているか確認する。
- IPアドレスとMACアドレスの対応確認: 自端末が保持しているARPキャッシュから、通信した相手などのIPアドレスとMACアドレスの対応を確認する。
- 静的ARPエントリの設定: 特定のIPアドレスとMACアドレスの対応を固定したい場合に、静的ARPエントリを追加する。
Linuxでのarpコマンド・ip neighコマンドの使い方
近年の多くのLinuxディストリビューションでは、従来のarpコマンドを含む net-tools パッケージがデフォルトでインストールされていない場合があります。そのため、現代のLinuxでは標準的なネットワーク管理ツールである ip コマンドを使用することが推奨されています。
ARPテーブル(キャッシュ)を表示・確認する
LinuxでIPv4のARP情報を確認するには、ip neigh コマンドを使用します。
ip neigh実行結果の例:
192.168.1.1 dev eth0 lladdr aa:bb:cc:dd:ee:ff REACHABLE192.168.254.50 dev eth0 lladdr 11:22:33:44:55:66 STALE出力の見方:
192.168.1.1: 相手のIPアドレスdev eth0: パケットを送信しているネットワークインターフェースlladdr aa:bb:cc:dd:ee:ff: 相手のMACアドレス(Link Layer Address)REACHABLE/STALE: エントリの状態(到達可能か、古い情報かなど)
※なお、net-tools がインストールされている環境であれば、伝統的な arp -a コマンドでも同様に確認が可能です。
ARPエントリを手動で追加・変更・削除する方法
特定のIPアドレスに対して、強制的にMACアドレスを紐付けたい場合(静的ARPエントリの追加)や、壊れたキャッシュをクリアしたい場合には ip コマンドを用います。
ステップ1: ARPエントリを手動で追加する
sudo ip neigh add 192.168.1.100 lladdr 00:11:22:33:44:55 dev eth0※既にエントリが存在する場合はエラーになるため、変更や上書きを行いたい場合は add の代わりに replace を使用します。
sudo ip neigh replace 192.168.1.100 lladdr 00:11:22:33:44:55 dev eth0ステップ2: ARPエントリを削除する
sudo ip neigh del 192.168.1.100 dev eth0Windowsでのarpコマンドの使い方
Windows環境では、古くからおなじみの arp コマンドが現在でも標準で利用できます。表示だけなら通常の権限で実行できますが、ARPエントリの追加・削除など変更操作では、コマンドプロンプトやPowerShellを管理者権限で起動する必要があります。
WindowsでARPキャッシュを確認する(arp -a)
現在のARPテーブルを確認するには、-a オプションを使用します。
arp -a実行結果の例:
インターフェイス: 192.168.1.50 --- 0x4 インターネット アドレス 物理アドレス 種類 192.168.1.1 aa-bb-cc-dd-ee-ff 動的 192.168.1.15 11-22-33-44-55-66 動的 224.0.0.22 01-00-5e-00-00-16 静的 239.255.255.250 01-00-5e-7f-ff-fa 静的出力のポイント:
- 動的 (dynamic): ARPリクエストによって自動的に学習され、一定時間通信がないと自動削除されるエントリです。
- 静的 (static): 手動で追加された、あるいはOSが固定で保持しているエントリです。
ARPキャッシュの削除と静的エントリの固定化(arp -d, arp -s)
Windows環境でARPキャッシュをクリアしたり、固定化したりする手順です。これらを実行するには、コマンドプロンプトを管理者として実行する必要があります。
ステップ1: ARPキャッシュをすべて削除する
ネットワークの不調時やARPキャッシュを再学習させたい場合は、ワイルドカード * を指定してすべてのARPエントリを削除できます。
arp -d *特定のIPアドレスのエントリだけを削除したい場合は、IPアドレスを指定します。
arp -d 192.168.1.15ステップ2: ARPエントリを静的(固定)として登録する 特定のIPアドレスとMACアドレスの対応を固定する用途があります。ただし、ARPスプーフィング対策としてすべての環境で利用するものではなく、大規模なネットワークではDHCPDHCP [ディーエイチシーピー]Dynamic Host Configuration Protocol。ネットワーク内の端末にIPアドレス等を自動で割り当てるプロトコル SnoopingやDynamic ARP Inspection(DAI)など、スイッチ側の機能を組み合わせて対策する方法があります。
arp -s 192.168.1.100 00-11-22-33-44-55arpコマンドを活用したトラブルシューティング実践例
ここからは、実際の現場で遭遇しがちなトラブルに対し、arpコマンドをどのように役立てるのかを解説します。
IPアドレスから通信相手のMACアドレスを特定・調査する
「ファイルサーバーやプリンターのIPアドレス(例: 192.168.1.50)は分かっているのに、ブラウザやエクスプローラーからアクセスできない」という場合の手順です。
- まず、対象のIPアドレスに対して
pingを実行します。対象が同一リンク上にあり、必要なARP情報がキャッシュにない場合、pingによる通信開始に伴ってARPによるMACアドレス解決が行われます。Terminal window ping 192.168.1.50 - その後、ARPテーブルを確認します。
Terminal window # Linuxの場合ip neigh show 192.168.1.50# Windowsの場合arp -a | findstr 192.168.1.50 - 結果の判断:
- MACアドレスが表示され、状態が
REACHABLEなどであれば、少なくとも同一リンク上の隣接ノードに対するARP/neighbor解決は成功していると判断できます。ただし、TCPTCP [ティーシーピー]Transmission Control Protocol。信頼性の高い通信プロトコルやアプリケーションレベルの通信が正常であることまでは意味しません。 - ARP/neighbor情報が取得できない場合は、対象ホストの電源・NIC・VLAN・IPアドレス設定、ネットワーク経路などを追加で確認します。
- MACアドレスが表示され、状態が
ARPスプーフィングの兆候を見つける
セキュリティ上の脅威である「ARPスプーフィング(ARPキャッシュポイズニング)」は、攻撃者が偽のARPレスポンスを送りつけることで、通信を盗聴・改ざんする手法です。
調査と対策のポイント:
- ARPテーブルを定期的に確認し、**「異なる複数のIPアドレスに対して、まったく同じMACアドレスが割り当てられている」**といった不自然な状態がないか確認します(ただし、ルーター配下や仮想環境等で意図的にMACアドレスが共有されている場合を除く)。
- 不審な変動を見つけた場合は、ネットワーク機器のログやARP情報を追加で確認し、必要に応じてDHCP SnoopingやDynamic ARP Inspection(DAI)、ポートセキュリティなどの対策を検討してください。
まとめ:arpコマンドでネットワークの異常を迅速に切り分けよう
本記事では、ネットワーク調査に欠かせないarpコマンドの仕組みと使い方について解説しました。最後に重要なポイントを振り返ります。
- ARPは、IPアドレスから通信相手のMACアドレスを特定するための重要なプロトコルである。
- Linuxでは現在の標準コマンドである
ip neighを使い、必要に応じて追加・削除を行う。 - Windowsでは
arp -aでキャッシュを確認し、管理者権限で-d(削除)や-s(固定)を操作する。 - 疎通トラブル時には
pingとARP/neighborテーブルを組み合わせて確認することで、同一リンク上のARP解決や隣接ノードとの通信状況を切り分ける手掛かりになる。
ネットワークトラブルに直面した際は、ぜひこの記事を参考にarpコマンドを活用して原因究明に役立ててください。
以上で本記事の解説を終わります。
よいITライフを!
人気記事
- 1
- 2
- 3
- 4
- 5
Rocky Linux対応。実際にWebサーバーを公開するまでのプロセスを体験できる、最も確実で実践的なガイドブックです。