2018-03-12
LANかWANに接続しているhostのIPアドレス
LANかWANに接続しているhostのIPアドレスを全部リストしたいときってありますよね。 色々ソフトウェアを使ってやるのもいいですが。 たとえば、私はスマホアプリのFingを使っています。(iOSもAndroidも) しかし、アプリのないときは、コマンドラインででいると便利ですよね。 そういう時は! 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