Comment trouver toutes les adresses IP utilisées sur un réseau

77

Dans mon travail, il y a beaucoup d’ordinateur et je veux faire une blague. Je peux fermer un ordinateur sur le réseau mais trouver des adresses IP est difficile pour moi.

Comment puis-je facilement trouver toutes les adresses IP en ligne de 192.168.1.aa à 192.168.1.zz?

    
posée Eric Carvalho 02.12.2012 - 12:35
la source

5 réponses

120

En général, nmap est très utile pour analyser rapidement les réseaux.

Pour installer nmap, entrez la commande suivante dans le terminal:

sudo apt-get install nmap

Une fois l’application installée, entrez la commande suivante:

nmap -sn 192.168.1.0/24

Cela vous montrera quels hôtes ont répondu aux requêtes ping sur le réseau entre 192.168.1.0 et 192.168.1.255.

Pour les anciennes versions de Nmap, utilisez -sP :

nmap -sP 192.168.1.0/24

Pour des références supplémentaires, consultez les pages suivantes:

Guide d’installation de NMAP

Guide de référence NMAP

C'est un outil très utile pour apprendre.

    
réponse donnée Kevin Bowen 02.12.2012 - 12:51
la source
35

Si tous les ordinateurs de votre réseau sont Ubuntu ou toute autre distribution utilisant avahi-daemon ( DNS-SD ), vous pouvez en obtenir une liste détaillée (avec nom d’hôte et adresse IP) en procédant comme suit:

avahi-browse -rt _workstation._tcp

Si vous souhaitez connaître toutes les adresses IP utilisées sur votre réseau, vous pouvez utiliser arp-scan :

sudo arp-scan 192.168.1.0/24

Comme il n’est pas installé par défaut, vous devrez l’installer avec sudo apt-get install arp-scan . arp-scan envoie des paquets ARP au réseau local et affiche les réponses reçues, il affiche donc même les hôtes avec pare-feu (qui bloquent le trafic en fonction des paquets IP).

    
réponse donnée Eric Carvalho 02.12.2012 - 16:07
la source
14

Netdiscover peut être votre réponse.

Pour installer via le terminal:

sudo apt-get install netdiscover

exemple d'utilisation:

sudo netdiscover -r 192.168.1.0/24 -i wlan0

Une adresse IP avec MAC Addreses apparaîtra sur votre terminal. Voir la capture d'écran

espère vous aider

référence

    
réponse donnée SP3B 03.08.2015 - 08:25
la source
13

Note au lecteur : la réponse originale a été publiée il y a quelque temps et à l'époque où j'apprenais uniquement les scripts shell. Voir la version revisitée ci-dessous pour un nouveau script amélioré qui fonctionne beaucoup plus rapidement.

Réponse originale

nmap serait mon choix # 1, mais que faire si vous ne l'avez pas? Le bricolage serait avec un script ping qui passe chaque adresse IP possible sur le réseau manuellement. Ce que nous avons ici, c'est juste while loop, où nous définissons le dernier numéro dans l'adresse, faisons un ping unique silencieux à l'adresse, vérifiez si la commande a réussi ou non (et si elle a réussi, alors déclaration% Rapide et sale, il m'a fallu environ 10 minutes pour l'écrire, mais le temps d'exécution pourrait être un peu lent, cependant.

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

Réponse révisée

A l'origine, j'avais posté cette réponse en août 2015. Depuis, j'ai appris un peu plus sur le script shell et une fois que j'ai vu ce script, j'ai pensé qu'il serait bon de revoir cette réponse pour en ajouter quelques-uns. améliorations. Voici quelques idées:

  • Le script est évidemment lent et printf attend la réponse de l'hôte. Par défaut, ping pour deux RTT, qui peut varier en fonction de la congestion de votre réseau, et pour autant que je sache, le protocole TCP double le temps d'attente (au moins, selon this ). Nous pourrions donc forcer ping à expirer avec le drapeau ping . Comme nous avons 256 adresses et que nous supposons 1 seconde pour chaque adresse, le script prendra environ 256/60 = 4,27 minutes.

  • Faire une commande puis capturer son état de sortie avec -w 1 n'était pas vraiment nécessaire. Le $? peut fonctionner directement sur les commandes. En d'autres termes, il suffit de faire ceci:

    if ping -w 1 -q -c 1 192.168.0.$NUM > /dev/null ;
    then
         <some other code here>
    fi
    
  • La commande if ... then;...fi peut être réécrite comme suit:

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

    Ceci est plus un changement de style, mais il est cohérent avec le fonctionnement de printf et ressemble à beaucoup d'autres langages, avec la mention printf variable. Citer ici n’est pas nécessaire - puisque nous ne traitons que des nombres, nous n’avons pas besoin d’anticiper le fractionnement des mots en raison de la présence d’espaces dans une variable.

  • Une amélioration des performances bien meilleure peut être obtenue en générant plusieurs processus d'arrière-plan. Le script édité ci-dessous fait exactement cela. Je mets les "$NUM" et ping dans une fonction, printf (oui, je ne connais pas le nom). Maintenant, il y a aussi une seule fonction pingf qui effectue le bouclage et l'appel de main .

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

main(){

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

main

Combien cela fonctionne-t-il? Pas mal, en fait, prend quelques secondes.

$ 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

Choses à garder à l’esprit

  • Windows (à partir de Windows 7, je pense) a commencé à bloquer la réponse aux requêtes d'écho ICMP. Il y a pas mal de questions à ce sujet sur Ask Ubuntu et d'autres sites du genre "Hey, mon ordinateur Linux peut être cinglé, mais pas ceux de Windows, qu'est-ce qui se passe?" Sachez simplement que pour les nouvelles versions de Windows, vous devez activer la réponse à l'écho ICMP.
réponse donnée Sergiy Kolodyazhnyy 03.08.2015 - 09:43
la source
4

fping est un excellent outil pour analyser plusieurs hôtes sur un réseau via ICMP. S'il n'est pas installé, vous pouvez l'installer par:

sudo apt-get install fping

fping envoie les paquets ICMP ECHO_REQUEST et marque un hôte comme Up s'il obtient ECHO_RESPONSE de l'hôte.

Par exemple, pour analyser les hôtes du sous-réseau 192.168.1.0/24 , vous pouvez le faire:

fping -g 192.168.1.0/24

Pour un nombre spécifique d'hôtes, par ex. de 192.168.1.15 à 192.168.1.140 :

fping -g 192.168.1.15 192.168.1.140

fping est hautement configurable, par ex. combien de paquets seront envoyés, le temps d'attente pour la réponse, le format de sortie, etc.

Vérifiez man fping pour avoir plus d’idées.

    
réponse donnée heemayl 21.02.2016 - 03:21
la source

Lire d'autres questions sur les étiquettes