The Magician

This is an old revision of the document!


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}
}

Логи DHCP

Логирование DHCP устанавливается в настройках области DHCP-сервера. Пример:

Логи ведутся семь дней, затем перезаписываются. Файлы логов по дням недели расположены здесь, пример:

C:\Windows\System32\dhcp\DhcpSrvLog-Mon.log
C:\Windows\System32\dhcp\DhcpSrvLog-Sun.log

В логах можно найти сведения об арендах и других событиях. Первое число в строке - код конкретного события (в данном случае - 11).

11,02/05/26,14:14:10,10.121.50.183,,2432AE875AFD,,1823127636,0,,,,0x756468637020302E392E392D707265,udhcp 0.9.9-pre,,,,0

Ниже - описание типичных кодов.

Event ID  Meaning
00	The log was started.
01	The log was stopped.
02	The log was temporarily paused due to low disk space.
10	A new IP address was leased to a client.
11	A lease was renewed by a client.
12	A lease was released by a client.
13	An IP address was found to be in use on the network.
14	A lease request could not be satisfied because the scope's address pool was exhausted.
15	A lease was denied.
16	A lease was deleted.
17	A lease was expired and DNS records for an expired leases have not been deleted.
18	A lease was expired and DNS records were deleted.
20	A BOOTP address was leased to a client.
21	A dynamic BOOTP address was leased to a client.
22	A BOOTP request could not be satisfied because the scope's address pool for BOOTP was exhausted.
23	A BOOTP IP address was deleted after checking to see it was not in use.
24	IP address cleanup operation has began.
25	IP address cleanup statistics.
30	DNS update request to the named DNS server.
31	DNS update failed.
32	DNS update successful.
33	Packet dropped due to NAP policy.
34	DNS update request failed.as the DNS update request queue limit exceeded.
35	DNS update request failed.
36	Packet dropped because the server is in failover standby role or the hash of the client ID does not match.
50+	Codes above 50 are used for Rogue Server Detection information.
microsoft_dhcp_server.1770369776.txt.gz · Last modified: by jp