Связь со всеми сетевыми компьютерами независимо от IP-адреса - PullRequest
2 голосов
/ 03 июня 2010

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

РАЗЪЯСНЕНИЕ : Мы хотим разобраться в ситуации, когда мы не знаем , каков IP-адрес одного компьютера, и не можем гарантировать, что он находится в какой-либо конкретной подсети. Все, что мы знаем, это то, что компьютер физически подключен к тому же коммутатору, и ему назначен статический IP-адрес (но этот IP-адрес может быть любым).

У нас есть удаленный доступ к одному компьютеру в сети (скажем, 192.168.1.30), и мы хотим иметь возможность общаться со всеми другими компьютерами в сети, независимо от того, установлен их статический IP-адрес 192.168.1. x, 10.0.0.x, 10.45.21.7 и т. д.)

Я понимаю, что это расплывчатое описание, и полное решение проблемы было бы длительным, поэтому я действительно ищу помощь в поиске правильного направления («Изучите использование классов XYZ и ABC таким образом») а не полная реализация.

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

РЕДАКТИРОВАТЬ : Если я что-то не так понял, я не думаю, что смогу использовать широковещательный адрес 255.255.255.255 для этого. проблема в том, что у мошеннического компьютера нет пути к исходному компьютеру, поэтому он отбросит пакет. Возможно, я что-то неправильно понял, но диаграмма ниже показывает мое понимание того, что произойдет.

image

Ответы [ 5 ]

2 голосов
/ 03 июня 2010

Можно просмотреть различные протоколы обнаружения , в частности, протокол обнаружения SNMP. Вы также можете сделать что-то простое, например прослушать UDP-трансляции и каждый компьютер, а затем ответить. Имейте в виду, что все эти решения могут создать дыры в безопасности, и ваши клиенты могут этого не оценить.

1 голос
/ 03 июня 2010

То, что вы хотите - это трансляция, вот статья об этом:

0 голосов
/ 03 июня 2010

Предполагается, что у вас есть испытательный стенд, который напоминает вашу фотографию

1 - On the 192.168.1.30 PC get a dos prompt
2 - Type  arp 10.0.0.47 <enter>
3 - Type  arp -a <enter>

Есть ли в 10.0.0.47 запись?

0 голосов
/ 03 июня 2010

По моему опыту, обычно есть три подхода.

Иметь заранее определенное количество IP-адресов, с которыми компьютер всегда будет пытаться связаться при подключении к сети (скажем, 192.168.x.250, 192.168.x.230 и т. Д.), И пусть этот компьютер будет прокси-сервером, с помощью которого вы сможете подключиться к любому другому компьютеру в сети. Указанное программное обеспечение будет работать как услуга, и каждые 5? минуты снова подключатся к серверу, чтобы подтвердить, что он все еще в сети.

Либо просто сканируйте каждый IP-адрес итеративно. Да, это требует времени, нет, это не «обременительно», так как мы говорим об аппаратном и программном обеспечении. Конечно, вы будете генерировать сетевой трафик. И совсем немного. Но так как вы знаете, каковы возможные диапазоны IP-адресов, вы можете сканировать их.

Третий транслируется, но немного по-другому.

Это обе техники грубой силы. Я бы начал там и уточнил по мере необходимости. Бритва Оккама и все такое. (Да, я понимаю, что это точно «множественность не должна быть задана без необходимости», но звучит более круто, если сказать «Бритву Оккама». Давайте попробуем Эйнштейна: «Сделайте все как можно проще, но не проще»?)

0 голосов
/ 03 июня 2010

Вы можете использовать многоадресные / широковещательные адреса для связи со всеми компьютерами вашей сети.

Вы можете обратиться к этой теме, чтобы узнать, как использовать эту технологию для приложения .NET:

Поддержка многоадресной рассылки в .Net

Основная концепция заключается в том, что ваши клиенты будут прослушивать этот многоадресный адрес и, когда они получат информацию (PING), они могут отправить ее обратно (PONG).

...