Автоматизация настройки DHCP-службы cервера Windows и настройка рабочих станций на получение IP-адресов автоматически

2008-11-12 Андрей Гревцов RSS Обсудить

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

Наиболее трудоёмкой операцией при настройке службы DHCP является резервирование IP-адресов. Чтобы автоматизировать её, можно воспользоваться командным файлом, который сначала проверяет доступные устройства командой ping, а затем по данным кэша arp формирует другой командный файл для добавления записей резервирования на сервер.

Управление параметрами DHCP-сервера в результирующем командном файле производится с использованием возможностей утилиты командной строки netsh, которая присутствует во всех версиях Windows, начиная с 2000.

Содержимое файла staticIp2dhcpList.cmd:

<code>SET Network=10.100.0
SET From=1
SET To=255
SET SERVER=10.100.0.3
SET SCOPE=10.100.0.0
@echo off
REM Перед запуском измените переменные
REM Сначал выполняется команда ping для всего диапазона адресов, которые предполагается описать,
REM чтобы сформировать кэш разрешений адресов IP<->MAC.
REM Затем выполняется обработка кэша и приведение его к формату команды NETSH.
REM После выполнения этого командного файла сформируется другой командный файл "dhcp.cmd", 
REM который будет содержать команды добавления резервирования
REM IP-адресов. Перед запуском его необходимо проверить и отредактировать
REM Переменные Network, From, To нужны для команды ping и описывают границы проверки.
REM Переменные SERVER и SCOPE - нужны для формирования команд для сервера DHCP. SERVER - ip-адрес сервера, SCOPE - предварительно созданная область.
echo Подождите, пока пройдёт проверка указанного вами диапазона %Network%.%From%-%Network%.%To%...
set dhcpfile=dhcp.cmd
For /L %%i in (%From%,1,%To%) do ping -n 1 -w 1 %Network%.%%i | Find "Reply"
if exist %dhcpfile% (del %dhcpfile%)
echo REM Можно редактировать поле "%Network%.xxx" - это отображаемое в оснастке управления DHCP имя резервирования и поле "Описания нет" - это описание. >> %dhcpfile%
for /F "skip=1 tokens=1,2 delims= " %%i in ('arp -a') do if %%i neq Интерфейс: (
if %%i neq Адрес (
for /F "tokens=1,2,3,4,5,6 delims=-" %%k in ("%%j") do echo NETSH Dhcp Server %SERVER% Scope %SCOPE% Add reservedip %%i %%k%%l%%m%%n%%o%%p "%%i" "Описания нет" "BOTH" >> %dhcpfile%
)
)
echo Создан файл %dhcpfile%. Отредактируйте его и запустите.</code>

Перед запуском данного файла сервер DHCP должен работать и на нём создана область, из которой будут выдаваться IP-адреса, в командном файле staticIp2dhcpList.cmd необходимо отредактировать переменные Network, From, To, SERVER и SCOPE. После его запуска появится файл dhcp.cmd, который нужно отредактировать, чтобы внести имена и описания резервирования.

Выполнение файла dhcp.cmd внесёт данные по устройствам на сервер DHCP и IP-адреса сетевым устройствам будут выдаваться в соответствии с их MAC-адресом.

После настройки сервера необходимо изменить настройки сетевых адаптеров рабочих станций, чтобы они могли получать параметры IP автоматически. Для этого на каждой рабочей станции выполнить сценарий autodhcp.vbs, вручную или используя возможности Active Directory. Сценарий изменит настройки для всех сетевых адаптеров, имеющихся на компьютере.

<code>strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
  & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colNetAdapters = objWMIService.ExecQuery _
  ("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
For Each objNetAdapter In colNetAdapters
  errEnable = objNetAdapter.EnableDHCP()
  errEnable = objNetAdapter.SetDNSServerSearchOrder(dhcp)
  errEnable = objNetAdapter.RenewDHCPLease 
Next</code>

Если strComputer=".", то настройка будет сделана для компьютера, на котором запущен сценарий. Также сценарий можно запускать на одной рабочей станции для всех компьютеров, тогда переменная strComputer должна иметь в значении имя того компьютера, который необходимо настроить. Пользователь, который выполнят сценарий должен быть администратором компьютера, указанного в strComputer.

Также можно настроить получение компьютером IP-адреса с сервера DHCP с помощью команды netsh dhcp:

netsh interface ip set address "Подключение по локальной сети" dhcp

Для выполнения этой команды нужно указать конкретное подключение, к которому должны быть применены настройки.

В приложенном к заметке архиве 2 файла: staticIp2dhcpList.cmd и autodhcp.vbs.

Скачать.

Оставьте комментарий!