ネットワークに接続されているIPアドレスを一覧表示する!

ローカルネットワークに接続されているサーバーに対してsshで接続したいけどIPアドレスがわからない!という経験ありますよね。

そんなときに、ローカルネットワーク内のIPアドレスを調べる方法を紹介します。

2パターン(Ubuntu20.04とWindows11の場合)紹介するので、参考にしてみてください!

前提知識:ARPについて

ローカルネットワーク内のIPアドレスを調べるときは、ARPの仕組みを利用することが多いです。

ARPとは

ARP(Address Resolution Protocol)は、IPアドレスからMACアドレスを取得するためのプロトコルです。

IPアドレスからMACアドレスを問い合わせるARPリクエストと、問い合わせに対して返答するARPリプライと呼ばれる機能があります。

ARPを完璧に理解するのは簡単ではないので、ここではIPアドレスとMACアドレスのマッピング情報を得るためのプロトコルと覚えれば十分です!

Ubuntu20.04でIPアドレスを一覧表示する

まず、Ubuntu20.04でローカルネットワーク内のIPアドレスを一覧表示する方法を紹介します。

Ubuntuではarp-scanというコマンドが利用可能なので、このコマンドを利用してIPアドレスを取得します。

arp-scanコマンドのインストール

sudo apt install arp-scan

パソコンが属するネットワーク情報を取得

ip routeコマンドで自身のPCが属するサブネットを調べます。

$ ip route
default via 192.168.1.1 dev enp4s0 proto dhcp src 192.168.1.33 metric 100
192.168.1.0/24 dev enp4s0 proto kernel scope link src 192.168.1.33
192.168.1.1 dev enp4s0 proto dhcp scope link src 192.168.1.33 metric 100

上記の例では、IPアドレスが192.168.1.33で、サブネットが192.168.1.0/24で、ネットワークインターフェースがenp4s0であることがわかります。

このサブネットとネットワークインターフェースの情報は次のコマンドで利用します。

ネットワークインターフェースとは

インターフェイスとは、二つのシステムを接続するための物理的な機器だったり、二つのシステム間での信号の送受信のルールを定めたものを示しています。

つまりネットワークインターフェイスとは、パソコンとネットワーク機器が繋がる機器であったり、通信のルールを決めた仕組みのことです。

arp-scanコマンドでIPアドレスを調べる

上記コマンドで取得したネットワークインターフェースとサブネットの情報を使って、ローカルネットワーク内にあるIPアドレスを調べます。

コマンドは、arp-scan -I {network interface} {subnet}という使い方です。

$ sudo arp-scan -I enp4s0 192.168.1.0/24
Interface: enp4s0, type: EN10MB, MAC: 40:b0:76:5f:7e:e2, IPv4: 192.168.1.33
Starting arp-scan 1.9.7 with 256 hosts (https://github.com/royhills/arp-scan)
192.168.1.1 XX:XX:XX:XX:XX:XX (Unknown)
192.168.1.1 XX:XX:XX:XX:XX:XX (Unknown) (DUP: 2)
192.168.1.7 XX:XX:XX:XX:XX:XX (Unknown)
192.168.1.4 XX:XX:XX:XX:XX:XX (Unknown)
192.168.1.4 XX:XX:XX:XX:XX:XX (Unknown) (DUP: 2)
192.168.1.5 XX:XX:XX:XX:XX:XX (Unknown)
192.168.1.5 XX:XX:XX:XX:XX:XX (Unknown) (DUP: 2)
192.168.1.36 XX:XX:XX:XX:XX:XX (Unknown)
192.168.1.47 XX:XX:XX:XX:XX:XX Synology Incorporated
192.168.1.42 XX:XX:XX:XX:XX:XX (Unknown: locally administered)
192.168.1.32 XX:XX:XX:XX:XX:XX (Unknown: locally administered)
12 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.9.7: 256 hosts scanned in 1.999 seconds (128.06 hosts/sec). 11 responded

我が家にはSynologyNASがあるのですが、NASのIPアドレスが取得できていることが分かります。

ちなみにXX:XX:XX:XX:XX:XXはMACアドレスです。

WindowsでIPアドレスを一覧表示する

Windowsでは、nmapコマンドをインストールして、nmapコマンドを通してARPの仕組みを利用します。

nmapコマンドのインストール

下記サイトの”Downloads”から、Windows用のインストーラーをダウンロードして、インストールしてください。

https://nmap.org/download.html

インストール中に聞かれる項目については、すべてデフォルト値で大丈夫です。

コマンドプロンプトからIPアドレスの一覧を表示

まず、コマンドプロンプトを起動して、ipconfigコマンドでネットワークのサブネットを取得します。

> ipconfig
...
Wireless LAN adapter Wi-Fi: Connection-specific DNS Suffix . : IPv4 Address. . . . . . . . . . . : 192.168.1.4 Subnet Mask . . . . . . . . . . . : 255.255.255.0 Default Gateway . . . . . . . . . : 192.168.1.1

サブネットマスクは、255.255.255.0(短縮形/24)であることが確認できます。

次に、このサブネットの情報を使って、ローカルネットワーク内のIPアドレスの一覧を表示します。

コマンドの使い方は、nmap -sn {subnet}です。

>nmap -sn 192.168.1.0/24
Starting Nmap 7.92 ( https://nmap.org ) at 2022-03-19 19:21 Tokyo Standard Time
Nmap scan report for 192.168.1.1
Host is up (0.011s latency).
MAC Address: XX:XX:XX:XX:XX:XX (Huawei Technologies)
Nmap scan report for 192.168.1.7
Host is up (0.0040s latency).
MAC Address: XX:XX:XX:XX:XX:XX (Tp-link Technologies)
Nmap scan report for 192.168.1.33
Host is up (0.0020s latency).
MAC Address: XX:XX:XX:XX:XX:XX (Asustek Computer)
Nmap scan report for 192.168.1.47
Host is up (0.0010s latency).
MAC Address: XX:XX:XX:XX:XX:XX (Synology Incorporated)
Nmap scan report for host.docker.internal (192.168.1.4)
Host is up.
Nmap done: 256 IP addresses (8 hosts up) scanned in 5.96 seconds

ネットワーク内のIPアドレス、MACアドレス、ホスト名が取得できました。

まとめ

この記事ではローカルネットワーク内のIPアドレスを一覧表示する方法を紹介しました。

ルーターに接続したり、計算機サーバーに接続するためには対象のIPアドレスを知る必要があります。

ただし、IPアドレスがDHCPサーバーで動的に振られている場合、接続先のIPアドレスがわからなくなるので調べる必要があります。

そんな時にはARPの仕組みを利用して、ネットワーク内のIPアドレスを調べてみてください!