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

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

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

Обычно, 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

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

Если все компьютеры в вашей сети являются 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-пакетов).

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

Оригинальный Ответ

nmap это был бы мой выбор № 1, но что, если у вас его нет? Лучшим способом было бы использовать скрипт ping, который вручную просматривает каждый возможный ip-адрес в сети. То, что мы имеем здесь, - это просто цикл while, в котором мы устанавливаем последнее число в адресе, выполняем тихий одиночный пинг по адресу, проверяем, выполнена ли команда успешно или нет (и если она выполнена успешно, то хост, очевидно, включен), и printf заявление. Быстрый и грязный способ, мне потребовалось около 10 минут, чтобы написать его, но время выполнения может быть немного медленным.

#!/bin/sh# set -xNUM=1while [ $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 ;then     <some other code here>fi
  • То printf команда может быть переписана следующим образом:

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

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

  • Гораздо большего повышения производительности можно добиться, если запустить несколько фоновых процессов. Приведенная ниже правка скрипта делает именно это. Я положил ping и printf в функцию, pingf (да, банальное название, я знаю). Так вот, есть еще один сингл main функция, которая выполняет цикл и вызов pingf.

#!/bin/sh# Uncomment for debugging#set -xpingf(){    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 upIP 192.168.0.101 is upIP 192.168.0.27 is upIP 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 echo.

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

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

sudo apt-get install netdiscover

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

sudo netdiscover -r 192.168.1.0/24 -i wlan0

На вашем терминале появится IP-адрес с MAC-адресами. Смотрите скриншот

enter image description here

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

ссылка

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 чтобы получить больше идей.

попробуйте angry ip scanner

серьёзно? вам нужна наша помощь, чтобы разыграть ваших коллег?

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