Jochen Arndt
При использовании DHCP-сервера для сегмента сети он будет знать обо всех системах, которые действительно присутствуют или присутствовали некоторое время назад (он не будет проинформирован, когда клиент завершит работу).
Но у вас может быть только один DHCP-сервер. Если вы хотите узнать об IP-адресах, назначенных DHCP, вы должны добавить такую функциональность на сервер (например, реализовав метод запроса) или проверить файлы журналов, сгенерированные сервером.
В обычной сетевой настройке DHCP-сервер обычно работает на системе шлюза (маршрутизаторе) или другом локальном сервере. Тогда невозможно запросить его внутреннюю таблицу, которая содержит назначенные IP-адреса.
Не существует абсолютного метода relibale для получения IP-адресов всех систем в локальной сети. Одна из проблем заключается в том, что, когда какая-либо активность из системы была обнаружена, она могла быть отключена тем временем. Другая проблема-обнаружение всех систем.
Есть несколько методов, которые могут быть использованы:
ARP (Протокол Разрешения Адресов - Википедия[^]).
Вы можете использовать Арп утилита командной строки для отображения таблицы ARP (используйте arp -?
для просмотра доступных вариантов):
arp -a
или
arp -av
Последний также будет показывать старые (недействительные) IP-адреса. Функциональность может быть реализована приложениями путем чтения таблицы ARP с помощью функций API, WMI или синтаксического анализа выходных данных утилиты.
Проблемы:
Находит только те системы, которые связались с системой, выполняющей
Арп команда.
состояние сети
Это можно использовать для получения IP-адресов всех текущих подключений. Выходные данные должны быть отфильтрованы для локальных адресов. См.
Команда netstat[
^] утилита командной строки. Можно также использовать вызовы WMI или API для получения этой информации.
Проблемы:
Только активные соединения. Требуются системные привилегии для соединений, принадлежащих Системе или другим пользователям.
Сниффинг пакетов
Используйте анализатор пакетов для проверки всех пакетов в сетевом интерфейсе с использованием беспорядочного режима.
Проблемы:
Не будет видеть все пакеты при использовании сетевого коммутатора (пакеты в другие системы могут не передаваться на интерфейс коммутатором).
Сканирование портов
Попробуйте подключиться к определенным портам и / или пинговать по всем возможным IP-адресам.
Проблемы:
Не все системы могут отвечать (службы, работающие на используемых портах, не работают, запросы фильтруются).
DNS-запрос
Если у вас есть DNS-сервер, работающий для вашей локальной сети, вы можете запросить его для всех возможных IP-адресов. Это особенно полезно, когда DNS-сервер подается DHCP-сервером (как и в большинстве маршрутизаторов SOHO).
Проблемы:
Возвращает адреса для всех систем, даже для тех, которые не работают или больше не существуют.