ネットワークで使用されているすべてのIPアドレスを見つける方法


94

私の仕事にはたくさんのコンピューターがあり、冗談を言いたいです。ネットワーク経由でコンピューターを閉じることはできますが、IPアドレスを見つけるのは困難です。

192.168.1.aaから192.168.1.zzまでのすべてのオンラインIPアドレスを簡単に見つけるにはどうすればよいですか?


4
試すangry ip scanner
ウェブ-E


2
マジ?あなたは私たちの助けがあなたの同僚をいたずらしたいですか?
ダンH

回答:


141

一般的に、nmapネットワークをすばやくスキャンするには非常に便利です。

nmapをインストールするには、ターミナルで次のコマンドを入力します。

sudo apt-get install nmap

アプリケーションがインストールされたら、次のコマンドを入力します。

nmap -sn 192.168.1.0/24

これにより、192.168.1.0と192.168.1.255の間のネットワーク上のping要求に応答したホストが表示されます。


Nmapの古いバージョンでは、次を使用します-sP

nmap -sP 192.168.1.0/24

その他の参照については、次のページを参照してください。

NMAPインストールガイド

NMAPリファレンスガイド

学ぶのに非常に便利なツールです。


2
すべてのホストがpingに応答するわけではありません。少なくともIPv4では、ARPを使用する方法です。
マーチンカミンスキー

3
私のための十分なのthats、それがインターネット上で動作します

1
それは私のコンピューターだけですか、それともこのコマンドの実行に永遠に時間がかかりますか?
JohnMerlino

4
nmapスキャンを高速化するには、-T4(速度)および-n(数値のみ)フラグを追加する必要があります。
セルギーKolodyazhnyy

3
nmapコマンドにはsudoが必要であることを忘れないでください。そうしないと、結果がゼロで返されます。
machineaddict

40

ネットワーク内のすべてのコンピューターがUbuntuまたはavahi-daemonDNS-SD)を使用する他のディストリビューションである場合、以下を実行することにより、それらの詳細なリスト(ホスト名とIPアドレス)を取得できます。

avahi-browse -rt _workstation._tcp

ネットワークで使用されているすべてのIPアドレスを知りたい場合は、次を使用できますarp-scan

sudo arp-scan 192.168.1.0/24

デフォルトではインストールされないため、でインストールする必要がありsudo apt-get install arp-scanます。arp-scanARPパケットをローカルネットワークに送信し、受信した応答を表示します。これにより、ファイアウォールで保護されたホスト(IPパケットに基づいてトラフィックをブロックするホスト)も表示されます。


3
このコマンドは、上記のコマンドよりも間違いなく優れています。nmapの実行には時間がかかりましたが、これは指定されたネットワーク内のノードに即座に応答しました。
JohnMerlino

3
私の場合、ほとんどの場合、arp-scanワイヤレスネットワークに関連付けられているすべてのデバイスが見つかりません。現在、たとえば、sudo arp-scan 192.168.2.0/242つの結果(.1および.1)が nmap -sn 192.168.2.0/24表示され、4つの結果(.1、.2、.3および.4)が表示されています。そのため、nmapより正確であると思われます(ネットワークに4つのデバイスが接続されていることは確かです)。どうしてこれなの?
tigerjack89

2
別の質問へのコメントで答えを見つけたのかもしれません。「一部のデバイスは、オンにしないと表示されない場合があることに注意してください。ネクサス4は、画面がオンにならない限り表示されません。」ただし、同じデバイスがからのpingに常に応答するのは興味深いことnmapです。
tigerjack89

arp-scanいいです !
forzagreen

17

読者への注意:元の回答は、しばらく前と、シェルスクリプトのみを学習していたときに投稿されました。より高速に実行される新しい改良されたスクリプトについては、以下の再訪バージョンをご覧ください。

元の回答

nmap私の一番の選択ですが、もしあなたがそれを持っていない場合はどうでしょうか?DIYの方法は、pingスクリプトを使用して、ネットワーク上の各IPアドレスを手動で通過させることです。ここにあるのは、アドレスの最後の番号を設定し、アドレスにサイレントpingを1回行い、コマンドが成功するかどうかを確認する(そして、成功した場合、ホストは明らかにアップしている)while printfステートメントであるwhileループです。早くて汚い方法で、それを書くのに約10分かかりましたが、実行時間は少し遅いかもしれません。

#!/bin/sh
# set -x
NUM=1

