#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
Комментариев нет:
Отправить комментарий