Как получить IP-адрес удаленного хоста от его адреса Ethernet? - PullRequest
3 голосов
/ 21 марта 2010

Я ищу код Linux, чтобы найти IP-адрес по адресу Ethernet. Я полагаю, мне нужно сделать обратный ARP-трюк, но я не могу найти никакого примера ...

Ответы [ 3 ]

3 голосов
/ 21 марта 2010

http://compnetworking.about.com/od/networkprotocolsip/f/convertipmacadd.htm

Попробуйте отправить IP-рассылку (например, ping 192.168.1.255, если ваша подсеть 192.168.1.0 / 24 ), чтобы заполнить кэш ARP, а затем arp -a, чтобы выплюнуть все это.

2 голосов
/ 21 марта 2010

Для компьютеров, с которыми вы общались, вы можете посмотреть их запись arp. Это доступно в текстовом формате, например, /proc/net/arp. Найти IP-адрес для MAC, который вы знаете, но с которым не общались, значительно сложнее. Наиболее близким совпадением по протоколу будет RARP, но он вряд ли когда-либо будет использоваться, поэтому вы вряд ли получите ответ.

Вы всегда можете сканировать свою локальную подсеть, чтобы убедиться, что вы получаете полное представление в своей таблице arp. См. Например fping для эффективного способа сделать это. Обратите внимание, что хостам на самом деле не нужно реагировать на пинги, о которых идет речь, чтобы они появились в таблице ARP, поэтому это полезно даже при наличии локальных брандмауэров и т. Д.

0 голосов
/ 04 апреля 2018

Взгляните на Томаса Хабета Арпинг . Я не пробовал, но основная идея - отправить сетевой пакет ICMP Ping на соответствующий MAC-адрес, используя IP-адрес назначения broadcast в заголовке IP. Только хост с указанным MAC-адресом будет отвечать, и ответ будет (обычно) содержать его IP-адрес. Это не всегда работает, но может быть достаточно для вас. См. Readme проекта для ограничений.

...