2022年7月4日ito
コラム

ローカルエリアネットワーク(LAN)内に接続したデバイスを確認する方法

社内でローカルエリアネットワーク(LAN)を利用して業務をしていると、ネットワークに接続されている各デバイスが正しく認識されているか、ローカルIPアドレス(プライベートIPアドレス)がどれになるかなどの確認をしたい時があります。

今回ご紹介するコマンドを使用することでローカルネットワークに接続しているPCやデバイスのIPアドレスとMACアドレスを一度に確認する事ができ、認識されていないデバイスの発見や、デバイスに割り当てられた動的IPアドレスの確認などに役立てる事ができますので覚えておくと便利です。

1. 動的IPアドレス・MACアドレスとは?
2. ネットワーク上のデバイスを確認できる「arp」コマンド
3. 接続デバイスを漏れなく確認するには
4. ルーターのIPアドレス確認方法
5. Macの場合
6. Linuxの場合
7. 終わりに

1. 動的IPアドレス・MACアドレスとは?

ところで皆様はローカルIPアドレス・MACアドレスをきちんと説明出来ますか?
分かったような気がしているが不安な方は是非一読下さい。
ばっちり理解している方は、この項目は読み飛ばしてもらって大丈夫です。

接続する度にIPアドレスが変わる(可能性のある)IPアドレスの割り当て方を動的IPアドレスと言います。
動的IPアドレスはネットワークを使うときにルータのDHCPにより一時的に割り当てられ、使い終わると回収され、そしてまた次に使うときは改めて割り当てられます。この為、ルータを再起動した際など前回とは違うIPアドレスになることがあります。

対してMACアドレスは、PCやネットワークに接続できる機器が部品を作る時点で固定で割り当てられるアドレスのことを言います。動的IPアドレスと違ってMACアドレスは内部の部品を取り替えない限り変更されません。

2. ネットワーク上のデバイスを確認できるarpコマンド

ローカルネットワーク(LAN)に接続されているデバイスの情報はPC等のデバイス内に「ARPテーブル」情報として保存し、管理されています。
ARPとは、IPアドレスからMACアドレスを調べる仕組みなのですが、ARPテーブルにはARPの仕組みで判明したアドレスの組み合わせ情報が登録されており、MACアドレスからどのデバイスがネットワークに接続されていて、どんなIPアドレスが割り振られているかを判断する事ができます。

そして「arp」コマンドを使うことによりARPテーブルの内容を確認することが可能です。
各OSに用意されているコマンドですが、まずはWindowsでの使用方法についてご案内し、Mac、Linuxでの使用方法については後述します。
Windowsの場合、「コマンドプロンプト」から「arp」コマンドを実行します。
実行すると、コマンドを実行したPCが管理しているARPテーブルを確認できます。

・キーボードの「Windows」キーを押してスタートメニューを表示します。
インストール一覧から「Windows システムツール」→「コマンドプロンプト」を起動してください。

・「コマンドプロンプト」に「arp -a」と入力し、「Enter」キーを押してください。
※オプション「-a」を指定する事でARPテーブルを表示できます

・以下のように同じネットワーク上のPCやデバイスのIPアドレスとMACアドレスが表示されます。

「インターネットアドレス」がIPアドレス、「物理アドレス」がMACアドレスです。

このようにしてARPテーブルを確認することができますが、ここで表示されているARPテーブルは、あくまでも「arp」コマンドを実行したPCが確認できているネットワーク上のデバイスのみとなります。
ローカルネットワーク(LAN)に接続されていても、「arp」コマンドを実行したPCと通信を行ったことがないデバイスの情報はARPテーブルに載らないため、全てを網羅できているとは言えません。
しかしこの漏れは、実際に通信を行ったことがないデバイスとコマンドを実行したPCが通信を行うことによって防ぐことができます。

3. 接続デバイスを漏れなく確認するには

「arp」コマンドは非常に便利ですが、実際には「arp」コマンドを実行したPCと通信したことのあるデバイスのみが表示されている点に注意が必要です。
ネットワーク上の全てのPCとデバイスを漏れなく検索するためには、想定されるIPアドレス全てに「ping」コマンドを発行して通信実績を作る必要があります。

「ping」とは、対象のコンピュータとネットワークでつながっているか確認する際に使うコマンドです。
pingコマンドの基本的な使用方法は「ping 【対象のコンピュータ】」です。

例 ping 192.168.1.0
192.168.1.0 と通信を試み、ネットワークで繋がっているか確認する為のコマンドです。

このコマンドを使用する事でネットワーク上の各デバイスに影響を与えずに通信実績を作る事ができます。
「ping」コマンドも「コマンドプロンプト」から発行します。
上記の基本の使用方法を応用し、以下のように入力します。

内容はfor /l %i in (開始値,増分,終了値) do「ping」 -w 1 -n 1 192.168.1.%i

となっており「for /l」コマンドを使い、192.168.1.0 ~ 192.168.1.255までの256個のIPアドレス全てに「ping」を発行して総当たり通信を行っています。

※「%i」の範囲も振り分けているIPアドレスの範囲などを加味して調整ください。
※「192.168.」以下の部分はご使用のルーターによって変える必要があります。

まとめますと「コマンドプロンプト」を開き、

 $ for /l %i in (0,1,255) do ping -w 1 -n 1 192.168.1.%i

で192.168.1.0 ~ 192.168.1.255 までの256個のIPアドレス全てに「ping」を発行して総当たり通信を行うことによって

 $ arp -a

でARPテーブルを漏れなく確認出来るようになるという仕組みです。

このコマンドを実行し、完了後改めて「arp -a」を実行してみてください。
ネットワークの状態にもよりますが、完了まで1分~3分ほどかかります。
※ローカルネットワークによっては 192.168.0.***や 192.168.1.***が混在する場合もあるので完全に調べる場合は環境によって総当たり方法を変える必要があります。

 4. ルーターのIPアドレス確認方法

    ■Windowsの場合
  • ①コントロールパネル内、「ネットワークとインターネット」の下部にあります「ネットワークの状態とタスクの表示」をクリックします。
  • ②接続中のネットワーク名をクリックし、別ウィンドウでWi-Fiの状態が表示されるので「詳細」をクリックします。
  • ③ネットワーク接続の詳細の「IPv4デフォルトゲートウェイ」欄に、ルーターのIPアドレスが表示されます。

  • ■Macの場合
  • ①ホーム画面左上のAppleアイコンをクリックし、「システム環境設定」を開きます。
  • ②システム環境設定の項目にある「ネットワーク」をクリックし、左側に接続しているWi-Fiネットワークが表示されますので選択します。
  • ③右下にある「詳細」をクリックした後に表示される上部のバーの「TCP / IP」タブを選択しますとルーターのIPアドレスが表示されます。

  • ■Linuxの場合
  • ①通知エリアの「ネットワークアイコン」をクリックします。
  • ②「接続情報」または「ネットワーク設定」を選択します。
  • ③ ネットワーク接続の情報を表示したウィンドウが開かれ「デフォルトルーター」または「ゲートウェイ」の欄にルーターのIPアドレスが表示されます。

5. Macの場合

MacのOSではWindowsの「arp」コマンドのようにあらかじめARPテーブルの内容を確認できるコマンドが用意されてはいないため、まず最初に「arp」コマンドの代わりとなる「arp-scan」コマンドをインストールしなければいけません。

※前提として導入するにあたり「automake」コマンドを使うので「Homebrew」のインストールが必要です。

①Homebrewをインストールする
https://brew.sh/index_ja

②「ターミナル」を開き、以下の「brew」コマンドを実行して「automake」をインストールする

 $ brew install automake

③「arp-scan」をインストールする
下記コマンドを使用して「git clone」コマンドを使用してダウンロードします。
ローカルの任意の場所にダウンロードしてください。

 $ cd ~/Downloads/
 $ git clone https://github.com/royhills/arp-scan.git
 $ autoreconf –install
 $ ./configure
 $ make
 $ sudo make install
※上記コマンドは1行ずつ実行してください。

④次に接続デバイスを漏れなく確認する為に「ping」コマンドを実行します。
Macでは「ping」コマンドの代わりに「fping」コマンドを使用します。

 $ fping -g 192.168.1.0 192.168.1.255

