it-swarm.com.de

So finden Sie alle verwendeten IP-Adressen in einem Netzwerk

In meiner Arbeit steckt viel Computer und ich möchte einen Witz machen. Ich kann den Computer über das Netzwerk schließen, aber es fällt mir schwer, IP-Adressen zu finden.

Wie kann ich einfach alle Online-IP-Adressen von 192.168.1.aa bis 192.168.1.zz finden?

90
user84277

Im Allgemeinen ist nmap sehr nützlich, um Netzwerke schnell zu scannen.

Geben Sie zum Installieren von nmap den folgenden Befehl in das Terminal ein:

Sudo apt-get install nmap

Geben Sie nach der Installation der Anwendung den folgenden Befehl ein:

nmap -sn 192.168.1.0/24

Hier sehen Sie, welche Hosts auf Ping-Anfragen im Netzwerk zwischen 192.168.1.0 und 192.168.1.255 geantwortet haben.


Verwenden Sie für ältere Versionen von Nmap -sP:

nmap -sP 192.168.1.0/24

Weitere Referenzen finden Sie auf den folgenden Seiten:

NMAP-Installationsanleitung

NMAP-Referenzhandbuch

Es ist ein sehr nützliches Werkzeug zum Lernen.

136
Kevin Bowen

Wenn es sich bei allen Computern in Ihrem Netzwerk um Ubuntu oder eine andere Distribution handelt, die avahi-daemon ( DNS-SD ) verwendet, können Sie eine detaillierte Liste dieser Computer (mit Hostname und IP-Adresse) abrufen. indem Sie:

avahi-browse -rt _workstation._tcp

Wenn Sie alle in Ihrem Netzwerk verwendeten IP-Adressen kennen möchten, können Sie arp-scan verwenden:

Sudo arp-scan 192.168.1.0/24

Da es nicht standardmäßig installiert ist, müssen Sie es mit Sudo apt-get install arp-scan installieren. arp-scan Sendet ARP-Pakete an das lokale Netzwerk und zeigt die empfangenen Antworten an, sodass auch Firewall-Hosts angezeigt werden (die Datenverkehr basierend auf IP-Paketen blockieren).

39
Eric Carvalho

Hinweis für den Leser : Die ursprüngliche Antwort wurde vor einiger Zeit und zu der Zeit, als ich nur Shell-Scripting lernte, veröffentlicht. In der überarbeiteten Version unten finden Sie ein neues und verbessertes Skript, das viel schneller ausgeführt wird.

Ursprüngliche Antwort

nmap wäre meine erste Wahl, aber was ist, wenn Sie es nicht haben? Der DIY-Weg wäre mit einem Ping-Skript, das jede mögliche IP-Adresse im Netzwerk manuell durchläuft. Was wir hier haben, ist nur eine while-Schleife, in der wir die letzte Nummer in der Adresse setzen, einen stillen einzelnen Ping an die Adresse senden, prüfen, ob der Befehl erfolgreich war oder nicht (und wenn dies erfolgreich war, dann ist Host offensichtlich aktiv) und printf Anweisung. Schnell und schmutzig, brauchte ungefähr 10 Minuten, um es zu schreiben, aber die Laufzeit ist möglicherweise etwas langsam.

#!/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

Überarbeitete Antwort

Ich habe diese Antwort ursprünglich im August 2015 gepostet. Seitdem habe ich etwas mehr über Shell-Skripte gelernt. Als ich dieses Skript sah, hielt ich es für eine gute Idee, diese Antwort zu überarbeiten, um einige Verbesserungen hinzuzufügen. Hier sind ein paar Ideen:

  • Das Skript ist offensichtlich langsam und ping wartet auf die Antwort vom Host. Standardmäßig verdoppelt ping für zwei RTT, die abhängig von der Auslastung Ihres Netzwerks variieren können, und soweit ich das TCP -Protokoll verstehe, die Wartezeit jedes Mal (mindestens entsprechend - this ). Also könnten wir ping mit -w 1 zum Timeout zwingen. Da wir 256 Adressen haben und für jede Adresse 1 Sekunde annehmen, dauert das Skript ungefähr 256/60 = 4,27 Minuten.

  • Einen Befehl auszuführen und dann seinen Exit-Status mit $? zu erfassen, war nicht wirklich notwendig. Der if ... then;...fi kann Befehle direkt verarbeiten. Mit anderen Worten, es reicht aus, dies zu tun:

    if ping -w 1 -q -c 1 192.168.0.$NUM > /dev/null ;
    then
         <some other code here>
    fi
    
  • Der Befehl printf kann folgendermaßen umgeschrieben werden:

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

    Dies ist eher eine stilistische Änderung, entspricht jedoch der Funktionsweise von printf und sieht in vielen anderen Sprachen mit der Angabe der Variablen "$NUM" aus. Das Zitieren hier ist nicht erforderlich - da es sich nur um Zahlen handelt, müssen wir nicht mit der Wortteilung rechnen, da Leerzeichen in einer Variablen vorhanden sind.

  • Eine viel bessere Leistungsverbesserung kann erreicht werden, wenn wir mehrere Hintergrundprozesse erzeugen. Die folgende Skriptbearbeitung erledigt genau das. Ich habe die ping und printf in eine Funktion gesetzt, pingf (ja, kitschiger Name, ich weiß). Jetzt gibt es auch eine einzige main -Funktion, die das Schleifen und Aufrufen von pingf ausführt.

#!/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

Wie viel besser funktioniert das? Eigentlich nicht schlecht, dauert nur ein paar Sekunden.

$ 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

Dinge zu beachten

  • Windows (seit Windows 7, glaube ich) hat begonnen, die Antwort auf ICMP-Echoanforderungen zu blockieren. Es gibt einige Fragen dazu auf Ask Ubuntu und anderen Sites der Art "Hey, mein Linux-Computer kann gepingt werden, aber nicht Windows, was ist damit los?" Beachten Sie jedoch, dass Sie für neuere Windows-Versionen die Antwort auf ICMP-Echo aktivieren müssen.
17

Netdiscover kann Ihre Antwort sein.

Installation über Terminal:

Sudo apt-get install netdiscover

beispielverwendung:

Sudo netdiscover -r 192.168.1.0/24 -i wlan0

Auf Ihrem Terminal wird eine IP mit MAC-Adressen angezeigt. Siehe den Screenshot

enter image description here

hoffe, dir zu helfen

Referenz

15
SP3B

fping ist ein großartiges Tool zum Scannen mehrerer Hosts in einem Netzwerk über ICMP. Wenn es nicht installiert ist, können Sie es folgendermaßen installieren:

Sudo apt-get install fping

fping sendet ICMP ECHO_REQUEST-Pakete und markiert einen Host als Up, wenn er ECHO_RESPONSE vom Host erhält.

Um beispielsweise die Hosts des Subnetzes 192.168.1.0/24 zu scannen, haben Sie folgende Möglichkeiten:

fping -g 192.168.1.0/24

Für eine bestimmte Anzahl von Hosts, z. von 192.168.1.15 bis 192.168.1.140:

fping -g 192.168.1.15 192.168.1.140

fping ist in hohem Maße konfigurierbar, z. Wie viele Pakete werden gesendet? Wartezeit auf Antwort? Ausgabeformat?.

Überprüfen Sie man fping, um weitere Informationen zu erhalten.

4
heemayl