7

Моя домашняя сеть использует сеть 192.168.0.0 /24 для моих (в основном беспроводных) устройств. Во многих других сетях, которые я часто посещаю, я буду пинговать соответствующий широковещательный адрес, чтобы показать все текущие в настоящее время устройства в моих (Windows 7 x64) результатах arp -a . Проверка связи с широковещательным адресом сети помогает мне определить устройства, которые в данный момент обмениваются данными в той же сети.

В моей домашней сети я теряю 100% пакетов, отправленных на 192.168.0.255 . Таким образом, arp -a не показывает мне все устройства, которые работают в моей сети. Все устройства подключаются напрямую к моему маршрутизатору, а затем к моему провайдеру.

Почему я не могу пропинговать широковещательный адрес в этой сети? Вход в маршрутизатор напрямую для проверки таблицы клиентов DHCP неудобен.

Обновление: эти попытки ping сделаны с компьютера, напрямую подключенного к маршрутизатору через Ethernet. Я пытался выполнить те же попытки пинга с нескольких беспроводных устройств, но безрезультатно.

3 ответа3

9

Я думаю, что времена, когда операционные системы отвечали на широковещательные запросы, давно прошли. Насколько я знаю, каждая современная операционная система игнорирует эти запросы в качестве меры безопасности, чтобы избежать широковещательных штормов.

По умолчанию в Linux:

$ sysctl net.ipv4.icmp_echo_ignore_broadcasts
net.ipv4.icmp_echo_ignore_broadcasts = 1

Если вы хотите обнаружить машины, вам придется прибегнуть к одноадресной проверке связи (nmap, цикл проверки связи или другие средства), но обратите внимание, что могут быть машины, настроенные на постоянное игнорирование запросов проверки связи.

3

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

Подробнее о многоадресных адресах читайте по адресу: http://www.tldp.org/HOWTO/Multicast-HOWTO-2.html.

Другим вариантом будет просто одноадресная передача всех IP-адресов в вашем сегменте сети, что может быть легко достигнуто с помощью встроенных инструментов в большинстве систем. Я действительно знаю только GNU/Linux и MS Windows, поэтому могу привести только примеры для этих систем.

GNU/Linux

for lastoctet in $(seq 254); do ping -c 1 192.168.0.$lastoctet; done

MS Windows

for /l %i in (1,1,254) do ping -n 1 192.168.0.%i

Не так просто, как ping 192.168.0.255 но он работает в большинстве случаев.

0

Со ссылкой на то, что сказал # Хорхе Нерин:

Установите параметр игнорирования на 0. то есть;

$ sysctl net.ipv4.icmp_echo_ignore_broadcasts
net.ipv4.icmp_echo_ignore_broadcasts=0

Сделайте это с привилегиями root на всех устройствах в сети. Это позволит ответы на широковещательный пинг.

PS: это может создать угрозу безопасности.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .