В RSAT для Windows 10 отсутствует привычная консоль управления DHCP сервером (Dhcpmgmt.msc), а вместо нее предлагается использовать эквивалентные команды Powershell. Тем самым нас аккуратно подводят к мысли, что, скорее всего, и в грядущем релизе Windows Server 2016 конфигурация DHCP сервера будет осуществляться только из командной строки PowerShell. В этой статье мы познакомимся с основными командами PowerShell в Windows Server 2012 R2, необходимых для настройки и управления DHCP сервером.
Для возможности управления DHCP сервером нам понадобится загрузить модуль PoSh DHCPServer. По-умолчанию этот модуль в PowerShell не загружен. В том случае, если конфигурирование выполняется непосредственно с DHCP сервера, установить роль DHCP со средствами управления нужно так:
Add-WindowsFeature -Name DHCP –IncludeManagementTools
Если подразумевается управление удаленным DHCP сервером, нужно установить соответствующий компонент RSAT:
Add-WindowsFeature RSAT-DHCP
Перед использованием, нужно импортировать DHCP модуль в сессию:
Import-Module DHCPServer
Посмотрим, сколько командлетов доступно в рамках этого модуля:
(Get-Command -Module DHCPServer).count
Целых 121! Данные командлеты могут быть использования для управления DHCP серверами на Windows Server 2008 /R2 и Windows Server 2012 / R2.
Выведем список авторизованных DHCP серверов в Active Directory:
Get-DhcpServerInDC
Получим список DHCP областей на выбранном сервере:
Get-DhcpServerv4Scope –ComputerName msk-dhcp1
Если нужно показать большее количество полей (Delay, Description, Name и т.д.)
Get-DhcpServerv4Scope –ComputerName msk-dhcp1| FL *
Если нужно отобразить данные о IPv6 областях:
Get-DHCPServerv6Scope
Получим настройки для конкретной области:
Get-DhcpServerv4Scope –ComputerName msk-dhcp1–ScopeID Helpdesk 10.10.1.0
Для авторизации нового DHCP сервера в домене Active Directory:
Add-DhcpServerInDC -DnsName msk-dhcp2.winitpro.ru -IPAddress 10.0.1.21
Создадим новую область с диапазоном адресов с 10.10.1.1 до 10.10.1.254:
Add-DHCPServerv4Scope -EndRange 10.10.1.254 -Name Office -StartRange 10.10.1.1 -SubnetMask 255.255.255.0 -State Active –ComputerName msk-dhcp1
Настроим следующие параметры DHCP сервера: DNS сервер, домен и адрес маршрутизатора
Set-DHCPServerv4OptionValue -ComputerName msk-dhcp1 -DnsServer 10.10.1.5 -DnsDomain winitpro.ru -Router 10.10.1.1
Вывести список настроенных опций DHCP сервера можно так:
Get-DHCPServerv4OptionValue -ComputerName msk-dhcp1 | Format-List
Настроим опции области:
Set-DHCPServerv4OptionValue -ComputerName msk-dhcp1 -ScopeId 10.10.1.0 -DnsServer 10.10.1.6 -DnsDomain winitpro.ru -Router 10.10.1.1
Выведем список настроенных параметров зоны:
Get-DHCPServerv4OptionValue -ComputerName msk-dhcp1 -ScopeId 10.10.1.0 | Format-List
Исключим диапазон адресов с 10.10.1.1 по 10.10.1.40 из раздаваемых адресов для определенной области:
Add-Dhcpserverv4ExclusionRange -ComputerName msk-dhcp1 -ScopeId 10.10.1.0 -StartRange 10.10.1.1 -EndRange 10.10.1.40
Выведем текущий список арендованных адресов для области 10.10.1.0
Get-DHCPServerv4Lease -ScopeId 10.25.4.0 -ComputerName msk-dhcp1
Создадим резервацию для клиента с IP адресом 10.10.1.88:
Get-DhcpServerv4Lease -ComputerName msk-dhcp1 -IPAddress 10.10.1.88| Add-DhcpServerv4Reservation -ComputerName msk-dhcp1
Можно массово зарезервировать IP адреса для компьютеров по списку из csv файла. Для этого создайте текстовый файл в формате:
ScopeId,IPAddress,Name,ClientId,Description
10.10.1.0,10.10.1.88,Client1,ba-ab-5c-3d-4e-6f,Reservation PC-msk-s1
10.10.1.0,10.10.1.89,Client2,ba-ab-5c-5d-2e-3f,Reservation PC-msk-s2
Сохраните файл с именем c:\dhcp\DHCPReservations.csv и запустите следующую команду, которая импортирует данные из csv файла и создаст резервации для клиентов:
Import-Csv –Path c:\dhcp\DHCPReservations.csv | Add-DhcpServerv4Reservation -ComputerName msk-dhcp1
Отключить область на DHCP сервере:
Set-DhcpServerv4Scope -ComputerName msk-dhcp1-ScopeId 10.10.1.0-State InActive
Активировать область:
Set-DhcpServerv4Scope -ComputerName msk-dhcp1-ScopeId 10.10.1.0-State Active
Удалить область с DHCP сервера:
Remove-DHCPServerv4Scope -ComputerName msk-dhcp1-ScopeId 10.10.1.0 -Force
Возможно получить статистику DHCP сервера (количество областей, резерваций, процент использования адресов и пр.).
Get-DhcpServerv4Statistics -ComputerName msk-dhcp1:
Аналогичная информация для конкретной области может быть получена с помощью командлета Get-DhcpServerv4ScopeStatistics.
Опции для DHCP сервера добавляется так (к примеру, WPAD):
Add-DhcpServerv4OptionDefinition -ComputerName msk-dhcp1-Name WPAD -OptionId 252 -Type String
Конфигурацию DHCP сервера можно экспортировать в указанный XML файл с помощью команды:
Export-DHCPServer -ComputerName msk-dhcp1 -File C:\dhcp\dhcp-export.xml
В дальнейшем эти настройки DHCP сервера можно импортировать на другой DHCP сервер (к примеру, с именем msk-dhcp2):
Import-DHCPServer -ComputerName msk-dhcp2 -File C:\dhcp\dhcp-export.xml -BackupPath C:\dhcpbackup\
Странно, но в моем RSAT для win10 есть нормальная консоль, которая вызывается как отдельно, так и из диспетчера серверов. Настраивать dhcp через ps, безусловно, круто, но хочется верить, что до этого не дойдет… Даже если в rsat что-то не включили, на самом сервере эта консоль точно никуда не денется.
Подскажите пожалуйста,
В организации в DHCP резервирую адреса с целью учета компов. Не могу найти, где можно посмотреть время последней аренды зарезервированного адреса, чтоб выявить компы, которые больше не подключаются, или как-то можно иным способом выявить неживые компы? Нечто подобное Lease Expiration? по идее в PowerShell где-то должно быть такое поле.
Посмотрел сейчас с помощью команду Get-DhcpServerv4Lease -scope 10.10.13.0, у активных резерваций нет поля с датой получения/освобождения адреса.
Скорее всего на dhcp этой информации нет.
Наверно проще всего определить неактивных клиентов по атрибуту lastLogonTimestamp в AD.
Как я понял, не получится просто скопировать папку с модулем DHCPServer на другой пк. Командлеты выполняются с ошибкой «неправильное пространство имен»
Как я понял, вы хотите запустить модуль на младших версиях Windows? Скорее всего на клиента нужно дополнительно установить Powershell 4.0 или выше
Скидывал на Windows 8.1 и 2012 R2, на обоих PoSh 4.0.
Правда копировал с хоста на Windows 10 соответственно с версией 5.0.
Windows 2012 R2
Клиентом был успешно арендован IP-адрес (допустим в ХХ:УУ) Спустя некоторое время этот ІР успешно добавили в область резервации. Время этого действия — я знаю. Как узнать время первоначального получения IP-адреса.
Хелп
DHCP логи (C:\Windows\System32\dhcp) доступны только за последние 7 дней и если нет собственного механизма ротирования и бэкапа старых логов, и аренда клиента была больше чем 7 дней назад, информацию о первоначальной аренде найти не получится.
В dnsmasq’е к примеру можно ввести логирование выданных адресов хоть за какое время. Можно ли такое сделать в Windows Server 2012? К примеру посмотреть, какие ipшники выдавались месяц назад? Что для этого нужно сделать? В журнале событий таких сведений я не находил, там лишь касаемо ошибок, уведомлений, предупреждений, а о том, кому какой адрес выдается там я информации я не видел…
Обязательные поля для резервации ScopeId,IPAddress,ClientId без остальных можно обойтись.