※オプション「-g」で 「192.168.1.0」~「192.168.1.255」の範囲のIPアドレスに対して「fping」を発行できます。

⑤最後に「arp-scan」Ryumin Regular KLします。
下記コマンドを実行するとWindowsの「arp」コマンドと同様にIPアドレスとMACアドレスの組み合わせ一覧が表示されます。

 $ sudo arp-scan -I en0 -l

管理者権限が必要になるため「sudo」で実行します。
パスワードの入力を求められた場合は入力してください。

※オプション「-I」でローカルネットワークのインターフェイス「en*」を指定します。
「en」で始まるインターフェイスはイーサネット(wifiや有線LAN)を表します。 (en0、en1のようにゼロからの連番が付きます)
PCが接続しているインターフェイスの確認には「ifconfig」コマンドを使用して、実行結果から「en」で始まるインターフェイスを特定してください。
※オプション「-l 」でローカルネットワークを指定します。

6. Linuxの場合

LinuxのOSではMac同様Windowsの「arp」コマンドのようにあらかじめARPテーブルの内容を確認できるコマンドが用意されてはいないため、まず最初に「arp」コマンドの代わりとなる「arp-scan」コマンドをインストールしなければいけません。

①「コンソール」を開き、ディストリビューションにあわせて以下のコマンドを実行し「arp-scan」コマンドのインストールを行います。

# RedHat系(CentOSなど)の場合
 $ sudo yum install arp-scan

 # Debian系(Ubuntuなど)の場合
 $ sudo apt-get install arp-scan

②次に接続デバイスを漏れなく確認する為に「ping」コマンドを実行します。
Linuxでは「ping」コマンドの代わりに「fping」コマンドを使用します。

 $ fping -g 192.168.1.0 192.168.1.255

※オプション「-g」で 「192.168.1.0 」~「192.168.1.255」の範囲のIPアドレスに対して「fping」を発行できます。

③最後に「arp-scan」コマンドの実行をします。

下記コマンドを実行するとWindowsの「arp」コマンドと同様にIPアドレスとMACアドレスの組み合わせ一覧が表示されます。

 $ sudo arp-scan -I en0 -l

管理者権限が必要になるため「sudo」で実行します。
パスワードの入力を求められた場合は入力してください。

※オプション「-I」でローカルネットワークのインターフェイス「en*」を指定します。
「en」で始まるインターフェイスはイーサネット(wifiや有線LAN)を表します。 (en0、en1のようにゼロからの連番が付きます)
PCが接続しているインターフェイスの確認には「ifconfig」コマンドを使用して、実行結果から「en」で始まるインターフェイスを特定してください。
※オプション「-l 」でローカルネットワークを指定します。

7. 終わりに

ここまで色々ご説明してきましたが、まとめるとこの通り意外と単純です。

・「arp」コマンドでARPテーブルを確認
・「ping」コマンドを応用してARPテーブルの漏れを防止
(Mac、Linuxは「arp-scan」コマンドのインストールも忘れずに)

ちなみに自身で使っているPCのIPアドレスが知りたい場合は下記のとおりです。

■Windowsの場合
「コマンドプロンプト」を起動し「ipconfig」コマンドを使用して確認できます。

■Macの場合
「ターミナル」を起動し「ifconfig」コマンドや「ip」コマンドを使用して確認できます。

■Linuxの場合
「コンソール」を起動し「ifconfig」コマンドや「ip」コマンドを使用して確認できます。

※「IPv4 アドレス」がそのPCのIPアドレスになります。

ルーターなどのデバイスのIPアドレスに関しては各機器(ルーターに接続してるスマホやPC、プリンタなど)の設定画面などから確認できます。
また、MACアドレスについては各機器のマニュアルや、機器に貼り付けられたシール・カードなどに記載があることが多いので一度ご確認してみてください。

今回ご紹介した「arp」コマンド、「arp-scan」コマンドを使用しMACアドレスやIPアドレスを確認する方法は、ローカルネットワーク(LAN)上の認識されていないPCやデバイス等の発見や、動的に割り振られたIPアドレスの確認などに役立てる事ができますのでご活用いただけましたら幸いです。