Как узнать IP-адрес всех устройств в многосегментной сети?

Например, для 2-сегментной сети: 10.20.xx и 192.168.xx (255.255.255.0).

Как я могу найти IP-адрес всех устройств, которые поддерживают SNMP v1,v2,v3, используя C#?

Я попытался использовать пример обнаружения sharpsnmplib, но он может найти только устройства того сегмента, к которому подключен компьютер.

3 ответа

Попробуйте запросить коммутаторы (если это возможно) - знаете ли вы топологию сети? Не могли бы вы просто отправить несколько пингов (и вы в порядке, если некоторые устройства не отвечают)?

Вещание невозможно без маршрутизаторов управления вещанием. Система IP-маршрутизации предназначена для предотвращения передачи широковещательных сообщений в другие сетевые подсети. Необходимо вручную настроить сети для связи друг с другом в форме широковещательной передачи (см. http://en.wikipedia.org/wiki/Broadcast_address).

Одним из примеров того, где это ограничение существует и преодолевается, является протокол BACnet/IP. BACnet использует широковещательный запрос "Кто есть" для запроса подключенных устройств для передачи ответов "Я есть". Поскольку широковещательные сообщения не могут проходить через подсети, BACnet использует специальные маршрутизаторы, называемые BBMD (BACnet Broadcast Management Device). Чтобы прочитать об этом подробнее, перейдите по этой ссылке.

Трансляция работает только для 1 сегмента, если только у вас нет маршрутизаторов, передающих трансляцию.

Есть два обычно используемых подхода:

  1. Позвольте пользователю определить диапазон IP-адресов, а затем выполните SNMP GET для каждого адреса в этом диапазоне.
  2. Начните с кэша arp на вашем локальном компьютере, используйте SNMP для опроса каждого IP-адреса, найденного в кэше ARP, а затем посмотрите на таблицу ATB RFC-1213 (OID .1.3.6.1.2.1.3.1), чтобы найти еще не обнаруженные IP-адреса. Это должен обнаружить каждый активно взаимодействующий сетевой узел.

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

Другие вопросы по тегам