Как найти все используемые IP-адреса в сети

В моей работе много компьютеров, и я хочу пошутить. Я могу закрыть компьютер по сети, но мне сложно найти IP-адреса.

Как я могу легко найти все онлайн-IP-адреса от 192.168.1.aa до 192.168.1.zz?

106
задан 2 December 2012 в 19:14

5 ответов

Обычно ] nmap очень полезен для быстрого сканирования сетей.

Чтобы установить nmap, введите в терминале следующую команду:

sudo apt-get install nmap

После установки приложения введите следующую команду:

nmap -sn 192.168.1.0/24

Это покажет вам, какой узлы отвечали на запросы ping в сети между 192.168.1.0 и 192.168.1.255.


Для более старых версий Nmap используйте -sP :

nmap -sP 192.168.1.0/24

Дополнительные ссылки см. на следующих страницах:

Руководство по установке NMAP

Справочное руководство NMAP

Это очень полезный инструмент для изучения.

155
ответ дан 2 December 2012 в 19:14

Netdiscover может быть вашим ответом.

Для установки через терминал:

sudo apt-get install netdiscover

пример использования:

sudo netdiscover -r 192.168.1.0/24 -i wlan0

IP-адрес с MAC-адресами будет отображаться на вашем терминале. Смотрите скриншот

enter image description here

надеюсь помочь вам

ссылка

16
ответ дан 2 December 2012 в 19:14

Если все компьютеры в вашей сети - это Ubuntu или любой другой дистрибутив, в котором используется avahi-daemon ( DNS-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-scan отправляет ARP-пакеты в локальную сеть и отображает полученные ответы, поэтому показывает даже узлы с брандмауэром (которые блокируют трафик на основе IP-пакетов).

42
ответ дан 2 December 2012 в 19:14

fping - отличный инструмент для сканирования нескольких хостов в сети через ICMP. Если он не установлен, вы можете установить его следующим образом:

sudo apt-get install fping

fping отправляет ICMP ECHO_REQUEST пакеты и помечает хост как Up, если он получает ECHO_RESPONSE от хоста.

Например, для сканирования хостов подсети 192.168.1.0/24 , вы можете сделать:

fping -g 192.168.1.0/24

Для определенного количества хостов, например от 192.168.1.15 до 192.168.1.140 :

fping -g 192.168.1.15 192.168.1.140

fping легко настраивается, например сколько пакетов будет отправлено, время ожидания ответа, формат вывода и т. д.

Проверьте man fping , чтобы получить более подробную информацию.

4
ответ дан 2 December 2012 в 19:14

Примечание для читателя : Оригинальный ответ был опубликован некоторое время назад и в то время, когда я был только изучение сценариев оболочки. См. Обновленную версию ниже, чтобы увидеть новый и улучшенный сценарий, который работает намного быстрее.

Исходный ответ

nmap был бы моим выбором №1, но что делать, если у вас его нет? Самостоятельный способ - это сценарий ping, который вручную перебирает все возможные IP-адреса в сети. У нас есть просто цикл while, в котором мы устанавливаем последнее число в адресе, выполняем тихий одиночный пинг для адреса, проверяем, выполнена ли команда успешно или нет (и если она была успешной, то хост, очевидно, работает) и printf оператор. Быстрый и грязный способ, у меня ушло около 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 года. С тех пор я немного узнал подробнее о сценариях оболочки, и как только я увидел этот сценарий, я подумал, что было бы неплохо вернуться к этому ответу, чтобы добавить несколько улучшений. Вот несколько идей:

  • Сценарий явно медленный, и ping ожидает ответа от хоста. По умолчанию ping для двух RTT, который может варьироваться в зависимости от того, насколько загружена ваша сеть, и, насколько я понимаю, протокол TCP удваивает время ожидания каждый раз (по крайней мере, согласно это ]). Таким образом, мы могли заставить 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;
    тогда
      <здесь другой код>
    фи
     
  • Команду printf можно переписать так:

     printf "IP% s открыт \ n" 192.168.0. "$ NUM"
     

    Это скорее стилистическое изменение, но оно согласуется с тем, как printf работает и выглядит во многих других языках, с заключением в кавычки переменной «$ NUM» . Цитирование здесь не обязательно - поскольку мы имеем дело только с числами, нам не нужно ожидать разбиения слов из-за наличия пробелов в переменной.

  • Намного лучшего повышения производительности можно достичь, если мы создадим несколько фоновых процессов . Редактирование скрипта ниже делает именно это. Я поместил ping и 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 может получать пинг, но не компьютеры с Windows, что с этим делать?» Просто имейте в виду, что для более новых версий Windows вам нужно включить ответ на эхо ICMP.
18
ответ дан 2 December 2012 в 19:14

Другие вопросы по тегам:

Похожие вопросы: