IPアドレスからMACアドレスを確認したい場合は、「arping」コマンドを利用できます。IPアドレスとMACアドレスのひも付けがどのようであるかも確認できます。
本連載では、ネットワーク管理の基本コマンドを順を追って紹介していきます。基本書式と用法、主要なオプション、用例サンプルを示しますので、manやhelp代わりに通読し、各コマンドでできることを順次おさらいしてみてください。ネットワーク機器の存在を確認する際の基本コマンド「ping」は以前紹介しましたが、今回は、MACアドレスとIPアドレスの組み合わせでノードの存在確認を行う「arping」コマンドを紹介します。
なお、本連載では、執筆時点の最新版Red Hat Enterprise Linux(RHEL)およびCentOS環境で動作を確認しています。コマンドのサンプルなどで一部環境に依存した出力例となる場合がありますので、その際には適宜ご自身の環境に合わせて読み替えてください。また、本稿に出現するネットワーク通信特有の用語については「用語解説」の項目を設けて別途補足しています。本文と併せて理解に役立ててください。
ネットワーク機器の存在を確認するためのコマンドとしては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コマンドで利用できる主なオプションとそれぞれの意味は次の通りです。
オプション | 意味 |
---|---|
-A | 対象IPアドレスのARPキャッシュを強制的に更新する(ARPリプライを使用) |
-D | 対象IPアドレスが同一サブネット上ですでに使用されているかを確認する(DADモード) |
-I | ARPリクエストを送信するネットワークデバイスを指定する |
-U | 対象IPアドレスのARPキャッシュを強制的に更新する(ARPリクエストを使用) |
-c | 送信するARPリクエストの回数を指定する |
-q | 結果を出力しない |
-s | ARPリクエストの送信元IPアドレスを指定する |
同一サブネット上に存在する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)
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アドレスが他のノードに浸透するにはある程度の時間を要します。これは、各ノードが「ARPキャッシュ」を保有しているためで、ネットワークデバイスによっては数時間以上キャッシュが更新されないことがあります。
IPアドレスの変更を他のノードにすぐに知らせたい場合には、「-A」オプションに続けて新しく(ローカルホストに)設定したIPアドレスを指定します。「arping -A 通知したいIPアドレス」の要領でコマンドを実行すれば、自分のIPをブロードキャストし、全てのノードのARPキャッシュを一度に書き換えることができます。
$ arping -A 192.168.12.2
本稿で言及したコマンドに関連するネットワーク用語は次の通りです。必要に応じて参考資料も確認して理解を深めましょう。
標準化団体「IETF(The Internet Engineering Task Force、インターネット技術タスクフォース)」による標準仕様「RFC 826」などで定義されているネットワーク通信プロトコル標準「ARP(Address Resolution Protocol、アドレス解決プロトコル)」にはARPリクエスト(ARP要求)、ARPリプライ(ARP応答)という2種類のフォーマットあります。ARPリクエストは、本稿解説にある通りサブネット内でブロードキャストされます。ARPリプライはARPリクエストに対する各ノードからの応答で使われます。
MACアドレスとはイーサネットフレームワークにおける物理アドレスのことを指します。NICカードなどの通信デバイス固有のアドレスとして割り当てられます。電気・機械工学の国際的な学術団体である「IEEE(アイトリプルイー)」が定める標準仕様「IEEE 802.3」の中で定義されています。詳しくはネットワーク用語辞典「MACアドレス」を参照してください。
ネットワーク機器によっては、MACアドレスとIPアドレスの対応情報をキャッシュとして保持していることがあります。これを「ARPキャッシュ」と呼びます。構成を変更した場合などで接続がうまくいかないときにはこのARPキャッシュが影響している場合があります。
Copyright © ITmedia, Inc. All Rights Reserved.