Поиск mac-адреса на DHCP с помощью PowerShell
Добрый день! Уважаемые читатели IT блога Pyatilistnik.org. В прошлый раз мы с вами разобрались, как подключаться по RDP протоколу, сравнили разный софт под эти задачи. В сегодняшней публикации мы снова побудем системными администраторами и попробуем найти нужный MAC-адрес на DHCP сервере используя PowerShell запросы. Я покажу в каких ситуациях вам это может потребоваться и что может дать. Давайте приступать.
Постановка задачи
Очень часто перед системным администратором стоит задача в вычислении устройства по разным вводным, чаще всего это определить, кто использует определенный IP. Например, на Cisco преобразование mac-адреса в IP это базовая вещь, но в крупных компаниях чаще всего отдел отвечающий за сеть и отдел серверного обслуживания разнесены, и у администраторов не всегда даже может быть доступ на данное оборудование.
Если DHCP сервер развернут на базе Windows Server, то администратор может сам проводить нужные запросы. Предположим, что у пользователя заблокировалась учетная запись Active Directory, в событиях вы видите MAC-адрес, но не видите сразу IP. Сотрудник хэлпдеска придет к вам и попросит вас поискать нужное устройство, умея пользоваться PowerShell-ом вы легко с этим справитесь. Еще вы можете легко по части MAC-адреса посчитать, сколько устройств определенного вендора арендовало у вас адреса, так что навык полезный.
Как искать нужный MAC-адрес на DHCP сервере в PowerShell
В своем примере я буду искать mac-адреса для устройств HP Inc. Ранее я вам рассказывал, что вендоры оборудования уже давно между собой поделили диапазоны адресов. HP Inc имеет один из уникальных идентификаторов организации "f8:0d:ac".
Зная это, мы уже можем составлять запрос на PowerShell. Перейдите на сервер DHCP или на сервер, где установлен пакет RSAT с оснасткой DHCP, в противном случае при выполнении команды вы будите получать ошибку:
le, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and
try again.
At line:1 char:1
+ Get-DhcpServerv4Scope
+ ~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Get-DhcpServerv4Scope:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Правильным действием будет сразу найти в DNS список серверов, которые выступают в роли DHCP серверов, для этого выполните в PowerShell:
В моем примере их много, так что найдите нужные. Однако для дальнейшего использования в других командах вы можете сохранить имена возвращаемых серверов в переменной:
Как следует из названия, командлет возвращает список авторизованных DHCP-серверов, зарегистрированных в Active Directory. Это означает, что вы не найдете мошеннических DHCP-серверов, которые были подключены к сети без ведома IT-отдела, а это классическая ситуация, что разработчик принес свой роутер, чтобы WIFI себе раздать. Далее обращаться можно используя $dhcps.
Вот простая конструкция для поиска всех MAC-адресов, где присутствует "f8:0d:ac", запрос я делаю локально на DHCP сервере.
В результате я вижу информацию по всем областям аренды (Scope), что есть на DHCP сервере. Тут вы получите:
- IP-адреса
- ScopeId
- ScopeId - Это и есть MAC-адреса
- HostName - DNS имя устройства
- AddressState - Состояние
- LeaseExpiryTime - Время истечения аренды
Если делаете это с другого компьютера, то не забывайте в конструкцию указывать -ComputerName имя DHCP.
Чтобы найти конкретный MAC-адрес по всем областям, выполните:
Еще вариантом скрипта, может выступать вот такая конструкция. Тут мы в явном виде задаем необходимые нам DHCP серверы в текстовом файле, подгружаем его и делаем запрос.
$StartTime = (Get-Date)
Start-Sleep -Seconds 10
# Импортируем список серверов из файла
$servers = Get-Content "c:\Temp\servers.txt"
#
foreach ($server in $servers)
{
Get-DhcpServerv4Scope | Get-DhcpServerv4Lease | where {$_.ClientId -like “f8-0d-ac-**-**” } | FT -AutoSize
}
$EndTime = (Get-Date)
$TotalTime = $EndTime-$StartTime
$TotalTime.ToString()
Чтобы посмотреть все области и арендованные IP выполните:
На этом у меня все. Мы с вами разобрали, как искать нужные MAC-адреса на DHCP сервере, тем самым определяя, что за компьютер стоит за ним. С вами был Иван Сёмин, автор и создатель IT портала Pyatilistnik.org.