LANかWANに接続しているhostのIPアドレス

LANかWANに接続しているhostのIPアドレスを全部リストしたいときってありますよね。

色々ソフトウェアを使ってやるのもいいですが。

たとえば、私はスマホアプリのFingを使っています。(iOSAndroidも)

しかし、アプリのないときは、コマンドラインででいると便利ですよね。

そういう時は!

nmap -sP 192.168.2.1/24

もちろん、192.168.2.1のところはあたなのネットワークの環境に合わせて直してくださいね。

しかし、この場合は、全部見つからない場合があります。

理由としては、この命令を実行した時に、指定した範囲内のIPアドレスにPingを送ります、Pingが失敗した場合は、80番のポートにSYNパケットを送ります。 (SYN scan)

SYNパケットとは、TCPで接続を確立する際にクライアントからサーバに送られるパケットです。TCPヘッダの制御フラグでSYNフィールドがセットされたパケットのことです。

しかし、80番のポートがファイアウォールの設定でブロックしている場合が多いから、検出できないことになります。たとえばWindowsのファイアウォールがデフォルトの設定がPingもブロックしています。従いまして、Pingやポート80番が閉じている端末はこのコマンドでは検出されません。

これを回避するためには

別のポートを指定することでできます。

つまり、SYNパケットを送るポートを指定できます。他のよく利用されている(閉じていない確率の高い?)ポートに送れば、検出されます。コマンドは下記となります。

sudo nmap -sP -PS22,3389 192.168.3.1/24 #custom TCP SYN scan

あるいは

sudo nmap -sP -PU161 192.168.4.1/24 #custom UDP scan

もちろん、ここも「192.168.2.1/24」のところ、あなたのネットワークの環境に合わせて直してくださいね。

-PSは、22,3389番のポートを指定しています、そうすると、上のコマンドのデフォルトに80番に送るのではなく、代わりに22と3389番に送ります。もちろん、これも全て検出できるとは限りらないです。各ホストの設定に依存します。

ポートスキャンをしない時は、-sn (no port scan)オプションを使いましょう。(これをよくping sweepと言います。ping 192.168.2.255より効果的です、何故ならば、ping ブロードキャストの場合、ブロードキャストに反応しないホストがあります。)

このコマンドの前にsudoをつけない場合は、自分のホストが検出されない場合があります。

「nmap」が入っていない場合は、インストールしましょう!

Debian系のOSには

sudo apt-get install nmap

で、「nmap」をインストールすることができます。

Macでは

brew install nmap

(最初brewを使うのが抵抗がありましたが、今はMacに入れています。)

これで、コマンド一本で、あなたのLANかWANに接続している全てのホストのIPアドレスをリストアップすることができます!

私は、よく新しいRaspberryPiを電源投入したあと、IPアドレスがどれかなと困ったことがありましたが、これで解決。

Raspberry Pi OSインストール

ちなみに「sudo」をつけると、

MAC Address: B8:27:EB:4D:2D:5F (Raspberry Pi Foundation)

のように、MAC Addressとメーカー情報も取れます。

あと、UPDでスキャンする時は、rootの権限がないとできませんので、sudoが必要です。

もし、LANかWANの中の接続しているRaspberry PiのIPアドレスを探したいという限定的なテーマでしたら

sudo nmap -sP 192.168.1.0/24 | awk '/^Nmap/{ip=$NF}/B8:27:EB/{print ip}'

上のコマンドが使えます。

Raspberry PiのMAC Addressが全部「B8:27:EB」で始まる特徴を利用しているコマンドです。

ここもあたなのネットワークの環境に合わせて、直してくださいね。

さらに、「RaspberryPiを探す」だけでしたら、こういうのもあります。

https://github.com/adafruit/Adafruit-Pi-Finder

いかがでしょうか。これで、IPアドレスをしっかり把握できますね。

注意点としては、nmapの使い方ですね。ポートスキャンは不正アクセスの予備的な行為と考えられ,不正アクセス禁止法違反には当たらないものの,攻撃の前兆とされる可能性が高く,トラブルになりやすい。外部の他人のサイトへのポートスキャンはやめましょう!

あと、arpコマンドを使う方法もあります。

まず

nmap -sP 192.168.2.1/24

でping sweepをして、続いて

arp -a -n

を実行すると、ARPクエリに反応するホストを全部取得できます。ICMPをフィルタリングしているホストもです。

他の考えられる方法としては

Wireshark

tcpdump

ですかね。

他のやり方がありましたら、教えてください。

Add a Comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

By continuing to use the site, you agree to the use of cookies. more information

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close