Поиск mac-адреса на DHCP с помощью PowerShell

Обновлено 09.09.2022

Поиск 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, в противном случае при выполнении команды вы будите получать ошибку:

Get-DhcpServerv4Scope : The term 'Get-DhcpServerv4Scope' is not recognized as the name of a cmdlet, function, script fi
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

'et-DhcpServerv4Scope is not recognized as the name of a cmdlet

Правильным действием будет сразу найти в DNS список серверов, которые выступают в роли DHCP серверов, для этого выполните в PowerShell:

Get-DhcpServerInDC

Get-DhcpServerInDC

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

$dhcps = (Get-DhcpServerInDC).DnsName

Как следует из названия, командлет возвращает список авторизованных DHCP-серверов, зарегистрированных в Active Directory. Это означает, что вы не найдете мошеннических DHCP-серверов, которые были подключены к сети без ведома IT-отдела, а это классическая ситуация, что разработчик принес свой роутер, чтобы WIFI себе раздать. Далее обращаться можно используя $dhcps.

Get-DhcpServerv4Scope -ComputerName $dhcp

Вот простая конструкция для поиска всех MAC-адресов, где присутствует "f8:0d:ac", запрос я делаю локально на DHCP сервере.

Get-DhcpServerv4Scope | Get-DhcpServerv4Lease | where {$_.ClientId -like “f8-0d-ac-**-**” } | FT -AutoSize

В результате я вижу информацию по всем областям аренды (Scope), что есть на DHCP сервере. Тут вы получите:

  • IP-адреса
  • ScopeId
  • ScopeId - Это и есть MAC-адреса
  • HostName - DNS имя устройства
  • AddressState - Состояние
  • LeaseExpiryTime - Время истечения аренды

конструкция для поиска всех MAC-адресов

Если делаете это с другого компьютера, то не забывайте в конструкцию указывать -ComputerName имя DHCP.

Get-DhcpServerv4Scope -ComputerName dhcp01 | Get-DhcpServerv4Lease -ComputerName dhcp01 | where {$_.ClientId -like “f8-0d-ac-**-**” } | FT -AutoSize

Чтобы найти конкретный MAC-адрес по всем областям, выполните:

Get-DhcpServerv4Scope | Get-DhcpServerv4Lease -EA SilentlyContinue -ClientId f8-0d-ac-23-2c-2f

Поиск физического адреса в DHCP через PowerShell

Еще вариантом скрипта, может выступать вот такая конструкция. Тут мы в явном виде задаем необходимые нам 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 выполните:

Get-DhcpServerv4Scope | Get-DhcpServerv4Lease или Get-DhcpServerv4Scope -ComputerName dhcp01 | Get-DhcpServerv4Lease -ComputerName dhcp01

На этом у меня все. Мы с вами разобрали, как искать нужные MAC-адреса на DHCP сервере, тем самым определяя, что за компьютер стоит за ним. С вами был Иван Сёмин, автор и создатель IT портала Pyatilistnik.org.

Автор - Сёмин Иван

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *