Назад | Перейти на главную страницу

Linux: пинговать все хосты в подсети

Существует одна команда solaris для проверки связи со всеми хостами в подсети:

ping -s 255.255.255.255

Есть ли что-нибудь подобное в linux? Я намерен найти один MAC-адрес, как показано ниже, после проверки связи со всеми хостами:

arp -an | grep mac_address

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

$ ifconfig wlp4s0 | grep Bcast
      inet addr:192.168.199.47  Bcast:192.168.199.255  Mask:255.255.255.0

Для проверки связи из Linux требуется -b переключатель командной строки, который является своего рода мерой предосторожности команды.

Однако это не гарантирует, что вы соберете все MAC-адреса со всех устройств, подключенных к вашей подсети, поскольку именно это устройство фактически отвечает на запросы ICMP ECHO, отправленные на широковещательные адреса, даже если это было задумано иначе в ранние годы RFC TCP / IP (посмотрите, /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts установлен на 1).

Чтобы быть уверенным, что все адреса покрыты, пингуйте их индивидуально с помощью

$ for ip in 192.168.199.{1..254}; do ping -c1 ${ip} & done

Более или менее то же самое достигается, если вы используете специальный тип сканирования nmap с

$ sudo nmap -sn -PE -n 192.168.179.1-254

Это также мой рекомендуемый способ зондирования, поскольку вы можете точно настроить способ запроса у клиентов их MAC-адресов.

Все, что вы делаете, это проверяете широковещательный адрес. Версия ping для GNU / Linux требует, чтобы вы использовали -b переключатель

-b Разрешить пинговать широковещательный адрес

Похоже, что нет прямого эквивалента Solaris -s переключитесь либо (он только пингует каждую секунду и собирает статистику), но, возможно, он похоронен в Справочные страницы Linux- стоит прочитать (как и Солнечные ).

Я бы тоже не стал пинговать 255.255.255.255 (это может занять некоторое время), я бы использовал широковещательный адрес сети, к которой я был подключен.

Пытаться

ping -b 10.0.0.255

где ifconfig показывает широковещательный адрес 10.0.0.255