Как получить список ip-адресов в локальной сети?
Подскажите, пожалуйста, как получить список ip-адресов всех хостов локальной сети (192.168.0.ххх)?
В сети на всех компьютерах есть либо windows, либо linux+samba, поэтому я пробовал nmblookup ‘*’. Но в список не попадает более трети хостов. Оказалось, что это нормальное поведение, потому что nmblookup долго ответа не ждет и многие просто не успевают ответить.
Можно ли надежно получить список всех хостов?
anonymous
16.11.06 18:08:21 MSK
Re: Как получить список ip-адресов в локальной сети?
nmap -sP -n 192.168.0.0/24
nmap -sP -n 192.168.0.0/24|grep «^Host»|cut -f 2 -d ‘ ‘
spirit ★★★★★
( 16.11.06 18:28:46 MSK )
Ответ на: Re: Как получить список ip-адресов в локальной сети? от spirit 16.11.06 18:28:46 MSK
Re: Как получить список ip-адресов в локальной сети?
Спасибо за помошь. Но nmap тоже не все выводит. У меня нашлось только 13 хостов, в то время как nmblookup нашел 15, а всего их 23.
Может быть можно timeout указать какой-нибудь?
$ nmap -sP -n 192.168.0.0/24|grep «^Host»|cut -f 2 -d ‘ ‘|wc 13 13 172 $ nmblookup ‘*’|grep «»|wc 15 30 288
anonymous
( 16.11.06 18:44:45 MSK )
Ответ на: Re: Как получить список ip-адресов в локальной сети? от anonymous 16.11.06 18:44:45 MSK
Re: Как получить список ip-адресов в локальной сети?
Сорри, форматирование подкачало:
$ nmap -sP -n 192.168.0.0/24|grep «^Host»|cut -f 2 -d ‘ ‘|wc
$ nmblookup ‘*’|grep «»|wc
anonymous
( 16.11.06 18:48:26 MSK )
Re: Как получить список ip-адресов в локальной сети?
myhand ★
( 16.11.06 19:56:41 MSK )
Re: Как получить список ip-адресов в локальной сети?
nmap -PR ‘192.168.0.*’
birdie ★★★★★
( 17.11.06 10:33:39 MSK )
Re: Как получить список ip-адресов в локальной сети?
#!/bin/sh NET=192.168.0 FIRST=1 LAST=254 for $HOST in `seq $FIRST $LAST` do ping -w3 -c2 $NET.$HOST >/dev/null && echo "$NET.$HOST" done
sdio ★★★★★
( 17.11.06 14:49:13 MSK )
Ответ на: Re: Как получить список ip-адресов в локальной сети? от sdio 17.11.06 14:49:13 MSK
Re: Как получить список ip-адресов в локальной сети?
ICMP — не выход. я например всегда запрещаю кернелу отвечать на реквесты.
может быть s/ping/arping/ попробовать?
isden ★★★★★
( 17.11.06 22:06:30 MSK )
Re: Как получить список ip-адресов в локальной сети?
anonymous
( 20.11.06 10:34:51 MSK )
Re: Как получить список ip-адресов в локальной сети?
Спасибо за ответы.
В итоге дошел до написания простого скрипта на питоне,
который параллельно запускает опрос всех возможных ip’шников.
В принципе, это то же самое, что и предложенный shell-скрипт:
def ping(ip):
alive=False
PORT = 139
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(4)
try:
exit=s.connect_ex((ip, PORT))
alive=(exit!=113) # 113 — No route to host
finally:
s.close()
return alive
def add_ip_to_list(ip,ips):
if (ping(ip)):
ips.append(ip)
def get_ips():
# Запускаем параллельно опрос всех хостов подсети и ждем 1 секунду
# Этого достаточно для соединения с живыми хостами
ips=[]
for i in range(1,255):
ip=’192.168.0.’+str(i)
thread.start_new_thread(add_ip_to_list, (ip,ips))
time.sleep(1)
return ips
Как узнать какие IP-адреса заняты в локальный сети
Узнать какие IP-адреса заняты в локальной сети на данный момент задача одновременно и простая и сложная.
Простота ее заключается в том, что есть как маленькие консольные утилиты, так и большие сетевые сканеры, которые позволяют найти все сетевые адреса в локальной сети. Запустил и есть данные.
А сложность в том, что все они показывают незанятые IP-адреса только на текущий момент времени. Запустил – увидел, обстановку. А часть компьютеров может быть просто отключена.
Есть несколько способов поиска IP-адресов в сети, но все их можно разделить на 2:
- графические;
- консольные инструменты.
Первые позволяют найти все используемые сетевые адреса с помощью удобного и привычного для windows-пользователя интерфейса.
Консольные же утилиты выбирают более опытные пользователи. К тому же консольные утилиты можно легко использовать в скриптах автоматизации, что делает их более универсальными инструментами.
Давайте начнем с графических.
Графические способы поиска всех занятых lP-адресов в локалке
Для Windows
Для операционной системы Windows есть очень много программ: начиная от маленьких сканеров как Advanced IP Scanner, до больших сетевых сканеров угроз безопасности таких как XSpider. Последний для нашей задачи хоть и подходит, но его функционал избыточен и сетевой сканер в нем – это малая и не основная часть.
Для простого поиска всех адресов в сети нужно использовать Advanced IP Scanner от компании Radmin. Это бесплатный инструмент, который Вам поможет в поиске используемых IP-адресов.
Вы также можете воспользоваться Angry IP Scanner Версия этой программы есть и для Linux и для Windows.
Есть еще много аналогов, к примеру LanScope, Network Scanner от LizardSystems и т.д.
Для Linux Mint, Ubuntu и Debian
Для Linux есть графический сканер Angry IP Scanner.
И еще есть Nmap с графической оболочкой Zenmap, о котором речь пойдет ниже.
Консольные утилиты
Многие почему-то предлагают использовать для поиска занятых IP-адресов в сети команду arp -a. Да, она показывает список адресов. Правда её результат вывода очень далек от реальной картины. Эта команда показывает содержимое ARP -таблицы вашего компьютера. Когда Вы взаимодействуете с любым компьютером в сети, операционная система запоминает его IP-адрес и заносит его специальную таблицу. Называется она ARP -таблица. Вызывая команду arp -a, Вы просите свою ОС показать содержимое этой таблицы. И больше ничего.
Пожалуй, есть только одна консольная утилита собирающая все IP-адреса в сети, на которую стоит обратить внимание – это Nmap. Это даже не утилита, а полноценный сетевой сканер, который может сравнится по возможностям с XSpider. Если Вы начинающий системный администратор, то стоит изучить Nmap, так как это один из самых главных инструментов для знакомства с новой сетью для любого айтишника. Также может использоваться в качестве инструмента сетевого мониторинга.
Nmap — это бесплатный сетевой сканер, версия которого есть как под Windows, так и под Linux. Изначально работа с nmap реализована в консоли, но разработчики подсуетились и сделали графический интерфейс – ZenMap (спасибо за подсказку GlooMLynX).
Установка Nmap
Для Linux Mint, Ubuntu и Debian можно установить nmap из официального репозитория:
apt install nmap
Для Windows можно загрузить дистрибутив с официального сайте Nmap — https://nmap.org
Как найти все IP-адреса с помощью Nmap?
Стоит оговорится сразу, что у этой программы множества ключей запуска, с которыми лучше ознакомится в MAN -документации или в help`е. Стоит сказать, что с ее помощью можно даже проверить вашу систему на ddos-атаку.
Для нашей задачи нужно узнать IP`ишник или подсеть из которой нам выдан IP-адрес. В Windows это можно сделать консольной командой ipconfig , а в Linux – ifconfig .
У нас в примере используем Ubuntu, поэтому команда такая:
ifconfig wlan0 Link encap: Ethernet HWaddr 0c:60:76:0a:4f:cd inet addr: *192.168.1.3* Bcast: 192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::e60:76ff:fe0a:4fcd/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:61131 errors:0 dropped:0 overruns:0 frame:0 TX packets:43224 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen: 1000 RX bytes:74308035 (74.3 MB) TX bytes:6574514 (6.5 MB)
Наш IP-адрес из вывода выше – 192.168.1.3, а подсеть соответственно — 192.168.1.0. Так как мы хотим просканировать всю нашу подсеть, будем использовать маску подсети 255.255.255.0. В сокращенном варианте это будет выглядеть так 192.168.1.0/24
Для поиска незанятых IP-адресов в сети, выполняем команду:
nmap -v -sP 192.168.1.3/24
Здесь можно указать как наш IP-адрес, так и адрес подсети. Это не важно.
Получаем список IP-адресов , которые используются в данный момент:
nmap -v -sP 192.168.1.3/24 Starting Nmap 5.21 ( https://nmap.org ) at 2011-06-27 20:22 OMSST Initiating Ping Scan at 20:22 Scanning 256 hosts [2 ports/host] Completed Ping Scan at 20:22, 2.93s elapsed (256 total hosts) Initiating Parallel DNS resolution of 256 hosts. at 20:22 Completed Parallel DNS resolution of 256 hosts. at 20:22, 0.00s elapsed Nmap scan report for 192.168.1.0 [host down] Nmap scan report for 192.168.1.1 Host is up (0.0032s latency). Nmap scan report for 192.168.1.2 [host down] Nmap scan report for 192.168.1.3 Host is up (0.00096s latency). Nmap scan report for 192.168.1.4 [host down] . Nmap scan report for 192.168.1.253 [host down]
Из этого видно, что заняты IP-адреса: 192.168.1.1 и наш 192.168.1.3
Круто, не правда ли.
Если нужно вывести только не занятые IP-адреса, то вот команда:
nmap -v -sP 192.168.1.3/24 | grep down Nmap scan report for 192.168.1.0 [host down] Nmap scan report for 192.168.1.4 [host down] Nmap scan report for 192.168.1.5 [host down] Nmap scan report for 192.168.1.6 [host down] Nmap scan report for 192.168.1.7 [host down] Nmap scan report for 192.168.1.8 [host down] Nmap scan report for 192.168.1.9 [host down] . Nmap scan report for 192.168.1.253 [host down]
Стоит понимать, что вывод этой команды показывает нам только включенные компьютеры сети. Чтобы получить реальную картину занятости IP-адресов, нужно выполнить такое сканирование несколько раз в течении рабочего дня.
Просмотр компьютеров в локальной сети из терминала Linux
Полный чайник в Linux. Как посмотреть из терминала все компьютеры, которые подключены к локальной сети ? Поясню подробней. Интернет-кабель у меня подключен к роутеру. От роутера идет несколько кабелей к компьютерам с Ubuntu. А теперь сам вопрос. Как мне с одного из этих компьютеров увидеть остальные компьютеры внутри сети роутера ?
Отслеживать
задан 5 июл 2016 в 11:46
7,688 17 17 золотых знаков 70 70 серебряных знаков 131 131 бронзовый знак
А с какой целью интересуетесь ? Т.е. что вы понимаете под «компьютером подключенным к локальной сети». Вам их ip/mac адресов достаточно или вы ждете чего то большего
5 июл 2016 в 11:50
связанный вопрос How to find all the used IP addresses on a network
4 авг 2017 в 6:12
5 ответов 5
Сортировка: Сброс на вариант по умолчанию
Не совсем понятно что имеется в виду, но предложу варианты (маску подставить по необходимости):
- nmap -sn 192.168.0.0/24 (при блокировке ICMP файрволом можно попробовать другие варианты, например, UDP: nmap -sn -PU 192.168.0.0/24 )
- echo 192.168.0.|xargs -n1 -P0 ping -c1|grep «bytes from» (это те, кто на пинг отвечает)
Отслеживать
ответ дан 5 июл 2016 в 11:58
9,066 13 13 серебряных знаков 26 26 бронзовых знаков
Уточнил свой вопрос.
5 июл 2016 в 12:16
Для начала убедитесь, что установлена samba. Если такой пакет присутствует и задана рабочая группа, выполните в консоли
nmblookup '*' smbtree -N
Отслеживать
ответ дан 5 июл 2016 в 11:50
3,625 1 1 золотой знак 17 17 серебряных знаков 35 35 бронзовых знаков
а как убедиться, что samba стоит на разыскиваемых компьютерах?
5 июл 2016 в 12:41
samba должна стоять на компьютере, с которого идет поиск. На разыскиваемых можно посмотреть, отктрыт ли порт 139 tcp.
5 июл 2016 в 12:53
но для того, чтобы «посмотреть», надо знать ip-адрес. получается рекурсия.
5 июл 2016 в 12:54
Сканируйте сеть, проверяйте открыт ли порт. Я привел в ответе вариант для обычной одноранговой сети. Должно работать как в windows (компьютеры сети)
5 июл 2016 в 12:56
Есть очень удобная утилитка fping http://fping.org/ Прямо-таки для этого создана. Можно nmap , но это будет гораздо медленнее.
Отслеживать
ответ дан 5 июл 2016 в 12:10
7,461 13 13 серебряных знаков 31 31 бронзовый знак
Добавлю ещё варианты.
$ avahi-browse -r -a
Как и nmblookup он требует, чтобы на компьютерах была установлена соответствующая служба, для linux это avahi-daemon . (С нашими тупыми провайдерами рекомендую всегда отключать проверку на использование домена .local: в /etc/default/avahi-daemon поставить AVAHI_DAEMON_DETECT_LOCAL=0 )
$ ping -b 255.255.255.255
Чтобы компьютер с linux отвечал на это, нужно сделать на нём:
# sysctl net.ipv4.icmp_echo_ignore_broadcasts=0
Некоторые маршрутизаторы это так же поддерживают.
Ну и более низкоуровневый и как мне кажется более надёжный для односегментной сети:
$ echo 192.168.2. | xargs -n1 -P0 arping -c 4 -f -I eth0 | grep "reply from"
Как узнать IP адрес, используя командную строку Linux
Раньше для просмотра текущих сетевых интерфейсов и их параметров (включая IP-адреса), использовалась команда ifconfig. Но она уже несколько лет как устарела, и в современных дистрибутивах Linux не поддерживается.
Вместо ifconfig рекомендуется использовать команду ip
Определяем IP-адрес командой ip
Чтобы определить IP-адрес вашего сетевого интерфейса можно использовать команду ip address (или эквивалентный вызов ip addr или просто ip a ).
ip address 1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp2s0: mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:24:1d:83:da:25 brd ff:ff:ff:ff:ff:ff inet 192.168.2.2/24 brd 192.168.2.255 scope global dynamic noprefixroute enp2s0 valid_lft 76434sec preferred_lft 76434sec inet6 fe80::1f6e:e0e4:27d1:e643/64 scope link noprefixroute valid_lft forever preferred_lft forever
В результате выполнения команды на экран будет выведен список текущих сетевых интерфейсов и их параметры. Первый интерфейс в списке обычно lo — это loopback интерфейс (нас он сейчас не интересует). Нас интересует Ethernet-интерфейс или WiFi-интерфейс (в зависимости от того, какое у вас подключение).
Ethernet интерфейсы обычно имеют имена вида enp2s0 или eth0, а WiFi-интерфейсы имеют имена вида wlp2s0 или wlan0 (цифры в названии могут отличаться).
Найдите интересующий вас интерфейс в списке. Его IP-адрес выводится на строке inet ..
В нашем примере это inet 192.168.2.2/24 . 192.168.2.2 — это IP-адрес. 24 — это маска подсети, соответствующая маске 255.255.255.0.
Определяем IP-адрес командой hostname
Воспользуемся командой hostname , чтобы вывести IP-адрес. Используем ключ -I
hostname -I
Команда выводит все сетевые адреса хоста (системы), кроме loopback интерфейса. Если у вас всего одно сетевое соединение, то, скорее всего, будет выведен один IP-адрес.
Через графическую утилиту
Хотя эта заметка рассматривает способы определения IP-адреса через командную строку, иногда проще посмотреть текущий IP-адрес через графические программы. В Ubuntu Linux это можно сделать в Параметрах системы в разделе Сеть .