@hax
junior developer

Как получить список IP адресов от DHCP сервера?

Мне нужно получить список локальных IP адресов, находящихся в моей сети. Имеется IP адрес DHCP, DNS серверов. Можно ли как-то средствами .NET от них получить список IP адресов, подключенных к ним?
  • Вопрос задан
  • 10371 просмотр
Решения вопроса 1
saboteur_kiev
@saboteur_kiev Куратор тега Программирование
software engineer
Никак.
DHCP сервер выдает клиенту инфу, которая касается именно этого клиента, а не всех остальных участниках сети.

Администратор может посмотреть информацию о текущих leases через DHCP админку, но leases это не список текущих IP, это список текущих leases. То есть клиент появился, запросил IP, поработал и отключился. IP все еще на нем "висит". Если подключится другой клиент, то освобожденный IP может быть выдан ему, в зависимости от expiration настроек. Но DHCP не обзванивает клиентов на тему "эй, ты онлайн или нет".
И для этого нужно иметь права админа этого DHCP.

Если вы админ - API доступен через тот же powershell - посмотрите Get-DHCPServerv4scope | Get-DHCPServerv4Lease.
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
@d-stream
Готовые решения - не подаю, но...
Предлагаю вначале забыть про программирование, C# и .NET и просто описать словами желаемое.

Минимальное - получив от DHCP адрес и маску - можно получить предположительный размер сети - возможные адреса.

К примеру DHCP выдал
IP 192.168.199.48
MASK 255.255.255.0
GW 192.168.199.1

тем самым можно предположить что речь идет о сети 192.168.199.0/24 с адресами от 192.168.199.1 до 192.168.199.254

НО: какой именно диапазон из этих адресов DHCP выдает - вопрос к его настройкам. Возможно его пул от 192.168.199.47 до 192.168.199.49 а возможно и 192.168.199.2 до 192.168.199.254

DNS - ну теоретически конечно клиенты могут регистрироваться в локальном DNS, а могут и нет....

p/s/ можно конечно попинав DHCP (на его уровне) перебирая адреса получить ответы типа "адрес занят", "адрес недопустим", "адрес выдан" и косвенно сделать выводы, что:
- такие-то адреса DHCP не выдает
- такие-то мы заняли (за это могут побить подсвечником)
- такие-то адреса были арендованы и возможно сейчас хост подключен, а может быть уже выключен...
Ответ написан
Комментировать
Маска - это ваша сеть. Если у Вас есть права на чтение DHCP - без каких-либо проблемм, Пош в помощь (Export-DhcpServer) - а т.к. пош нынче обращается напрямую к .NET, подобное и на нем можно реализовать без проблем.
Если прав на DHCP нет - то печалька, надо собирать велосипед. Можете использовать сканеры сети (типа пингования), но опять же - не факт, что на компе не задизейблин пинг.
Короче если прав на DHCP нет - гарантированно точные данные вы не получите. Плюс могут быть статические адреса с запрещенным echo reply на хосте - так и будут висеть камнем, фиг знает - работает там хост или нет, тем более если в днс запись будет.
Ответ написан
Комментировать
@kisaa
Комментировать
@TemperOK
Чем больше учишь, тем меньше знаешь.
а ARP таблица то чем плоха? Очистил, заполнил и готово.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы