112 votes

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

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

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

164voto

Kevin Bowen Points 18646

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, voir les pages suivantes :

Guide d'installation de NMAP

Guide de référence NMAP

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

43voto

Eric Carvalho Points 51571

Si tous les ordinateurs de votre réseau sont des Ubuntu ou toute autre distribution qui fait usage de avahi-daemon ( DNS-SD ), vous pouvez en obtenir une liste détaillée (avec le nom d'hôte et l'adresse IP) en faisant :

avahi-browse -rt _workstation._tcp

Si vous voulez connaître toutes les adresses IP utilisées dans 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, de sorte qu'il montre même les hôtes protégés par un pare-feu (qui bloquent le trafic sur la base des paquets IP).

19voto

Sergiy Kolodyazhnyy Points 97292

Note au lecteur : La réponse originale a été postée il y a un certain temps et à l'époque où je n'apprenais que le script Shell. Voir la version revisitée ci-dessous pour un nouveau et amélioré Shell qui s'exécute beaucoup plus rapidement.

Réponse originale

nmap serait mon premier choix, mais que faire si vous ne l'avez pas ? La méthode DIY serait avec un ping script qui passe par chaque adresse IP possible sur le réseau manuellement. Ce que nous avons ici est juste une boucle while, où nous définissons le dernier chiffre de l'adresse, faisons un ping silencieux à l'adresse, vérifions si la commande a réussi ou non (et si elle a réussi, alors l'hôte est manifestement en place), et printf déclaration. C'est une méthode simple et rapide, qui m'a pris environ 10 minutes pour l'écrire, mais l'exécution peut être un peu lente, 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

J'ai initialement publié cette réponse en août 2015. Depuis, j'ai appris un peu plus sur le Shell script, et j'ai une fois que j'ai vu ce Shell, j'ai pensé que ce serait une bonne idée de revisiter cette réponse pour ajouter quelques améliorations. Voici quelques idées :

  • Le script est évidemment lent et ping attend la réponse de l'hôte. Par défaut, ping pour deux RTT, ce qui peut varier en fonction de l'encombrement de votre réseau, et pour autant que je sache, le protocole TCP double le temps d'attente à chaque fois (du moins d'après l'étude de la Commission européenne). este ). On pourrait donc forcer ping pour sortir avec -w 1 drapeau. Comme nous avons 256 adresses et que nous supposons 1 seconde pour chaque adresse, le script prendra environ 256/60 = 4,27 minutes.

  • Exécuter une commande puis capturer son état de sortie avec $? n'était pas vraiment nécessaire. Le site if ... then;...fi peut agir directement sur les commandes. En d'autres termes, il suffit de le faire :

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

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

    Il s'agit plus d'un changement de style, mais il est cohérent avec la façon dont printf fonctionne et se présente comme dans beaucoup d'autres langues, avec des guillemets. "$NUM" variable. La citation n'est pas nécessaire ici - 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 plus importante peut être obtenue si nous créons plusieurs processus en arrière-plan. Le script modifié ci-dessous fait exactement cela. J'ai mis le ping et printf en une fonction, pingf (oui, nom ringard, je sais). Maintenant, il y a aussi un seul main qui effectue le bouclage et l'appel de 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

A quel point cela fonctionne-t-il mieux ? Pas mal, en fait, ça ne prend que 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

Les choses à garder à l'esprit

  • Windows (depuis Windows 7, je crois) a commencé à bloquer les réponses aux demandes 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 pingué, mais pas ceux de Windows, qu'est-ce qui se passe ?". Soyez juste conscient du fait que pour les nouvelles versions de Windows, vous devez activer la réponse à l'écho ICMP.

16voto

SP3B Points 161

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 des adresses MAC s'affichera sur votre terminal. Voir la capture d'écran

enter image description here

J'espère vous aider

référence

4voto

heemayl Points 85741

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

sudo apt-get install fping

fping envoie des 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 que vous pouvez faire :

fping -g 192.168.1.0/24

Pour un nombre spécifique d'hôtes, par exemple à partir de 192.168.1.15 a 192.168.1.140 :

fping -g 192.168.1.15 192.168.1.140

fping est hautement configurable, par exemple le nombre de paquets à envoyer, le temps d'attente de la réponse, le format de sortie, etc.

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X