#linux #android #сеть #arp
Два дня пытаюсь понять как заполнить arp cache? Мне нужно получить ip и mac адреса всех устройств в домашней сети для одного приложения под android. Порылся в разных ресурсах. Как я понял нужно сделать широковещательный запрос в подсеть и ждать. Ситуация такая: Я подключен через WiFi к сети домашнего маршрутизатора. ip адрес моего устройства 192.168.0.71, а широковещательный адрес 192.168.0.255, маска подсети 255.255.255.0(то есть 254 хостов может быть как я понял). Смотрю arp cache: arp -a Только адрес маршрутизатора 192.168.0.1, а в сети на самом деле как минимум 6 устройств. Делаю широковещательный пинг ping -c 1 -b 192.168.0.255 Пишет что 100% потеря пакетов, лол Вновь смотрю arp cache - ничего нового. Пытался под root и не под root. Есть ли какие нибудь другие пути получить ip и mac адреса в сети? Помогите плиз! По сетям не силен!
Ответы
Ответ 1
Либо ставить nmap на android, либо fping. В общем общая схема такая: пинговать каждый хост в подсети (вне зависимости от его доступности), а потом уже делать arp -a | grep Для nmap будет что-то типа: nmap -sP 192.168.0.* Для fping fping -g 192.168.0.0 192.168.0.255Ответ 2
Чтобы linux отвечал на широковещательный пинг, надо его включить (на каждом хосте): # echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts При чём -c1 приведёт к тому, что ping завершится после приёма первого пакета и не станет ждать других устройств. Лучше ограничить время 1 секундой: ping -w 1 -b 192.168.0.255 Сканировать подсеть перебором всех адресов можно так (под рутом результат лучше): # nmap -sP -n -T5 192.168.1.0/24
Комментариев нет:
Отправить комментарий