Microsoft DHCP Server

Экспорт и импорт конфигурации с арендами

Для экспорта - запустить на DHCP-сервере:

Export-DhcpServer -ComputerName dhcp_server -File C:\DHCP\dc1_dhcp.xml -Leases

:!: Командлет может быть использован для выгрузки конфигурации с удаленного сервера.

Для импорта запускаем:

Import-DhcpServer -ComputerName dhcptest -File 'C:\DHCP\dc1_dhcp.xml' -Leases

После выполнения командлет спросит параметр BackupPath, можно указать какую-либо временную папку для резервного копирования.

Если нам массово и многократно необходимо выполнять экспорт-импорт, мы можем довольно легко заскриптовать процесс. В этом случае укажем папку BackupPath прямо в командах и добавим ключи -force и -ScopeOverwrite для перезаписи уже существующих областей.

Пример:

Export-DhcpServer -ComputerName server01 -File C:\DHCP_EXP\server01.xml -Leases
Export-DhcpServer -ComputerName server02 -File C:\DHCP_EXP\server01.xml -Leases

# Теперь копируем файлы из папки DHCP_EXP - на сервер, где будем производить импорт - в папку DHCP_IMP

Import-DhcpServer -ComputerName server01new -File 'C:\DHCP_IMP\server01.xml' -Leases -BackupPath 'C:\DHCP_BACKUP\SERVER01NEW' -ScopeOverwrite -force
Import-DhcpServer -ComputerName server02new -File 'C:\DHCP_IMP\server02.xml' -Leases -BackupPath 'C:\DHCP_BACKUP\SERVER02NEW' -ScopeOverwrite -force

Проблема с неправильным ip-адресом сервера партнёра по DHCP-failover и принудительное удаление отношений репликации DHCP

В отношениях репликации одной из областей DHCP была обнаружена следующая проблема: репликация работала только в одну сторону - с одного сервера на другой, но не обратно. При этом: на втором сервере, откуда репликация не работала - адрес сервера-партнёра по какой-то причине отображался в формате 169.254.*.* и не был правильным. Любые действия, связанные с DHCP-failover проблемной области - происходили очень медленно, вероятно, из-за обращения по несуществующему адресу. Скорее всего, ошибка связана с неправильной конфигурацией интерфейсов, когда на сервере был включен интерфейс без заданного адреса.

Решение: пересоздать отношения репликации. Однако, из mmc-оснастки это может не работать, консоль может выдавать ошибку: dhcp server in not running on target computer. В этом случае поможет команда powershell, которая удаляет отношения с ключом force. Её можно запустить на первом, основном dhcp-сервере. Названия отношений можно посмотреть в свойстве dhcp-области.

Remove-DhcpServerv4FailoverScope -Name dc01.domain.local -ScopeId 10.10.10.0, 172.16.10.0 -force

DHCP-failover, ручной запуск резервирования

Репликация резервирования не происходит автоматически по умолчанию, даже при настроенном DHCP-failover. Для периодической репликации можно использовать скрипт, который будет запускаться по планировщику и выполнять одну команду:

Invoke-DhcpServerv4FailoverReplication -ComputerName dhcp_partner -force

DHCP-бэкап

DHCP по умолчанию сам резервирует свою конфигурацию и кладёт в C:\Windows\System32\dhcp\backup. Если мы хотим дополнительно копировать куда-то конфигурацию - можно это сделать cmd-скриптом, который будет содержать следующее:

Xcopy /E /I /Y C:\Windows\System32\dhcp\backup \\host\C$\DHCP_backup\dhcpserver_backup

DHCP и netsh

Иногда в решении проблем, связанных с DHCP, может помочь команда netsh.

Пример проблемы: на DHCP сервере не удавалось добавить один из MAC-адресов. DHCP сервер при попытке добавления одного из MAC-адресов выводил одну из двух следующих ошибок:

Specified address is not available
This address is already in use

При этом, дело было не в IP-адресе, а именно в MAC, т.к. с другим MAC - DHCP зарезервировать адрес давал. Осмотр таблицы резервирования\аренд вручную и при помощи скрипта (ниже в данной статье) не показал результатов, в которых бы добавляемый MAC где-либо существовал. А вот та же самая операция, выполненная с помощью netsh, как раз показала, что MAC-адрес, который мы добавляем - уже присвоен одному клиенту с другим адресом.

:!: Интересно, что просмотр свойств резервирования через MMC-консоль управления DHCP - показывал СОВЕРШЕННО ДРУГОЙ MAC адрес в свойствах.

Для решения проблемы помогло удаление проблемного резервирования с помощью команды netsh. Весь перечень выполняемых команд следующий:

netsh
dhcp
server \\dhcpserver
scope 10.88.88.0
show reservedip
delete reservedip 10.88.88.100 f0-18-98-ba-9d-e2-

После выполнения данной команды - новое резервирование успешно создалось.


Поиск резервирования с помощью PowerShell

При помощи такого скрипта можно выполнить поиск MAC-адреса во всех резервированиях.

$TargetMac = "f0-18-98-ba-9d-e2"
$DhcpServer = "dhcpserver"

Get-DhcpServerv4Scope -ComputerName $DhcpServer | ForEach-Object {
    Get-DhcpServerv4Reservation -ComputerName $DhcpServer -ScopeId $_.ScopeId | Where-Object {$_.ClientId -eq $TargetMac}
}