sergey vasin

The IT blog

Weekend Scripter: Определение конфликтов адресов сервером DHCP – Hey, Scripting Guy! Blog

leave a comment »

Резюме: Microsoft Scripting Guy, Ed Wilson рассказывает о конфигурации DHCP-сервера для определения конфликтов адресов.

Передаем адрес DHCP сервера по конвейеру

На предприятии обычной практикой является наличие нескольких DHCP-серверов. Для того, чтобы внести изменения в конфигурацию всех серверов, нужно получить список авторизованных DHCP-серверов, который располагается в Active Directory Domain Services (AD DS). Для этого я воспользуюсь функцией из модуля DHCPServer.

PS C:\> Get-DhcpServerInDC

IPAddress            DnsName

———            ——-

192.168.0.152        wds1.iammred.net

Теперь мне нужно передать эту информацию по конвейеру командлету Get-DHCPServerSetting. Как видно на приведенном скриншоте, из этого ничего не вышло.

 01

Ясно, это не так просто, как могло бы быть. Мне нужно узнать, какие свойства возвращаются командлетом Get-DhcpServerInDC и сравнить их с параметрами, принимаемыми командлетом Get-DHCPServerSetting. Я передаю результаты первой функции командлету Format-List, я для второй функции я применяю командлет Get-Help и из полученной информации отбираю только синтаксис. Команды и их вывод приведены на рисунке.

 02

Как оказывается, это не такая большая проблема. Я могу указать свойство DNSName в качестве аргумента для параметра ComputerName. Я нажимаю стрелку вверх, немного изменяю команду и нажимаю Enter. Ошибка! В этот раз это какая-то фиктивная ошибка, так как она сообщает, что параметр равняется NULL или же в качестве параметра указано пустое значение. Но я знаю, что первый командлет возвращает информацию для этого свойства. На самом деле командлет не может распознать значение аргумента ComputerName.

 03

Давайте еще раз взглянем на требуемое значение для параметра ComputerName командлета Get-DHCPServerSetting – он принимает только одиночное значение, но не массив. Поэтому я передам результаты команды Get-DHCPServerInDC командлету Foreach-Object, чтобы обработать их по одному.

Заметка: Здесь Get-DHCPServerInDC возвращает единственный объект сервера. Однако он может возвращать и несколько значений, поэтому он представлен в качестве массива. Передача массива параметру, который принимает только единственное значение вызывает ошибку.

Исправленная команда и ее вывод приведены ниже.

PS  C:\> Get-DhcpServerInDC | % {Get-DhcpServerSetting -ComputerName $_.dnsname}

IsDomainJoined            : True

IsAuthorized              : True

DynamicBootp              : True

RestoreStatus             : False

ConflictDetectionAttempts : 0

NpsUnreachableAction      : Full

NapEnabled                : False

ActivatePolicies          : True

 

Конфигурируем определение конфликтов адресов

Настройка определения конфликтов указывает, будет ли DHCP-сервер пытаться пропинговать адрес перед его выдачей клиенту. Если сервер получит ответ на пинг, это будет означать, что адрес уже используется и сервер не будет его выдавать.

Если же сервер не получить ответа на пинг, он будет считать, что адрес не используется и его можно выдать клиенту. Это можно использовать в случае, если вы устанавливаете новый DHCP-сервер взамен вышедшего из строя и у вас нет резервной копии, то есть информация об выданных адресах отсутствует.

Поскольку сервер будет проверять существование адреса в сети перед выдачей его клиенту, конфликта IP-адресов не произойдет. Однако по умолчанию эта функция выключена.

Значение по умолчанию для количества попыток определения конфликта адресов равно нулю, однако оно может находиться в пределах от 0 до 6. Указанный номер определяет количество пингов, которые сервер будет посылать перед выдачей адреса. Каждая попытка добавляет 1 секунду задержки при выдаче IP-адреса клиенту.

Таким образом, если установить значение параметра в 6, то это вызовет 6-секундную задержку при выдаче IP-адреса клиенту. Это увеличивает нагрузку на DHCP-сервер. Best Practice Analyzer for Dynamic Host Configuration Protocol (DHCP) рекомендует не устанавливать значение больше 3. TechNet указывает, что значение не должно превышать 2.

Для того, чтобы установить количество попыток определения конфликта адресов сервером DHCP мы воспользуемся функцией Set-DHCPServerSetting и ее параметром ConflictDetectionAttempts. Команда для изменения настроек каждого сервера на предприятии приведена ниже.

Get-DhcpServerInDC | % {Set-DhcpServerSetting -ComputerName $_.dnsname -ConflictDetectionAttempts 2}

После этого я несколько раз нажму на стрелку вверх, чтобы вызвать команду проверки заданных настроек. Обе команды приведены на рисунке.

 04

Автор:

Ed Wilson, Microsoft Scripting Guy

Оригинал:

http://blogs.technet.com/b/heyscriptingguy/archive/2013/01/12/weekend-scripter-dhcp-address-conflict-detection.aspx


Страницы в социальных сетях:

Twitter: https://twitter.com/vsseth
Facebook: https://fb.com/inpowershell
VKontakte: https://vk.com/inpowershell


Реклама

Written by Сергей Васин

Март 4, 2013 в 07:27

Опубликовано в HeyScriptingGuyBlog, PowerShell

Tagged with

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

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s