MACアドレスを調査するには? arpコマンド:ネットワーク管理の基本Tips
IPアドレスとMACアドレスをひも付けるARPテーブルを操作するにはarpコマンドを用います。物理的なネットワーク機器を特定する際などに利用するコマンドです。
イーサネットで構成するネットワーク上での物理的な通信には、IPアドレスではなく「MACアドレス」と呼ばれるハードウェアアドレスが利用されます。その時、IPアドレスとMACアドレスの対応を調べる処理に利用されるのが、IPアドレスとMACアドレスの対応表「ARP(Address Resolution Protocol)テーブル」です。arpコマンドは、そのARPテーブルの内容を表示/管理する目的で利用されます。
概要
IPアドレスとMACアドレスの対応表「ARP(Address Resolution Protocol)テーブル」(ARPキャッシュ)の表示や設定に利用するコマンドです。通常ARPテーブルの維持/管理はシステムが自動的に行いますが、ホストの登録/削除を手動で行うことも可能です。なお、エントリを手動で追加/削除する場合は管理者権限が必要です。
ARPキャッシュには、いちど通信したホストのIPアドレスとハードウェアアドレス(MACアドレス)が1対で保存されます。2回目以降の通信ではこのARPキャッシュが参照され、一致するIPアドレスがあれば対応するMACアドレスを用いて通信することで、無駄なトラフィックの発生を防いでいます。ARPキャッシュの情報は一定時間経つと自動更新され、つねに最新のIPアドレスとMACアドレスの対応表が保たれています。
主なオプション
オプション | 意味 |
---|---|
-a | 指定したホストのARPテーブルを表示する |
-d | 指定したホストのARPテーブルを削除する |
-f | 指定したファイルにあるアドレス情報をもとにマッピングエントリを設定する |
-i | インターフェース(NIC)を指定する |
-n | ホストやユーザーの名前解決を行わず数字のまま出力する |
-s | ARPアドレスのマッピングエントリを手作業で設定する |
-v | 詳細な情報を表示する |
現在のARPテーブルを表示するには?
arpコマンドをオプションなしで実行すると、現在キャッシュされているARPテーブルの内容全てが表示されます。ARPテーブルの維持/管理はシステムが自動的に行うため、ここに表示されない同一ネットワーク上のホストも、新たに通信を行えば(ex. ping 192.168.X.X)自動的に追加されます。
$ arp Address HWtype HWaddress Flags Mask Iface 192.168.12.6 ether b8:e8:56:ff:ff:ff C eth0 192.168.12.2 ether 00:61:71:ff:ff:ff C eth0 router.setup ether 00:0b:a2:ff:ff:ff C eth0
ARPテーブルにホストを追加するには?
ARPリクエストに対する応答があったときには、ARPキャッシュは自動更新された上で一定時間保持されます。そのため、DHCPサーバーが設置されたネットワークなど、ノードに対するIPアドレスの割り当てが頻繁に入れ替わることがある環境では、古いARPエントリが残っていると期待どおりに通信できないことがあります。
その場合は「-s」オプションを利用し、IPアドレスとMACアドレスを対にする形でarpコマンドを実行すると、ARPキャッシュに手動でエントリを追加できます(要管理者権限)。なお、/etc/ethersに同様のエントリを記述しておくと、システムブート時にARPエントリを自動登録できます。
$ sudo arp -s 192.168.12.25 0:d0:4b:ee:ee:ee [sudo] password for XXXXX: ←管理者のパスワードを入力(sudoの場合) $ arp -a ? (192.168.12.6) at b8:e8:56:ff:ff:ff [ether] on eth0 ? (192.168.12.2) at 00:61:71:ff:ff:ff [ether] on eth0 router.setup (192.168.12.1) at 00:0b:a2:ff:ff:ff [ether] on eth0 ? (192.168.12.25) at 00:d0:4b:ee:ee:ee [ether] PERM on eth0
- 無線LANのパスフレーズを暗号化するには? wpa_passphraseコマンド
- 無線LANにWPAで接続するには? wpa_supplicantコマンド
- このポートで実行中のプロセスはどれ? lsofコマンドの使い方
- ルーティングテーブルの設定をテストするには? routeコマンド
- DHCPサーバーと連携してIPアドレスを設定するには? dhclientコマンド
- NICの無効化/有効化、再起動を行うには? ifdown/ifupコマンド
- SSHサーバーの公開鍵管理を効率化するには? ssh-keyscanコマンド
- サーバーの時刻合わせコマンド、ntpdateはどのサーバーを参照すべき?
- 連番ファイルをダウンロードして他のコマンドに渡すには? curlコマンドの使い方
- 無線LAN接続の設定を操作するには? iwconfigコマンドの使い方
- 端末からアクセスポイントの情報を調べるには? iwlistコマンド
- HTTP/HTTPSでまとめてデータを取得するwgetコマンドとは?
- サーバーリソースのリアルタイム監視ができる便利ツール、dstatコマンドとは?
- SSHを介してファイル転送を行うには? sftpコマンド
- バッチなどでファイルのやり取りを安全に実行するには? scpコマンド
- SSHサーバーにログインするには? sshコマンド
- SSHでリモートホストに接続する前にやっておくと便利なことは? ssh-keygenコマンド
- あのホストまでの経路や通信ボトルネックを調べるには? tracerouteコマンド
- IPアドレスを指定してMACアドレスを調べるには? arpingコマンド
- NetworkManagerをコマンドラインから操作するには? nmcliコマンド
- 「192.168.0.100/24」のネットワークアドレスを即答するには? ipcalcコマンド
- サーバーとの通信状況を確認するには? ネットワークの速度を測るには? pingコマンド
- ネットワークデバイスを設定/状態確認するには? ifconfigコマンド
- MACアドレスを調査するには? arpコマンド
- IPアドレスやホスト名を調べるには? hostコマンド
- netstatコマンドとは?
- DNSサーバーが正常に動作しているかどうか確認するには? digコマンド
Copyright © ITmedia, Inc. All Rights Reserved.