Пинг скрытых машин

Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок

Модераторы: vadim64, terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Jetro
рядовой
Сообщения: 46
Зарегистрирован: 2010-09-24 10:25:29

Пинг скрытых машин

Непрочитанное сообщение Jetro » 2013-03-11 14:58:57

Итак, есть сеть с сотней машин, у которой нет ни домена, ни даже DHCP. Грустно, правда? Но это не самое страшное. Самое страшное то, что на всех машинах стоят форточки...
Так вот, в связи с тем что здесь нету DHCP, со временем с айпишниками началась полная неразбериха, дошло до того что свободные айпишники попросту закончились, а в сети болтаются около полутора сотни неиспользуемых.
Эту проблему я решил исправить с помощью старой-доброй "Фри", задумал отсеять свободные адреса. Сразу родилась идея шелл-скрипта, который при запуске пинговал-бы все адреса (fping), и все неактивные адреса записывал-бы в файл, а при следующем запуске их пиноговал снова и отсеивал те, что онлайн сегодня. Так за неделю можно было-бы на 95% отсеять все пустующие адреса.
Вроди ничего сложного, верно? За пол часа можно скрипт набросать. Но прям в процессе планирования я наткнулся на проблему, которую не знаю как решить - в Windows 7 по умолчанию отключено сетевое обнаружение, при чем если оно отключено, то машину пропинговать невозможно. Пингуешь машину - нет ответа, ставишь фряхе её айпишник, а она ругается что мол адрес занят аппаратом с таким-то МАКом.
Короче говоря не знаю как правильно реализовать задумку. Думал сделать скрипт, с которым фряха блуждала-бы по сети, то есть ставила айпишник проверяемого адреса, и после чего делала-бы отчет свободен адрес или нет, но мне кажеться что это перебор, идея бредовая.
Кто что подскажет? Кстати, а как можно получить МАК удаленной машины?
Последний раз редактировалось f_andrey 2013-03-11 15:52:08, всего редактировалось 1 раз.
Причина: Автору. пожалуйста, выбирайте соответствующий раздел форума.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

GhOsT_MZ
лейтенант
Сообщения: 662
Зарегистрирован: 2011-04-25 11:40:35
Контактная информация:

Re: Пинг скрытых машин

Непрочитанное сообщение GhOsT_MZ » 2013-03-11 15:44:55

А как ведет себя nmap? И есть ли после попытки пинга мак-адрес в arp-таблице?

rayder
лейтенант
Сообщения: 661
Зарегистрирован: 2008-12-18 16:29:43
Откуда: Ukraine/Kiev
Контактная информация:

Re: Пинг скрытых машин

Непрочитанное сообщение rayder » 2013-03-11 17:04:18

если все в пределах одной сети, то посмотрите в сторону arping
Человеку свойственно ошибаться, но для нечеловеческих ляпов нужен компьютер.

Аватара пользователя
gumeniuc
ст. сержант
Сообщения: 343
Зарегистрирован: 2009-11-08 15:46:05
Откуда: md
Контактная информация:

Re: Пинг скрытых машин

Непрочитанное сообщение gumeniuc » 2013-03-11 17:32:42

arpwatch ?
Да шо ему сделается...

Jetro
рядовой
Сообщения: 46
Зарегистрирован: 2010-09-24 10:25:29

Re: Пинг скрытых машин

Непрочитанное сообщение Jetro » 2013-03-11 17:51:40

GhOsT_MZ писал(а):А как ведет себя nmap? И есть ли после попытки пинга мак-адрес в arp-таблице?
Об nmap почему-то не подумал. Сейчас буду эксперементировать, и смотреть что получиться.
По поводу ARP - после стандартного пинга МАК в таблице появляется, но если использовать fping, то этого не происходит. Сначала тоже подумал о том чтобы дергать маки с ARP, но первый минус здесь в том что данные полученные не при запросе, а берутся с записанной ранее таблицы, а второй что в таблице могут быть не все адреса, а для получения всего комаплекта стандартным пингом пинговать их не лучшая затея.
rayder писал(а):если все в пределах одной сети, то посмотрите в сторону arping
Об arping раньше не слышал. Буду сейчас смотреть что это за зверь.
gumeniuc писал(а):arpwatch ?
Нет, немного не то. У него назначение немного другое.
f_andrey писал(а):Автору. пожалуйста, выбирайте соответствующий раздел форума.
Даже и представить не мог что подобный вопрос обычно возникает у начинающих.... по этой причине и разместил его в ветке, которая на мой взгляд была самой подходящей.

GhOsT_MZ
лейтенант
Сообщения: 662
Зарегистрирован: 2011-04-25 11:40:35
Контактная информация:

Re: Пинг скрытых машин

Непрочитанное сообщение GhOsT_MZ » 2013-03-11 18:29:53

