IPアドレスを指定してMACアドレスを調べるには? arpingコマンド:ネットワーク管理の基本Tips
IPアドレスからMACアドレスを確認したい場合は、「arping」コマンドを利用できます。IPアドレスとMACアドレスのひも付けがどのようであるかも確認できます。
本連載では、ネットワーク管理の基本コマンドを順を追って紹介していきます。基本書式と用法、主要なオプション、用例サンプルを示しますので、manやhelp代わりに通読し、各コマンドでできることを順次おさらいしてみてください。ネットワーク機器の存在を確認する際の基本コマンド「ping」は以前紹介しましたが、今回は、MACアドレスとIPアドレスの組み合わせでノードの存在確認を行う「arping」コマンドを紹介します。
なお、本連載では、執筆時点の最新版Red Hat Enterprise Linux(RHEL)およびCentOS環境で動作を確認しています。コマンドのサンプルなどで一部環境に依存した出力例となる場合がありますので、その際には適宜ご自身の環境に合わせて読み替えてください。また、本稿に出現するネットワーク通信特有の用語については「用語解説」の項目を設けて別途補足しています。本文と併せて理解に役立ててください。
arpingコマンドとは? pingとの違いは?
ネットワーク機器の存在を確認するためのコマンドとしてはpingが知られていますが、pingコマンドで分かる情報は、正確には対象のIPアドレスを持つノードの存在確認用であり、必ずしも想定したノードから応答を得られるわけではありません。今回紹介するarpingコマンドは対象のノードが同一サブネット上にある場合に限られますが、IPアドレスとMACアドレスの情報からノードの存在確認を行えます。
arpingコマンドはARP(Address Resolution Protocol)というプロトコルを利用しています。ARPそのものは、宛先のIPアドレスからMACアドレスを求めるためのシンプルなプロトコルです。このARPで、知りたいIPアドレスを指定してブロードキャストを行うと(「ARPリクエスト」)、同一サブネット上にある全てのノードがそのパケットを受信します。該当するIPアドレスを持つノードが、自身のMACアドレスを添えて送信元に応答する「ARPリプライ」を行うので、ノードの存在を知ることができます。
arpingコマンドは、ARPリクエストを送信する際に、ブロードキャストアドレス宛てに送信(宛先MACアドレスを「FF:FF:FF:FF:FF:FF」に指定して全ノードに送信)します。こうすることで、サブネット内の該当するIPアドレスを持つノードが、自身のネットワークノードのMACアドレスを返す仕組みです。
ARPプロトコルおよびARPコマンドそのものについては、「MACアドレスを調査するには? arpコマンド」も参照してください。
arpingコマンドの主なオプション
arpingコマンドで利用できる主なオプションとそれぞれの意味は次の通りです。
オプション | 意味 |
---|---|
-A | 対象IPアドレスのARPキャッシュを強制的に更新する(ARPリプライを使用) |
-D | 対象IPアドレスが同一サブネット上ですでに使用されているかを確認する(DADモード) |
-I | ARPリクエストを送信するネットワークデバイスを指定する |
-U | 対象IPアドレスのARPキャッシュを強制的に更新する(ARPリクエストを使用) |
-c | 送信するARPリクエストの回数を指定する |
-q | 結果を出力しない |
-s | ARPリクエストの送信元IPアドレスを指定する |
IPアドレスを指定してMACアドレスを調べるには?
同一サブネット上に存在するIPアドレスを引数としてコマンドを実行すると、そのIPアドレスを持つホスト(ネットワークデバイス)固有のMACアドレスを確認できます。pingコマンド同様、パケットの送信が無限に繰り返されるため、「Control」+「C」キーを押して停止します。
以下のコマンド実行例からは、IPアドレスが「192.168.12.7」のノードにパケットを送信し、そのノードから応答があること、MACアドレスが「AA:BB:CC:DD:DB:CC」であることが読み取れます。
$ arping 192.168.12.7 ARPING 192.168.12.7 from 192.168.12.10 eth0 Unicast reply from 192.168.12.7 [AA:BB:CC:DD:DB:CC] 98.913ms Unicast reply from 192.168.12.7 [AA:BB:CC:DD:DB:CC] 21.819ms Unicast reply from 192.168.12.7 [AA:BB:CC:DD:DB:CC] 46.762ms Unicast reply from 192.168.12.7 [AA:BB:CC:DD:DB:CC] 3.175ms ^CSent 4 probes (1 broadcast(s)) Received 4 response(s)
指定したIPアドレスがノードに割り当てられているかどうかを確認するには?
arpingコマンドで「-D」オプションを指定すると、送信元アドレスを「0.0.0.0」にして「DADモード(重複確認モード)」で動作します。
DADモードでは、引数に与えたIPアドレスが同一サブネット上の他ノードと重複していないかどうか、同一サブネット上に指定したIPアドレスが複数存在していないかどうかをチェックできます。
$ arping -D 192.168.12.15 ARPING 192.168.12.15 from 0.0.0.0 eth0 ^CSent 6 probes (6 broadcast(s)) Received 0 response(s) //←IPアドレスは存在しなかった $ arping -D 192.168.12.9 ARPING 192.168.12.9 from 0.0.0.0 eth0 Unicast reply from 192.168.12.9 [AA:BB:CC:DD:6D:03] 0.688ms Sent 1 probes (1 broadcast(s)) Received 1 response(s) //←IPアドレスの存在を確認できた
IPアドレスの変更を他のノードにも通知するには?
手動でIPアドレスを変更した場合、新しいIPアドレスが他のノードに浸透するにはある程度の時間を要します。これは、各ノードが「ARPキャッシュ」を保有しているためで、ネットワークデバイスによっては数時間以上キャッシュが更新されないことがあります。
IPアドレスの変更を他のノードにすぐに知らせたい場合には、「-A」オプションに続けて新しく(ローカルホストに)設定したIPアドレスを指定します。「arping -A 通知したいIPアドレス」の要領でコマンドを実行すれば、自分のIPをブロードキャストし、全てのノードのARPキャッシュを一度に書き換えることができます。
$ arping -A 192.168.12.2
用語解説
本稿で言及したコマンドに関連するネットワーク用語は次の通りです。必要に応じて参考資料も確認して理解を深めましょう。
ARPリクエスト、ARPリプライ
標準化団体「IETF(The Internet Engineering Task Force、インターネット技術タスクフォース)」による標準仕様「RFC 826」などで定義されているネットワーク通信プロトコル標準「ARP(Address Resolution Protocol、アドレス解決プロトコル)」にはARPリクエスト(ARP要求)、ARPリプライ(ARP応答)という2種類のフォーマットあります。ARPリクエストは、本稿解説にある通りサブネット内でブロードキャストされます。ARPリプライはARPリクエストに対する各ノードからの応答で使われます。
MACアドレス(Media Access Control address)
MACアドレスとはイーサネットフレームワークにおける物理アドレスのことを指します。NICカードなどの通信デバイス固有のアドレスとして割り当てられます。電気・機械工学の国際的な学術団体である「IEEE(アイトリプルイー)」が定める標準仕様「IEEE 802.3」の中で定義されています。詳しくはネットワーク用語辞典「MACアドレス」を参照してください。
ARPキャッシュ
ネットワーク機器によっては、MACアドレスとIPアドレスの対応情報をキャッシュとして保持していることがあります。これを「ARPキャッシュ」と呼びます。構成を変更した場合などで接続がうまくいかないときにはこのARPキャッシュが影響している場合があります。
- 無線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.