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

Поиск IP-адреса с MAC-адреса

У меня есть маршрутизатор в режиме моста, на котором установлен Openwrt, и я хочу найти IP-адреса устройств, подключенных к маршрутизатору. Поскольку маршрутизатор находится в режиме моста, я не могу найти IP-адрес из аренды DHCP, но я могу найти MAC-адреса подключенных устройств.

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

Итак, мой вопрос: как я могу программно найти IP-адрес устройства с Mac-адреса?

Установите nmap на ваш роутер OpenWRT:

opkg update;opkg install nmap

Сканировать всю сеть. Например, сеть: 203.120.12.0/24.

 nmap -v -sn 203.120.12.0/24 --open

Должно появиться что-то вроде этого:

Nmap scan report for 203.120.12.253
Host is up (0.00016s latency).
MAC Address: 04:18:D6:83:90:07 (Ubiquiti Networks)

Затем вы можете использовать команду grep для получения IP-адреса с MAC-адреса.

У @Nam Pham правильная идея, но вот как вы превратите его в сценарий bash, чтобы сделать это «программно»:

mac=your.mac.here

#Determine local ip address and use to get domain:
ip=`hostname -I | awk '{print $1}'`
domain=`echo $ip | sed 's/\.[^.]*$/.*/'`

nmap -sn $domain | grep $mac -B2 | head -n 1 | sed 's/.* //'

Один из способов узнать IP-адрес устройства - использовать анализатор протокола, например WireShark. Если вы захватываете достаточно трафика с сетевого интерфейса, вы должны увидеть некоторый широковещательный трафик, генерируемый практически каждым устройством в сети. Затем вы можете фильтровать пакеты с исходным MAC-адресом, соответствующим вашему маршрутизатору.

В wirehark этот фильтр будет eth.src == xx:xx:xx:xx:xx:xx

Преимущество этого метода в том, что он работает, даже если ваш маршрутизатор использует адрес вне вашей подсети.