Jetro писал(а): Об nmap почему-то не подумал. Сейчас буду эксперементировать, и смотреть что получиться.
По поводу ARP - после стандартного пинга МАК в таблице появляется, но если использовать fping, то этого не происходит. Сначала тоже подумал о том чтобы дергать маки с ARP, но первый минус здесь в том что данные полученные не при запросе, а берутся с записанной ранее таблицы, а второй что в таблице могут быть не все адреса, а для получения всего комаплекта стандартным пингом пинговать их не лучшая затея.
Ну раз появляется, то отлично. nmap'ом сканируется вся подсеть, если он не находит ничего, то берем из ARP-таблицы.
А вот насчет "записанной ранее таблицы" немного не понял...
Как вообще это все должно работать. Мы шлем ICMP-пакет удаленному узлу, если он в нашей подсети, то необходимо знать на какой MAC-адрес слать пакет. Для этого существует протокол ARP (address resolving protocol, както так). Мы формируем Ethernet-кадр (в нашем случае), который отправляется по широковещательному адресу (ff:ff:ff:ff:ff:ff), далее, всем хостам, в рамках шировещательного домена, приходит этот кадр, и если MAC-адрес в запросе соответствует MAC-адресу сетевой платы, на который пришел кадр, то отправляется ARP-ответ. Далее, это соответствие MAC-адрес <--> IP-адрес записывается в ARP-таблицу, где живет опроделенное время (думаю, тут все зависит от реализации TCP/IP стэка конкретно взятой ОС).
Подводя итог. Если протокол ARP не блокируется на узле, то абсолютно плевать, как мы будем сканировать сеть, будь то просто пинги, а будь то стуки на какие-то TCP/UDP-порты, и более того, нам плевать на блокировку любых протоколо уровня 3+, пусть хоть входящие с сети 0.0.0.0/0 блокируют, побоку. И более того, данная информация будет наиболее достоверной, так как она находится ниже уровнем, нежели IP, а уж тем более UDP/TCP.
Кстати, если в сети много узлов, то советую сканировать частями. Просканировали 32 адреса (маска /27), сделали:
arp -a > c:\arp.1.txt
, для винды, или:

Код: Выделить всё

arp > ./arp.1.txt
, для unix-like.

GhOsT_MZ
лейтенант
Сообщения: 662
Зарегистрирован: 2011-04-25 11:40:35
Контактная информация:

Re: Пинг скрытых машин

Непрочитанное сообщение GhOsT_MZ » 2013-03-11 18:32:16

Jetro писал(а):Даже и представить не мог что подобный вопрос обычно возникает у начинающих.... по этой причине и разместил его в ветке, которая на мой взгляд была самой подходящей.
Не поверите, это на самом деле азы... Банально знание TCP/IP стека и модели OSI, что по сути азы сетей. Если это знать, то и проблем в принципе быть не может в этой ситуации)

werder31
сержант
Сообщения: 217
Зарегистрирован: 2009-12-22 10:48:41
Откуда: from Ukraine
Контактная информация:

Re: Пинг скрытых машин

Непрочитанное сообщение werder31 » 2013-03-11 19:08:50

Код: Выделить всё

arp -d -i Int0 -a
удаляем все записи на интерфейсе

Пингуем всю сеть
смотрим таблицу

Выборка
Любите жизнь, ведь она все равно отымеет..так хоть по любви!

Jetro
рядовой
Сообщения: 46
Зарегистрирован: 2010-09-24 10:25:29

Re: Пинг скрытых машин

Непрочитанное сообщение Jetro » 2013-03-11 19:15:05

GhOsT_MZ писал(а):А вот насчет "записанной ранее таблицы" немного не понял...
Имелась ввиду ARP-таблица, записи в которой существуют определенное время. То есть пока я захочу получить данные о каком-то адресе, записи о нем уже может и не быть в ARP, или вообще там никогда не было.
GhOsT_MZ писал(а): Мы шлем ICMP-пакет удаленному узлу, если он в нашей подсети, то необходимо знать на какой MAC-адрес слать пакет. Для этого существует протокол ARP (address resolving protocol, както так). Мы формируем Ethernet-кадр (в нашем случае), который отправляется по широковещательному адресу (ff:ff:ff:ff:ff:ff), далее, всем хостам, в рамках шировещательного домена, приходит этот кадр, и если MAC-адрес в запросе соответствует MAC-адресу сетевой платы, на который пришел кадр, то отправляется ARP-ответ. Далее, это соответствие MAC-адрес <--> IP-адрес записывается в ARP-таблицу, где живет опроделенное время.
Все основано на том что мы знаем МАК удаленной машины. А если такой информации нет? У меня нет желания обходить овер 100 машин для того чтобы переписать МАКи . С тем успехом можно и адреса переписать, и не париться.
GhOsT_MZ писал(а):Не поверите, это на самом деле азы... Банально знание TCP/IP стека и модели OSI, что по сути азы сетей. Если это знать, то и проблем в принципе быть не может в этой ситуации)
Банально знать азы TCP/IP стека - мало, нужно еще правильно реализовать решение задачи. Мало знать с чего торт спекли, его еще приготовить уметь нужно...
Ладно, не столь важно. Для начинающих так для начинающих, не мне судить.

