Использование утилиты netsh для управления сервером DHCP

Каждый администратор Windows имеет дело с сервером DHCP. Многие привыкли настраивать его напрямую с контроллера домена. Более опытные ставят пакет adminpak на свои рабочие станции и управляют Active Directory и службами непосредственно со своей машины.

А ведь управлять сервером DHCP можно не только через оснастку DHCP пакета adminpak, но и с помощью утилиты netsh. Данная утилита позволяет настраивать как серверы DHCP и WINS, так и другие службы. Netsh присутствует изначально в Windows XP и Windows Server 2003 и не требует установки дополнительных компонентов. Более подробную информацию по netsh можно найти по адресу: http://www.microsoft.com/technet/prodtechnol/windowsserver2003/ru/library/ServerHelp/ 6c7033fb-2bbb-48a8-8ff2-be435b2cd8a1.mspx

Или же использовать команду: «netsh /?». Также сведения о netsh можно получить в Центре справки и поддержки (Start>Help and Support) операционной системы Windows.

В данной статье мы рассмотрим создание командных файлов для формирования, настройки и удаления зон DHCP, стандартных операций при администрировании данной службы. Мне было необходимо создать большое количество одинаковых зон (для данной статьи, например, вида 10.10.25.0/29, 10.10.25.8/29) для разных сетей, но с одинаковыми параметрами, а именно: шлюз всегда имеет первый адрес в диапазоне и маска для всех зон имеет вид 255.255.255.248.

Ситуация осложнялась тем, что эти зоны не должны входить в домен и для них приходится указывать параметры для маршрутизатора, серверов имен и т. д.

Прежде чем экспериментировать с сервером DHCP, желательно сохранить имеющуюся конфигурацию. Это можно сделать как с помощью оснастки DHCP, так и используя netsh. Для сохранения конфигурации DHCP необходимо выполнить следующую команду:

netsh dump 10.10.1.3 > c:dump.dmp

где параметр 10.10.1.3 — адрес DHCP-сервера, а «>» означает перенаправление результатов работы команды в файл c:dump.dmp

Восстановить конфигурацию сервера можно и с помощью netsh, указав другой ключ:

netsh exec c:dump.dmp

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

net stop dhcpserver

и

net stop dhcpserver

с консоли сервера.

В данной статье используется два сценария, которые имеют общую часть, выделенную в листинг 3. В самом начале работы любого из сценариев мы отключаем отображение исполняемых команд. Указание параметра @ отключает вывод самой команды echo off. Далее выполняем проверку версии Windows, на которой запускается сценарий (он может работать на версиях от Windows NT 4.0 до Windows XP и Windows Server 2003). Если проверка завершается ошибкой, происходит вывод информации о сценарии, и тот завершает работу.

Если система относится к семейству Windows NT, переменной INFO присваивается значение rem, а переменной SEXIT — значение 0, и происходит переход к следующему шагу.

Операции по созданию, настройке и активации областей адресов DHCP приведены в листинге 1.

В команде set server_adress=10.10.1.3 мы задаем адрес сервера DHCP. Если используется конструкция вида «netsh dhcp server адрес_сервера», это позволит запускать сценарий на любой системе в домене, но только если учетная запись, под которой запускается данный сценарий, входит в группу локальных администраторов сервера DHCP.

Далее следует набор команд Set, описывающих конфигурацию создаваемых зон:

  • set n_scope=0 — указываем начальную зону
  • set name=1 — переменная подставляется в имя зоны и ее комментарий
  • set IPTMP=10.10.25. — основная часть зоны
  • set fullscope=%IPTMP%%n_scope% — полный адрес зоны
  • set /A router=%n_scope%+1 — адрес шлюза
  • set /A s_range=%n_scope%+2 — начало диапазона адресов для выдачи
  • set /A e_range=%s_range%+4 — конец диапазона адресов для выдачи
  • set count=1 и set count_end=32 — начальный и конечный счетчики, необходимые для цикла. Вместо числа 32 в переменную count_end=32 нужно подставить число создаваемых зон. Число 32 означает, что мы хотим разбить сеть класса С на 32 подсети с диапазоном раздачи на четыре адреса.

Далее задействуем команду netsh. Команда

netsh dhcp server %server_adress%

add scope %fullscope%

255.255.255.248 RU-POS%name%

выполняет подсоединение к серверу, создание зоны %fullscope% с маской 255.255.255.248, именем и комментарием RU-POS%name%

Следующая команда в уже созданную зону добавляет нужный диапазон адресов:

netsh dhcp server %server_adress%

scope %fullscope% add iprange

%IPTMP%%s_range%

Последующий набор похожих команд netsh добавляет адрес шлюза, задает имена для серверов имен WINS, серверов DNS и указывает имя домена. Хочу обратить ваше внимание на параметр команды optionvalue. Числом выбирается параметр зоны, имеющий тип данных BYTE, WORD, DWORD, STRING, IPADDRESS, и далее задается значение параметра. Числовые коды соответствующих настроек зоны можно посмотреть, например, в оснастке DHCP (см. экран).

Экран. Просмотр числовых кодов в оснастке DHCP

Последняя команда в цепочке активирует зону:

netsh dhcp server %server_adress%

scope %fullscope% set state 1

В следующей части сценария мы повторяем ранее выполненные действия для другой зоны и после выполнения условий окончания цикла if %count% EQU %count_end% переходим на метку :end1 и завершаем выполнение сценария. Для желающих освежить все ключи команды netsh могу посоветовать, например, подробный справочник по командам DOS на сайте http://www.ss64.com.

Убираем ненужное

С помощью утилиты netsh нельзя создать суперобласть (superscope), и ее приходится формировать вручную, через оснастку DHCP, зато команда netsh может ее удалять. Также можно удалять настройки зоны, суперобласти и другие параметры. Например, представим, что у нас есть суперобласть RU-POS1. Чтобы ее удалить, необходимо выполнить команду

netsh dhcp server 10.10.1.3

delete superscope «RU-POS1»

Название суперобласти надо писать в кавычках и с учетом регистра. После удаления суперобласти у нас остается область RU-POS1. Чтобы удалить область, необходимо выполнить команду

netsh dhcp server 192.168.100.2

delete scope 10.10.25.0 dhcpfullforce

Указание ключа dhcpfullforce позволит нам удалить область, даже если там остались выданные адреса. Если мы не хотим удалять область с адресами, следует ввести параметр dhcpnoforce.

Приведенный сценарий всегда можно модифицировать и применять не только для создания областей, но и для их настройки и удаления. Также не забывайте задействовать функцию Backup в оснастке DHCP для сохранения конфигурации DHCP перед использованием этого или любого другого сценария или же делать дамп конфигурации.

Николай Андрианов - системный администратор в компании «Вагонмаш», а также администратор ресурса www.amdclub.ru. С ним можно связаться по адресу slayer@amdclub.ru