Пинг скрытых машин
Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
- рядовой
- Сообщения: 46
- Зарегистрирован: 2010-09-24 10:25:29
Пинг скрытых машин
Итак, есть сеть с сотней машин, у которой нет ни домена, ни даже DHCP. Грустно, правда? Но это не самое страшное. Самое страшное то, что на всех машинах стоят форточки...
Так вот, в связи с тем что здесь нету DHCP, со временем с айпишниками началась полная неразбериха, дошло до того что свободные айпишники попросту закончились, а в сети болтаются около полутора сотни неиспользуемых.
Эту проблему я решил исправить с помощью старой-доброй "Фри", задумал отсеять свободные адреса. Сразу родилась идея шелл-скрипта, который при запуске пинговал-бы все адреса (fping), и все неактивные адреса записывал-бы в файл, а при следующем запуске их пиноговал снова и отсеивал те, что онлайн сегодня. Так за неделю можно было-бы на 95% отсеять все пустующие адреса.
Вроди ничего сложного, верно? За пол часа можно скрипт набросать. Но прям в процессе планирования я наткнулся на проблему, которую не знаю как решить - в Windows 7 по умолчанию отключено сетевое обнаружение, при чем если оно отключено, то машину пропинговать невозможно. Пингуешь машину - нет ответа, ставишь фряхе её айпишник, а она ругается что мол адрес занят аппаратом с таким-то МАКом.
Короче говоря не знаю как правильно реализовать задумку. Думал сделать скрипт, с которым фряха блуждала-бы по сети, то есть ставила айпишник проверяемого адреса, и после чего делала-бы отчет свободен адрес или нет, но мне кажеться что это перебор, идея бредовая.
Кто что подскажет? Кстати, а как можно получить МАК удаленной машины?
Так вот, в связи с тем что здесь нету DHCP, со временем с айпишниками началась полная неразбериха, дошло до того что свободные айпишники попросту закончились, а в сети болтаются около полутора сотни неиспользуемых.
Эту проблему я решил исправить с помощью старой-доброй "Фри", задумал отсеять свободные адреса. Сразу родилась идея шелл-скрипта, который при запуске пинговал-бы все адреса (fping), и все неактивные адреса записывал-бы в файл, а при следующем запуске их пиноговал снова и отсеивал те, что онлайн сегодня. Так за неделю можно было-бы на 95% отсеять все пустующие адреса.
Вроди ничего сложного, верно? За пол часа можно скрипт набросать. Но прям в процессе планирования я наткнулся на проблему, которую не знаю как решить - в Windows 7 по умолчанию отключено сетевое обнаружение, при чем если оно отключено, то машину пропинговать невозможно. Пингуешь машину - нет ответа, ставишь фряхе её айпишник, а она ругается что мол адрес занят аппаратом с таким-то МАКом.
Короче говоря не знаю как правильно реализовать задумку. Думал сделать скрипт, с которым фряха блуждала-бы по сети, то есть ставила айпишник проверяемого адреса, и после чего делала-бы отчет свободен адрес или нет, но мне кажеться что это перебор, идея бредовая.
Кто что подскажет? Кстати, а как можно получить МАК удаленной машины?
Последний раз редактировалось f_andrey 2013-03-11 15:52:08, всего редактировалось 1 раз.
Причина: Автору. пожалуйста, выбирайте соответствующий раздел форума.
Причина: Автору. пожалуйста, выбирайте соответствующий раздел форума.
Услуги хостинговой компании Host-Food.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/
Тарифы на виртуальные сервера (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/
-
- лейтенант
- Сообщения: 662
- Зарегистрирован: 2011-04-25 11:40:35
- Контактная информация:
Re: Пинг скрытых машин
А как ведет себя nmap? И есть ли после попытки пинга мак-адрес в arp-таблице?
-
- лейтенант
- Сообщения: 661
- Зарегистрирован: 2008-12-18 16:29:43
- Откуда: Ukraine/Kiev
- Контактная информация:
Re: Пинг скрытых машин
если все в пределах одной сети, то посмотрите в сторону arping
Человеку свойственно ошибаться, но для нечеловеческих ляпов нужен компьютер.
- gumeniuc
- ст. сержант
- Сообщения: 343
- Зарегистрирован: 2009-11-08 15:46:05
- Откуда: md
- Контактная информация:
-
- рядовой
- Сообщения: 46
- Зарегистрирован: 2010-09-24 10:25:29
Re: Пинг скрытых машин
Об nmap почему-то не подумал. Сейчас буду эксперементировать, и смотреть что получиться.GhOsT_MZ писал(а):А как ведет себя nmap? И есть ли после попытки пинга мак-адрес в arp-таблице?
По поводу ARP - после стандартного пинга МАК в таблице появляется, но если использовать fping, то этого не происходит. Сначала тоже подумал о том чтобы дергать маки с ARP, но первый минус здесь в том что данные полученные не при запросе, а берутся с записанной ранее таблицы, а второй что в таблице могут быть не все адреса, а для получения всего комаплекта стандартным пингом пинговать их не лучшая затея.
Об arping раньше не слышал. Буду сейчас смотреть что это за зверь.rayder писал(а):если все в пределах одной сети, то посмотрите в сторону arping
Нет, немного не то. У него назначение немного другое.gumeniuc писал(а):arpwatch ?
Даже и представить не мог что подобный вопрос обычно возникает у начинающих.... по этой причине и разместил его в ветке, которая на мой взгляд была самой подходящей.f_andrey писал(а):Автору. пожалуйста, выбирайте соответствующий раздел форума.
-
- лейтенант
- Сообщения: 662
- Зарегистрирован: 2011-04-25 11:40:35
- Контактная информация:
Re: Пинг скрытых машин
Ну раз появляется, то отлично. nmap'ом сканируется вся подсеть, если он не находит ничего, то берем из ARP-таблицы.Jetro писал(а): Об nmap почему-то не подумал. Сейчас буду эксперементировать, и смотреть что получиться.
По поводу ARP - после стандартного пинга МАК в таблице появляется, но если использовать fping, то этого не происходит. Сначала тоже подумал о том чтобы дергать маки с 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
-
- лейтенант
- Сообщения: 662
- Зарегистрирован: 2011-04-25 11:40:35
- Контактная информация:
Re: Пинг скрытых машин
Не поверите, это на самом деле азы... Банально знание TCP/IP стека и модели OSI, что по сути азы сетей. Если это знать, то и проблем в принципе быть не может в этой ситуации)Jetro писал(а):Даже и представить не мог что подобный вопрос обычно возникает у начинающих.... по этой причине и разместил его в ветке, которая на мой взгляд была самой подходящей.
-
- сержант
- Сообщения: 217
- Зарегистрирован: 2009-12-22 10:48:41
- Откуда: from Ukraine
- Контактная информация:
Re: Пинг скрытых машин
Код: Выделить всё
arp -d -i Int0 -a
Пингуем всю сеть
Код: Выделить всё
arp -a
Выборка
Любите жизнь, ведь она все равно отымеет..так хоть по любви!
-
- рядовой
- Сообщения: 46
- Зарегистрирован: 2010-09-24 10:25:29
Re: Пинг скрытых машин
Имелась ввиду ARP-таблица, записи в которой существуют определенное время. То есть пока я захочу получить данные о каком-то адресе, записи о нем уже может и не быть в ARP, или вообще там никогда не было.GhOsT_MZ писал(а):А вот насчет "записанной ранее таблицы" немного не понял...
Все основано на том что мы знаем МАК удаленной машины. А если такой информации нет? У меня нет желания обходить овер 100 машин для того чтобы переписать МАКи . С тем успехом можно и адреса переписать, и не париться.GhOsT_MZ писал(а): Мы шлем ICMP-пакет удаленному узлу, если он в нашей подсети, то необходимо знать на какой MAC-адрес слать пакет. Для этого существует протокол ARP (address resolving protocol, както так). Мы формируем Ethernet-кадр (в нашем случае), который отправляется по широковещательному адресу (ff:ff:ff:ff:ff:ff), далее, всем хостам, в рамках шировещательного домена, приходит этот кадр, и если MAC-адрес в запросе соответствует MAC-адресу сетевой платы, на который пришел кадр, то отправляется ARP-ответ. Далее, это соответствие MAC-адрес <--> IP-адрес записывается в ARP-таблицу, где живет опроделенное время.
Банально знать азы TCP/IP стека - мало, нужно еще правильно реализовать решение задачи. Мало знать с чего торт спекли, его еще приготовить уметь нужно...GhOsT_MZ писал(а):Не поверите, это на самом деле азы... Банально знание TCP/IP стека и модели OSI, что по сути азы сетей. Если это знать, то и проблем в принципе быть не может в этой ситуации)
Ладно, не столь важно. Для начинающих так для начинающих, не мне судить.
-
- лейтенант
- Сообщения: 662
- Зарегистрирован: 2011-04-25 11:40:35
- Контактная информация:
Re: Пинг скрытых машин
Предлагаю изучить протокол ARP, он как раз выполняет эту функцию. Если в ARP-таблице нету записи соответствия IP <--> MAC, то посылается широковещательный кадр, на который приходит ответ, на основании которого и и заполняется ARP-таблица. Не надо обходить все рабочие станции, достаточно сделать пинг и сразу же посмотреть ARP-таблицу, если запись появилась, то узел включен, если нет - не включен. Все просто.Jetro писал(а):Имелась ввиду ARP-таблица, записи в которой существуют определенное время. То есть пока я захочу получить данные о каком-то адресе, записи о нем уже может и не быть в ARP, или вообще там никогда не было.GhOsT_MZ писал(а):А вот насчет "записанной ранее таблицы" немного не понял...
Все основано на том что мы знаем МАК удаленной машины. А если такой информации нет? У меня нет желания обходить овер 100 машин для того чтобы переписать МАКи . С тем успехом можно и адреса переписать, и не париться.GhOsT_MZ писал(а): Мы шлем ICMP-пакет удаленному узлу, если он в нашей подсети, то необходимо знать на какой MAC-адрес слать пакет. Для этого существует протокол ARP (address resolving protocol, както так). Мы формируем Ethernet-кадр (в нашем случае), который отправляется по широковещательному адресу (ff:ff:ff:ff:ff:ff), далее, всем хостам, в рамках шировещательного домена, приходит этот кадр, и если MAC-адрес в запросе соответствует MAC-адресу сетевой платы, на который пришел кадр, то отправляется ARP-ответ. Далее, это соответствие MAC-адрес <--> IP-адрес записывается в ARP-таблицу, где живет опроделенное время.
Банально знать азы TCP/IP стека - мало, нужно еще правильно реализовать решение задачи. Мало знать с чего торт спекли, его еще приготовить уметь нужно...GhOsT_MZ писал(а):Не поверите, это на самом деле азы... Банально знание TCP/IP стека и модели OSI, что по сути азы сетей. Если это знать, то и проблем в принципе быть не может в этой ситуации)
Ладно, не столь важно. Для начинающих так для начинающих, не мне судить.
PS: не знаю, но мне почемуто хватало теоретических знаний для решения этой задачи, так что имеет смысл изучить/вспомнить TCP/IP)
-
- лейтенант
- Сообщения: 661
- Зарегистрирован: 2008-12-18 16:29:43
- Откуда: Ukraine/Kiev
- Контактная информация:
Re: Пинг скрытых машин
а может таки попробуете arping? он именно так и работает, ну и на выходе соб-но покажет и ip и текущий мак. а дальше уже дело техники.
ну и ест-но почитать и вникнуть в работу протоколов.
ну и ест-но почитать и вникнуть в работу протоколов.
Человеку свойственно ошибаться, но для нечеловеческих ляпов нужен компьютер.
-
- лейтенант
- Сообщения: 662
- Зарегистрирован: 2011-04-25 11:40:35
- Контактная информация:
Re: Пинг скрытых машин
Код: Выделить всё
#!/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;
Код: Выделить всё
./ping.sh 192.168.1.1-254