GhOsT_MZ
лейтенант
Сообщения: 662
Зарегистрирован: 2011-04-25 11:40:35
Контактная информация:

Re: Пинг скрытых машин

Непрочитанное сообщение GhOsT_MZ » 2013-03-11 19:20:58

Jetro писал(а):
GhOsT_MZ писал(а):А вот насчет "записанной ранее таблицы" немного не понял...
Имелась ввиду ARP-таблица, записи в которой существуют определенное время. То есть пока я захочу получить данные о каком-то адресе, записи о нем уже может и не быть в ARP, или вообще там никогда не было.
GhOsT_MZ писал(а): Мы шлем ICMP-пакет удаленному узлу, если он в нашей подсети, то необходимо знать на какой MAC-адрес слать пакет. Для этого существует протокол ARP (address resolving protocol, както так). Мы формируем Ethernet-кадр (в нашем случае), который отправляется по широковещательному адресу (ff:ff:ff:ff:ff:ff), далее, всем хостам, в рамках шировещательного домена, приходит этот кадр, и если MAC-адрес в запросе соответствует MAC-адресу сетевой платы, на который пришел кадр, то отправляется ARP-ответ. Далее, это соответствие MAC-адрес <--> IP-адрес записывается в ARP-таблицу, где живет опроделенное время.
Все основано на том что мы знаем МАК удаленной машины. А если такой информации нет? У меня нет желания обходить овер 100 машин для того чтобы переписать МАКи . С тем успехом можно и адреса переписать, и не париться.
GhOsT_MZ писал(а):Не поверите, это на самом деле азы... Банально знание TCP/IP стека и модели OSI, что по сути азы сетей. Если это знать, то и проблем в принципе быть не может в этой ситуации)
Банально знать азы TCP/IP стека - мало, нужно еще правильно реализовать решение задачи. Мало знать с чего торт спекли, его еще приготовить уметь нужно...
Ладно, не столь важно. Для начинающих так для начинающих, не мне судить.
Предлагаю изучить протокол ARP, он как раз выполняет эту функцию. Если в ARP-таблице нету записи соответствия IP <--> MAC, то посылается широковещательный кадр, на который приходит ответ, на основании которого и и заполняется ARP-таблица. Не надо обходить все рабочие станции, достаточно сделать пинг и сразу же посмотреть ARP-таблицу, если запись появилась, то узел включен, если нет - не включен. Все просто.

PS: не знаю, но мне почемуто хватало теоретических знаний для решения этой задачи, так что имеет смысл изучить/вспомнить TCP/IP)

rayder
лейтенант
Сообщения: 661
Зарегистрирован: 2008-12-18 16:29:43
Откуда: Ukraine/Kiev
Контактная информация:

Re: Пинг скрытых машин

Непрочитанное сообщение rayder » 2013-03-11 22:17:12

а может таки попробуете arping? он именно так и работает, ну и на выходе соб-но покажет и ip и текущий мак. а дальше уже дело техники.
ну и ест-но почитать и вникнуть в работу протоколов.
Человеку свойственно ошибаться, но для нечеловеческих ляпов нужен компьютер.

GhOsT_MZ
лейтенант
Сообщения: 662
Зарегистрирован: 2011-04-25 11:40:35
Контактная информация:

Re: Пинг скрытых машин

Непрочитанное сообщение GhOsT_MZ » 2013-03-11 22:21:09

Код: Выделить всё

#!/bin/sh

OUT="/tmp/ping.txt"

NET=`echo $1 | sed -r 's/^([0-9]{1,3})(\.{1,10})([0-9]{1,3})(\.{1,10})([0-9]{1,3})(\.{1,10})([0-9]{1,3})(-)([0-9]{1,3})/\1.\3.\5./'`;
START=`echo $1 | sed -r 's/^(.*\.)([0-9]{1,3})(-)([0-9]{1,3})/\2/'`;
END=`echo $1 | sed -r 's/^(.*\.)([0-9]{1,3})(-)([0-9]{1,3})/\4/'`;

i=${START};
/bin/echo -n > "${OUT}";
while [ $i -le $END ];
do
        echo "${NET}${i} processing..."
        /bin/ping -W 1 -c 1 `echo ${NET}${i} | sed -r 's/^([0-9]{1,3})(\.{1,10})([0-9]{1,3})(\.{1,10})([0-9]{1,3})(\.{1,10})([0-9]{1,3})/\1.\3.\5.\7/'` > /dev/null;
        /usr/sbin/arp | /bin/grep -e "^${NET}${i}[[:space:]]*ether*" | /usr/bin/awk '{print $1}' >> "${OUT}";
        i=$(($i + 1));
done;

/bin/cat "${OUT}";

exit 0;
Вот unix-like вариант решения проблемы, без постороннего софта. Использование (просканирует 192.168.1.1-192.168.1.254, а потом выведет включенные хосты, и ему побоку на блокировку пинга, главное ARP):

Код: Выделить всё

./ping.sh 192.168.1.1-254