Найти IP-адрес подключенного устройства - PullRequest
15 голосов
/ 25 мая 2011

Есть ли способ узнать IP-адрес устройства, которое напрямую подключено к определенному интерфейсу Ethernet? То есть для одного хоста, одного проводного соединения Ethernet и одного второго хоста, подключенного к этому проводному соединению, какой уровень или протокол ниже IP может быть использован для выяснения этого.

Мне было бы удобно использовать решение только для Windows, использующее некоторые функции Windows-API или функцию обратного вызова.

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

Ответы [ 5 ]

15 голосов
/ 13 ноября 2011

Ммм ... есть много способов.Я отвечаю на другой вопрос об обнаружении сети и пишу немного начало работы .

Некоторые стеки tcpip отвечают на трансляции icmp.Таким образом, вы можете попробовать PING на ваш сетевой широковещательный адрес.

Например, у вас есть ip 192.168.1.1 и подсеть 255.255.255.0

  1. ping 192.168.1.255
  2. остановить пинг через 5 секунд
  3. посмотреть ответы устройств: arp -a

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

Примечание (2): теперь я нахожусь на linux.Я не уверен, но это может быть Windows не отвечает на icm_get через трансляцию.

Это единственное устройство, подключенное к вашему компьютеру?Это роутер или другой простой компьютер?

8 голосов
/ 31 мая 2011

Чтобы использовать DHCP, вам нужно запустить DHCP-сервер на первичном сервере и клиент на вторичном; Первичный сервер может затем запросить сервер, чтобы узнать, какой адрес он раздал. Вероятно, перебор.

Я не могу помочь вам с Windows напрямую. В Unix команда «arp» сообщит вам, какие IP-адреса, как известно, подключены к локальному сегменту Ethernet. В Windows будет та же самая информация (поскольку она является основной частью интерфейса IP / Ethernet), но я не знаю, как вы к ней относитесь.

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

5 голосов
/ 29 марта 2016

Наилучшим подходом является установка Wireshark, перезагрузка устройства, ожидание потока TCP / UDP, трансляции объявят IP-адрес для обоих портов Ethernet. Это особенно полезно, когда на подключенном устройстве не включен DHCP-клиент, затем вы можетеиди оттуда.

2 голосов
/ 13 ноября 2016

Вы также можете получить информацию от напрямую подключенных сетевых устройств, таких как сетевые коммутаторы с LDWin, портативной и бесплатной программой Windows, опубликованной на github:

http://www.sysadmit.com/2016/11/windows-como-saber-la-ip-del-switch-al-que-estoy-conectado.html

LDWin поддерживает следующие методы обнаружения канала: CDP (протокол обнаружения Cisco) и LLDP (протокол обнаружения уровня канала).

Вы можете получить модель, IP-адрес управления, идентификатор VLAN, идентификатор порта, версию прошивки и т. Д.

1 голос
/ 03 декабря 2017

В Windows 7 есть команда arp.arp -a должен показать вам интерфейсы статического и динамического типа, подключенные к вашей системе.

...