while [ $NUM -lt 256  ];do 
    ping -q -c 1 192.168.0.$NUM > /dev/null 
    RESULT=$(echo $?)
    if [ $RESULT -eq 0 ]; then 
        printf 192.168.0.$NUM"\n"
    fi
    NUM=$(expr $NUM + 1)
done

再訪回答

最初にこの回答を2015年8月に投稿しました。それ以来、シェルスクリプトについてもう少し学んだので、このスクリプトを見た後、この回答を再確認していくつかの改善を加えることをお勧めします。ここにいくつかのアイデアがあります:

  • スクリプトは明らかに遅くping、ホストからの応答を待ちます。デフォルトでは、pingあなたのネットワークであり、そして限り、私は理解してTCPプロトコルは、待ち時間を毎回倍にする方法混雑に応じて変えることができる2 RTTのために(少なくともによると、この)。そのpingため、-w 1フラグで強制的にタイムアウトすることができます。256個のアドレスがあり、アドレスごとに1秒と想定しているため、スクリプトは約256/60 = 4.27分かかります。

  • コマンドを実行してから終了ステータスをキャプチャすること$?は、実際には必要ありませんでした。if ... then;...fi直接コマンドを操作することができます。つまり、これを行うだけで十分です。

    if ping -w 1 -q -c 1 192.168.0.$NUM > /dev/null ;
    then
         <some other code here>
    fi
    
  • printfコマンドは、そのように書き換えることができます。

    printf "IP %s is up\n" 192.168.0."$NUM"
    

    これはスタイル上の変更ですがprintf、引用"$NUM"変数を使用することで、他の多くの言語での動作や外観と一貫性があります。ここで引用する必要はありません-数字のみを扱っているため、変数にスペースがあるために単語の分割を予測する必要はありません。

  • 複数のバックグラウンドプロセスを生成すると、パフォーマンスが大幅に向上します。以下のスクリプト編集はまさにそれを行います。pingand printfを関数に入れますpingf(はい、わかりやすい名前です)。またmain、のループと呼び出しを行う単一の関数もありpingfます。

#!/bin/sh
# Uncomment for debugging
#set -x
pingf(){
    if ping -w 2 -q -c 1 192.168.0."$1" > /dev/null ;
    then 
        printf "IP %s is up\n" 192.168.0."$1"
    fi
}

main(){

    NUM=1
    while [ $NUM -lt 255  ];do 
        pingf "$NUM" &
        NUM=$(expr "$NUM" + 1)
    done
    wait
}

main

それはどれくらいうまく機能しますか?悪くない、実際には、数秒かかります。

$ time ./ping_script.sh                                                                      
IP 192.168.0.1 is up
IP 192.168.0.101 is up
IP 192.168.0.27 is up
IP 192.168.0.29 is up
    0m02.50s real     0m00.01s user     0m00.12s system

心に留めておくべきこと

  • Windows(Windows 7以降、私は思う)はICMPエコー要求への応答をブロックし始めました。Ask Ubuntuやその他の種類のサイトで、「ちょっと、Linuxコンピューターはpingできますが、Windowsコンピューターはpingできません。どうしたの?」という質問がたくさんあります。新しいWindowsバージョンではICMPエコーへの応答を有効にする必要があるという事実に注意してください。

2
この種のソリューションが好きです
-Szenis

15

Netdiscoverがあなたの答えになります。

ターミナル経由でインストールするには:

sudo apt-get install netdiscover

使用例:

sudo netdiscover -r 192.168.1.0/24 -i wlan0

MACアドレスを持つIPが端末に表示されます。スクリーンショットを見る

ここに画像の説明を入力してください

あなたを助けることを願っています

参照


非常にバギーだが、最初に試す*** buffer overflow detected ***: netdiscover terminated
パブロA

このツールを使用しても、ネットワーク上でいくつかのものが見つかりません。
アンソニー

4

fpingICMPを介してネットワーク上の複数のホストをスキャンするための優れたツールです。インストールされていない場合は、次の方法でインストールできます。

sudo apt-get install fping

fping ICMP ECHO_REQUESTパケットを送信し、ホストからECHO_RESPONSEを取得した場合、ホストをUpとしてマークします。

たとえば、subnetのホストをスキャンするには192.168.1.0/24、次を実行できます。

fping -g 192.168.1.0/24

特定の数のホストの場合、たとえばfrom 192.168.1.15から192.168.1.140

fping -g 192.168.1.15 192.168.1.140

fping 高度に設定可能です。たとえば、送信されるパケットの数、応答を待つ時間、出力形式などです。

man fpingより多くのアイデアを得るためにチェックしてください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.