ADG Оставить заявку
Блог Системное администрирование 4 мин чтения

Windows Server 2008 Server Core: ставим DNS и DHCP без единого клика мышью

Server Core - режим установки WS2008 без GUI: никакого Проводника, только netsh и sc.exe. Разворачиваем DNS и DHCP и разбираемся, стоит ли оно того.

Контекст момента

Windows Server 2008 Server Core - первый режим минимальной установки без GUI в экосистеме Microsoft

В феврале мы писали про план миграции и упоминали Server Core вскользь - мол, файловый сервер поставим без GUI. Пришло время разобраться с этим подробнее. Взяли RTM-сборку, выделили тестовую машину и потратили пару дней на то, чтобы поднять DNS и DHCP исключительно командной строкой.

Спойлер: получилось. Но с приключениями.

Что такое Server Core и зачем он нужен

При установке WS2008 появляется вопрос про тип инсталляции. Выбираешь "Server Core" - и получаешь систему, в которой нет Explorer, нет Internet Explorer, нет MMC-оснасток, нет панели управления. Только cmd.exe и набор консольных утилит. Рабочий стол - это буквально пустой экран с командной строкой.

Зачем? Меньше компонентов - меньше патчей - меньше поверхность атаки. Это не маркетинг, это математика: если IE не установлен, его уязвимости вас не касаются. Для серверов, которые делают одну конкретную задачу (DNS, DHCP, файловый сервер, DC), это честная инженерная позиция.

Для клиентов, которых мы сопровождаем, эта идея интересна именно на инфраструктурных ролях - там, где администратор всё равно работает удалённо и GUI на самом сервере не нужен.

Установка роли: ocsetup вместо мастера

Роли добавляются через ocsetup. Синтаксис простой, но названия компонентов надо знать заранее - никакого удобного списка в интерфейсе нет. Открываем документацию и смотрим:

ocsetup DNS-Server-Core-Role
ocsetup DHCPServerCore

Первая команда устанавливает DNS, вторая - DHCP. После каждой перезагрузка не нужна, но sc query покажет, что сервис появился. Это, кстати, приятно - на полном WS2008 после добавления роли мастер иногда просит перезагрузку даже там, где она не нужна.

Настройка DNS через netsh

Зонный файл и записи настраиваются через netsh dnsclient и прямой правкой конфигурации. Создаём первичную зону:

dnscmd . /ZoneAdd example.local /Primary /file example.local.dns
dnscmd . /RecordAdd example.local srv1 A 192.168.1.10

dnscmd - это то, что мы раньше делали через DNS Manager. Всё то же самое, только текстом. Плюс - легко автоматизируется скриптом. Минус - первые полчаса уходят на то, чтобы вспомнить или найти нужные ключи.

Форвардинг настраивается так:

dnscmd . /ResetForwarders 8.8.8.8 77.88.8.8

DHCP: netsh и долгий путь к авторизации

С DHCP чуть интереснее. Сервис поднимается, но не раздаёт адреса, пока не авторизован в Active Directory. На полном сервере это делается через оснастку кнопкой "Авторизовать". Здесь:

netsh dhcp server initiate auth

Если домен недоступен или кредентиалы не те - молчаливый отказ. Никакого GUI с красной иконкой. Пришлось лезть в журнал событий через wevtutil:

wevtutil qe System /f:text /c:20

Это, наверное, главное открытие: диагностика на Server Core требует знать wevtutil. Без него вы слепые.

Пул адресов и исключения:

netsh dhcp server add scope 192.168.1.0 255.255.255.0 "LAN"
netsh dhcp server scope 192.168.1.0 add iprange 192.168.1.100 192.168.1.200
netsh dhcp server scope 192.168.1.0 set optionvalue 3 IPADDRESS 192.168.1.1
netsh dhcp server scope 192.168.1.0 set state 1

Всё работает. DNS-сервер в оснастке другого сервера видно нормально, можно управлять удалённо через Remote Server Administration Tools - это отдельный плюс архитектуры.

Что реально неудобно

Первое - нет блокнота. Ну то есть он есть (notepad.exe запускается), но редактировать конфиги в нём неловко. Прогоняем через copy con или кидаем файлы через сетевой шарой.

Второе - sc.exe для управления сервисами. sc query dns, sc start dns, sc stop dhcpserver - это то, что заменяет Services.msc. Привыкаешь быстро, но первые пару часов путаешься в именах сервисов.

Третье - удалённое управление. MMC с удалённой машины подключается, но требует правильно настроенного межсетевого экрана через netsh advfirewall. Если не настроить сразу - будете биться об отказы в подключении и гадать почему.

Вывод после двух дней

Поднять DNS и DHCP на Server Core реально и, честно говоря, не так страшно, как казалось. Основные инструменты - dnscmd, netsh, sc.exe, wevtutil - покрывают большую часть задач. Документация Microsoft по Core-командам есть, хотя разбросана.

Для инфраструктурных ролей, которые настраиваются один раз и потом просто работают, это вполне рабочий вариант. Навык работы с командной строкой прокачивается неплохо - это побочный эффект, которого мы не планировали, но который оказался полезным.

Сейчас думаем, переводить ли файловый сервер одного из клиентов на Server Core по плану или подождать, пока наберём ещё опыта. Скорее всего, переведём - поставленных задач он выполняет нормально.

Контакт

Нужна такая же инженерная работа?

Опишите задачу и контекст. Ответим в течение рабочего дня, при необходимости подпишем NDA.