Данная статья описывает процедуру установки и настройки DHCP сервера на базе Windows Server 2019. В статье описаны особенности установки и настройки DHCP роли, создания областей DHCP, настройки их параметров и резервации статических адресов. Мы рассмотрим как привычный способ настройки параметров DHCP сервера через графическую консоль, так и настройку DHCP из командной строки PowerShell.
Установка роли DHCP сервера в Windows Server 2019/2016
В этом примере мы установим DHCP сервер на хосте с Windows Server 2019 и IP адресом 192.168.13.4. Вы можете использовать как Server Core версию, так и Full GUI. В маленькой инфраструктуре допустимо устанавливать DHCP сервер на сервер с ролью контроллера домена Active Directory.
Configure at least one static IP address on your computer before installing DHCP. WARNING: The following recommended condition is not met for DHCP: No static IP addresses were found on this computer. If the IP address changes, clients might not be able to contact this server. Please configure a static IP address before installing DHCP Server.
Установить роль DHCP Server можно из консоли Server Manager (Add Roles and Features -> Server Roles).
После установки роли DHCP роли нужно выполнить Post-Deployment Configuration. Для этого в консоли Server Manager щелкните по уведомлению и выберите Complete DHCP configuration.
Вам будет предложено аутентифицировать новый DHCP сервер в Active Directory (экран Authorization). Для авторизации DHCP сервера в AD учетная запись должна состоять в доменной группе Enterprise Admins.
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\DHCPServer\Parameters" -Name DisableRogueDetection -Value 1 -Force
Также вы можете установить и настроить DHCP роль в Windows Server из консоли PowerShell.
Установка роли DHCP:
Install-WindowsFeature DHCP –IncludeManagementTools
Проверьте, что роль и инструменты управления RSAT-DHCP установлены:
Get-WindowsFeature -Name *DHCP*| Where Installed
Авторизуйте DHCP сервер в Active Directory (укажите DNS имя сервера и IP адрес, который будет использоваться DHCP клиентами):
Add-DhcpServerInDC -DnsName hq-dc01.contoso.com -IPAddress 192.168.13.4
Создайте локальные группы безопасности DHCP сервера:
Add-DhcpServerSecurityGroup
Чтобы Server Manager перестал показывать уведомление о том, что DHCP роль требует настройки, выполните команду:
Set-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\ServerManager\Roles\12 -Name ConfigurationState -Value 2
Перезапустите службу DHCPServer:
Restart-Service -Name DHCPServer -Force
База данных и логи DHCP сервера находятся в каталоге
%systemroot%\system32\dhcp
.
- dhcp.mdb — файл базы данных сервера DHCP’;
- j50.log – транзакционный журнал (используется при восстановлении конфигурации DHCP);
- j50.chk — файл контрольной точки;
- tmp.edb — временный рабочий файл DHCP-сервера.
Настройка DHCP областей в Windows Server
После установки роли DHCP вам нужно создать DHCP области (Scopes), которые описывают диапазоны IP адресов и другие настройки, выдающиеся сервером клиентам.
Для управления сервером DHCP используется консоль dhcpmgmt.msc (вы можете управлять DHCP сервером локально или с удаленного компьютера с установленным RSAT). Запустите консоль DHCP, разверните ваш сервер -> IPv4.
Чтобы создать новую область выберите New Scope.
Укажите название DHCP области.
Укажите диапазон IP адресов, который будет выдаваться этой областью и маску сети. В этом примере я хочу использовать эту DHCP область для обслуживания подсети 192.168.100.0/24. В рамках этой сети DHCP сервером будет назначаться динамические IP адреса из диапазона 192.168.100.50 — 192.168.100.250. В следующем окне можно добавить исключения в этот диапазон (Add Exclusions and Delay).
Далее нужно указать длительность аренды (Lease Duration) IP адреса DHCP клиентом (по умолчанию 8 дней, менять без особой необходимости не нужно).
Укажите, что вы хотите настроить дополнительный параметры DHCP области.
.
Укажите IP адрес шлюза в подсети, который должен назначаться клиентам (в нашем примере это 192.168.100.1).
Затем укажите имя домена и адреса DNS серверов, которые будут назначены клиентам DHCP.
Осталось активировать DHCP область (разрешить ей обслуживать клиентов).
DHCP сервер может выдавать клиентам различный настройки (кроме IP адреса). Для этого используются Scope Options.
В Windows Server DHCP можно настроить глобальные настройки области или Scope Options для каждой области.
Ранее мы уже настроили три опции области:
-
003 Router
-
006 DNS Server
-
015 DNS Domain Name
Можно добавить и другие опции (NTP сервера, PXE и т.д.).
В разделе Server Options DHCP сервера можно настроить глобальные опции, которые будут наследуются всеми областями. Но вы можете переопределить глобальные настройки в настройках каждой области (опции области имеют приоритет над опциями сервера).
Один DHCP сервер может обслуживать сотни удаленных подсетей и VLAN. Поэтому вы можете создать на нем несколько областей. Главное, чтобы в каждой из подсетей был настроен ретранслятор (DHCP relay agent), который пересылает широковещательные DHCP-запросы на указанный DHCP сервер. В терминах Cisco DHCP ретранслятор называется ip helper. Вы можете настроить DHCP Relay даже на Windows Server.
Резервация IP адресов на DHCP сервере
По умолчанию DCHP сервер выдает клиентам динамические адреса. Это означает что IP адрес у любого клиента может меняться. Если вы хотите, чтобы определенные устройства всегда получали от DHCP сервера один и тот же адрес, вы можете его зарезервировать (например, для сетевых принтеров, которые настроены у пользователей).
Для DHCP резервации выберите область и перейдите в секции Reservation. В меню выберите New Reservation.
При создании резервации нужно указать IP адрес, который нужно сохранить за клиентом и его MAC адрес (уникальное значение). MAC адрес в Windows можно получить из результатов команды
ipconfig /all
или с помощью PowerShell
get-netadapter|select name,macaddress
). Опционально можно указать имя и описание устройства.
Также вы можете зарезервировать текущий динамический адрес за устройством, найдя его в разделе Address Leases. Щелкните по устройству и выберите Add to Reservation.
Настройка и управление DHCP сервером с помощью PowerShell
Все операции по настройке и управлению DHCP сервером на Windows Server 2019/2016 можно выполнять из консоли PowerShell. Рассмотрим основные команды управления DHCP. Для этого используется модуль DHCPServer. Импортируйте модуль в сессию:
Import-Module DHCPServer
Вывести полный список командлетов в моделе DHCP можно так:
Get-Command -Module DHCPServer
Следующая команда выведет список авторизованных 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 10.10.1.0
Создадим новую (неактивную) область с диапазоном адресов с 192.168.113.50 до 192.168.113.250:
Add-DhcpServerv4Scope -Name “Brahch1 192.168.113.0” -StartRange 192.168.113.50 -EndRange 192.168.113.250 -SubnetMask 255.255.255.0 -State InActive
Настроить следующие параметры DHCP сервера: DNS сервер, домен и адрес шлюза по-умолчанию:
Set-DhcpServerv4OptionValue -ScopeID 192.168.113.0 -DnsDomain contoso.com -DnsServer 192.168.13.4 -Router 192.168.113.1
Добавить исключения в DHCP область:
Add-DhcpServerv4ExclusionRange -ScopeID 192.168.113.0 -StartRange 192.168.113.90 -EndRange 192.168.113.100
Активировать DHCP область:
Set-DhcpServerv4Scope -ScopeID 192.168.113.0 -State Active
Для удобства можно использовать такую команду PowerShell при создании новой области:
$HashArgs = @{
'Name' = 'EKB Office Scope';
'Description' = 'workstations';
'StartRange' = '192.168.140.10';
'EndRange' = '192.168.140.200';
'SubnetMask' = '255.255.255.0';
'State' = 'Active';
'LeaseDuration' = '1.00:00:00';
}
Add-DhcpServerv4Scope @HashArgs
Опции для DHCP сервера добавляется так (к примеру, WPAD):
Add-DhcpServerv4OptionDefinition -ComputerName msk-dhcp1 -Name WPAD -OptionId 252 -Type String
Вывести список настроенных опций DHCP сервера можно так:
Get-DHCPServerv4OptionValue -ComputerName msk-dhcp1 | Format-List
Выведем список настроенных параметров зоны:
Get-DHCPServerv4OptionValue -ComputerName msk-dhcp1 -ScopeId 10.10.1.0 | Format-List
Показать текущий список арендованных адресов для области 10.10.1.0:
Get-DHCPServerv4Lease -ScopeId 10.10.1.0 -ComputerName msk-dhcp1
Создать DHCP резервацию для клиента, которому назначен динамический 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 файла и создаст DHCP резервации для клиентов:
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
Удалить область с DHCP сервера:
Remove-DHCPServerv4Scope -ComputerName msk-dhcp1-ScopeId 10.10.1.0 -Force
Возможно получить статистику DHCP сервера (количество областей, резерваций, процент использования адресов и пр.).
Get-DhcpServerv4Statistics -ComputerName msk-dhcp1
Аналогичная информация для конкретной области может быть получена с помощью командлета Get-DhcpServerv4ScopeStatistics.
Конфигурацию DHCP сервера можно экспортировать в указанный XML файл с помощью команды:
Export-DHCPServer -ComputerName msk-dhcp1 -File C:\dhcp\dhcp-export.xml
В дальнейшем эти настройки DHCP сервера можно импортировать (перенести) на другой DHCP сервер:
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 без остальных можно обойтись.
Не указано, что нужно сделать на DHCP сервере, чтобы он регистрировал выданные IP-адреса на DNS-сервере. Мы, например, исторически указываем в специальной вкладке DHCP-сервера отдельную технологическую учетную запись, из-под которой идет такая регистрация. Может это, конечно, сейчас необязательно.
В настройках DHCP зоны на вкладке DNS включить опцию Enable DNS dynamic updates according to the settings below, добавить DHCP сервер в доменную группу DnsUpdateProxy .
В настройках DNS зоны включить диманическое обновление.
Можно добавить, что настройки резервирования имеют приоритет над настройками областей и сервера?
Address Leases пуст. Перезапускал и клиенты, и сам сервер. Ничего.
Добрый день.
В домене проблема — DHCP перестал обновлять записи на DNS, и есть задача — узнать соответствие ip и имени компьютера именно с dhcp сервера, потому что в dns записи или нет, или она не верная.
ситуация усложняется тем, что компьютеры находятся в нескольких разных адресных scope пространствах одного домена.
каким образом через PoSh можно сделать такой запрос? к файлу списка я сам прикручу..
только двойной цикл, по каждому имени компьютера в каждой области — не рационально(
Если я правильно понял задачу, вам проще выгрузить список аренд в CSV файл и проанализировать его в Excel:
Get-DhcpServerv4Scope -ComputerName "dhcp1.winitpro.ru" | Get-DhcpServerv4Lease -ComputerName "dhcp1.winitpro.ru" select Hostname, ClientId, IPAddress | Export-csv -path c:\ps\dhcp_leases.csv
а и правда, так эффективнее, вот я тупанул)) спасибо большое!
Здравствуйте. Есть вопрос по поводу авторизации DHCP-сервера в AD. Какой должен быть эффект от этого? Я правильно понял, что после авторизации DHCP, клиенты начнут получать адреса только с авторизованного DHCP? Я для проверки развернул стенд с AD и неавторизованным DHCP-сервером, и клиенты получали адреса с него, но после того как я развернул второй DHCP и авторизовал его, клиенты продолжают получать адреса с неавторизованного DHCP.
Насколько я помню, что без авторизации DHCP сервер просто не будет выдавать адреса клиентам (подразумевается что сервер в домене).
Спасибо за статью. Если будет время напишите пожалуйста статью про DHCP Failover и режим Load balance. Когда есть два DHCP сервера на разных физических машинах. Мы у себя включили данную функцию, но между ними синхронизируется только бронь когда компьютер запрашивает адрес. А вот если вручную вмешиваться на первом сервере, к примеру делать reservation или удалять reservation то на второй это не дублируется и получается бардак, на одном уже нет reservation для принтера а на втором есть.
В свое время касался dhcp failover, там действительно проблема с резервированием. Каждый сервер держит свой список резерваций.
Чтобы автоматически копировать резервации между хостами пришлось писать powershell костыль.
У меня порядка 300 подсетей.
Как-то можно настроить их сортировку и/или поиск в стандартной консоли управления?
Добрый день. Если помещаю подсети в супер область то не работает должным образом ip-helper. Если создаю области отдельно все нормально отрабатывает. Предполагаю что необходимо
использовать фильтры для этих целей.
Здравствуйте! У меня есть два сервера Windows 2016: один на английском, другой на русском. Настроила новую область на 1-ом, она появилась и во втором. Затем удалила на первом, а на втором удалить не могу. Появляется ошибка: «Область участвует в отношениях отработки отказа. Удалите эту область из отношения. » Не знаю, как это сделать.
Правой кнопкой щелкните по области и выберите Deconfigure failover. Потом можно будет удалить область
Вопрос!!! если я указываю ШЛЮЗ сам сервер, то клиентские ПК не смогу выходить в сеть !? Использовать NAT? смысл мне выставлять сервер в сеть, использовать отдельный сервер как DHCP? Просто AD. DHCP и DNS всегда используют в связке
В качестве шлюза вы в настройках DHCP указываете SVI интерфейс вашего коммутатора где настроен ip-helper. А дальше уже с коммутатора вы через PBR или ACL Отправляете трафика на нужный шлюз.
SVI и другое чет не понял) ШЛЮЗ указываю ip адрес роутера ? ну я так вижу
SVI это L3 интерфейс коммутатора. В статье несколько областей в dhcp, подразумевает настройку dhcp-relay. В вашем случае с одним сервером и роутером да достояно указать в качестве шлюза внутренний адрес роутера.
погуглил) КИСКа оборудование не юузал, микротИк , д линк юбик