2004 г.
DHCP под Windows XP: полет нормальный
Арсений Чеботарёв, Издательский Дом "КОМИЗДАТ"
Раньше сервером назывались огромные компьютеры, установленные в
закрытом помещении с названием "серверная". Сегодня же каждый второй компьютер в сети
в той или иной степени выполняет серверные функции. О том, как настроить один из таких
сервисов - а именно DHCP - и пойдет речь
Слово DHCP обозначает Dynamic Host Configuration Protocol - то есть
протокол динамической конфигурации клиентских машин. Это один из наиболее важных и полезных
протоколов семейства TCP/IP, помогающий автоматически конфигурировать десятки и сотни
машин одновременно. Что еще немаловажно - многие технологии напрямую зависят от этого
протокола: например, протокол удаленной загрузки PXE явно ищет сервер DHCP для получения
дальнейших указаний по получению загрузочного образа. Сам по себе DHCP - второй, более
новый и распространенный метод сетевой конфигурации. Использовавшийся до этого BOOTP в
последнее время практически вышел из употребления, хотя и поддерживается для гипотетических "legacy-устройств".
В принципе DHCP относится к числу "беспроблемных" протоколов, то есть
все операционные системы в равной мере корректно и консистентно поддерживают его функции
(в отличие от, скажем, системы каталогов DNS и особенно DDNS, вокруг которых постоянно
возникают недоразумения и даже разгораются настоящие войны). Реализация серверной части
в 90% случаев представляет собой известный демон dhcpd, настраиваемый через файл конфигурации.
Другой, распространенный "демОн" :-) - dhcp-сервис, встроенный в Windows
Server. Реализован он, кстати, весьма корректно. Но, как известно, и Linux, и Windows
Server - системы весьма прихотливые, не только требовательные к квалификации пользователя,
но и ограничивающие его геймерскую активность. Но есть и хорошая новость: фактически вам
не нужна "серверная" платформа для установки DHCP-сервера, достаточно обычной Windows
XP. Эта операционная система достаточно стабильна и производительна - в некоторых аспектах
даже в большей мере, чем тот же Windows Server или Линукс (в том числе, по части драйверов).
Turbo DHCP
Расскажем о DHCP на примере реализации DHCP Turbo от Weird Solutions
(сайт компании находится по адресу ). Продукт
полностью бесплатен (в версии personal edition), открыт для скачивания с сайта производителя
(а также находится на нашем диске). Собственно, сам сервер DHCP работает на платформах
Windows NT, Linux и Solaris. Помимо сервера, существует приятный в обращении Turbo DHCP
Manager, который может подключаться как к любому локальному, так и к удаленному серверу
Turbo DHCP по собственному протоколу, защищенному кодировкой Blowfish.
Итак, как всегда, все начинается с инсталляции - для установки понадобится
всего 10 Мб памяти, 8 Мб оперативки и по 2,5 Мб для каждых 1000 адресов, предоставленных
этим сервером. Короче - требования самые несущественные. Все остальное относится к самому
интересному - конфигурации.
Для достоверности предположим, что вы не один в вашей сети - есть еще
несколько администраторов и, соответственно, серверов, в том числе и DHCP. Следует сказать,
что одновременная работа нескольких DHCP-серверов является вполне штатным режимом. Собственно
негоциация (торговля за) IP-адреса происходит в два прохода - сначала хост рассылает запрос
на резервацию, на который серверы отвечают на протяжении некоторого времени. На этом этапе
сервер может проверить наличие свободного IP-адреса, пропинговать его на предмет отсутствия
конфликтов или проверить MAC-адрес на предмет "сервибельности" данного хоста. Сервер всегда
может по той или иной причине отказать клиенту в обслуживании, но вот чего он не может
- так это заставить хост получить установки именно у него. Единственная возможность как-то
повлиять на события - это просто отдавать свой ответ быстрее других серверов. Конечно,
если вы договоритесь с другими DHCP-администраторами, и они будут отказывать в обслуживании "ваших" хостов, то в конце концов вы получите желаемый результат. Но все же самое правильное - это соблюдать соответствие геометрической и логической топологии: просто включайте свой DHCP в один хаб или маршрутизатор с теми хостами, которые он будет обслуживать. Как отказаться от
обслуживания чужих хостов, будет показано чуть ниже.
Опции
Для начала определимся: все параметры, передаваемые от сервера клиенту,
называются опциями. Опции делятся на категории. Существуют обязательные опции, такие как
IP-адрес и маска подсети. Некоторые опции используются только в служебных целях, например
определяют начало и конец списка опций,- вы не сможете настроить их значения, хоть и увидите
их в списке. Остальные же опции необходимы в специальных ситуациях, например при сетевой
загрузке.
Первое, что нужно сделать при настройке DHCP, это определить диапазон
раздаваемых адресов и маску подсети. С точки зрения администрирования маска является даже
более важным параметром. Узнайте у вышестоящего администратора или сами посмотрите в настройках,
в какой подсети вы работаете. Часто используются подсети категории "D" (которой на самом
деле не существует) - то есть маска подсети не выравнивается по границе байта, а имеет
произвольное количество бит. Первый адрес в подсети всегда обозначает саму подсеть, последний
- адрес групповой рассылки, broadcasting. Количество компьютеров в подсети определяется
количеством нулей в конце маски. Возведите двойку в эту степень, вычтите два - и получите
потенциальное количество доступных вам адресов.
Пример расчета подсети
Для примера возьмем мою собственную подсеть: адрес моего сервера 10.0.0.97, маска 255.255.255.224, в бинарном виде - 11111111.1111111.1111111.11100000.
Число нулей в конце маски - пять, то есть два в пятой дает 32. Следовательно, "гранулярность" наших подсетей категории D - 32 адреса. Можно представить, что первая подсеть начинается с адреса 10.0.0.0, второй - 10.0.0.32, третей - 10.0.0.64, четвертой - 10.0.0.96.
На самом деле это совсем не очевидно - может быть, первая подсеть,
начинающаяся с 10.0.0.0, имеет маску 255.255.255.192 == 1111111.11111111.11111111.11000000,
то есть включает 64 адреса. Нас это в данном случае совершенно не интересует - важно,
что мы работаем в адресном пространстве от 10.0.0.96 до 10.0.0.127 и, если хотим, чтобы
наши хосты после запуска попали в одну подсеть с сервером, то выделять адреса должны только
из этого диапазона. Как уже было сказано, первый адрес - это адрес подсети как целого,
последний - броадкастинг, так что они исключаются. Фактически у меня всего (хех) три своих
хоста, которые я собирался конфигурировать через данный сервер, так что мне было достаточно
только трех адресов. После переговоров с нашим администратором пул раздаваемых "пирожков" сократился от 10.0.0.124 до 10.0.0.126. Диапазон адресов и подмаска сети называется scope (видимость) и является одним из основных понятий DHCP, с которым связаны все остальные настройки.
То есть любая настройка относится к той или иной области.
Основные параметры для Windows-клиентов
Следующее, что нас интересует после создания области (дополнительно
можно задать еще несколько параметров), это именно параметры, которые мы раздаем хосту,
помимо его IP и маски. Как правило, три из них имеют важное значение: маршрутизатор по
умолчанию, DNS-сервер и WINS-сервер. Эти параметры, как уже было сказано, задаются опциями.
Опции - это хорошо документированные переменные, имеющие номер и имя, так что в случае
сомнений относительно терминологии всегда можно сослаться на опцию по номеру. Номера могут
быть как положительными, так и отрицательными, причем вы можете определить и собственные
опции с номерами больше 128 - другое дело, какая система сможет их использовать. Опции,
помимо прочего,- типизованные значения, то есть они могут быть как числами и строками,
так и специальными типами, вроде IP- или MAC-адреса.
Итак, главные опции: 3 (Gateways), 6 (Domain Name Servers), 44 (NBT
Name Servers), 46 (NBT Node Type). Несколько пояснений - во-первых, как вы видите, все
параметры групповые, то есть подразумевают несколько значений, чем вы можете воспользоваться.
WINS настраивается через параметры NBT - опция 44 указывает на сервер, а опция 46 должна
быть равна 8 (hybrid). Все указанные опции вы добавляете на закладке Policies.
Проверить настройки можете сразу же после сохранения их в менеджере
Turbo DHCP. Для этого даже не обязательно перезагружать клиентскую машину - достаточно
сбросить параметры интерфейсов и получить их с сервера заново:
ipconfig /release
ipconfig /renew
ipconfog /all
Хотя это вовсе и не обязательно, но вы можете получить у DHCP-сервера
любые дополнительные параметры для загружаемой машины, например суффикс доменного имени
(опция 15), имя DHCP-сервера (опция 20), сетевое имя хоста (опция 12) и так далее.
Хочется отметить, что Линукс (как, впрочем, и многие другие) клиенты
используют DHCP значительно более интенсивно, дополнительно получая адреса X-сервера,
сервера шрифтов, NIS/NIS+ серверы и домены, серверы POP, SMTP, NNTP и множество других
опций.
Ограничение сервибельности
Важный вопрос - как отказаться от чужих сетевых MAC-адресов и обслуживать
лишь несколько подопечных хостов? Ведь, как правило, вы не хотите устанавливать мост и
отрезать подопечные компьютеры от остальной сети - это потребует дополнительного сервера
с двумя интерфейсами, а также настройки маршрутизации и т.д. Этого и не нужно делать
- достаточно определить ваш сервер как приватный. Сделать это можно на закладке Свойства
сервера, доступной по правой кнопке мыши над именем сервера.
После определения вашего сервера как приватного он будет отказывать
в обслуживании всем хостам, кроме тех, сетевые MAC-адреса которых указаны в появляющейся
папке Registrations. Это, конечно, прибавит работы по поиску этих адресов - зато теперь
вы сможете очень прецизионно контролировать каждый параметр.
Удаленная загрузка
Напоследок перечислю несколько опций, необходимых для настройки удаленной
(сетевой) загрузки хостов. Итак, помимо обязательных параметров вам понадобится всего
два параметра: -1 имя загружаемого образа и -14 адрес TFTP-сервера. По крайней мере, для
прошивки PXE, которая стоит на современных карточках, этого вполне достаточно.
Кстати, у меня с этой загрузкой случилась небольшая кошмарная история,
обстоятельствами которой я с вами поделюсь. Ситуёвина: грузится комп по бездисковой схеме,
при PXE все проходит нормально, грузится операционка, но при ее загрузке IP и настройки
берутся не с моего сервера, а с другого, где все "как ненужно". Я был в шоке буквально
три секунды! Оказывается, что как-то, во времена, когда у меня не было сервера, я прописал
в драйвер сетевого интерфейса (карточки) софт-MAC - почти все современные карточки это
позволяют. Нужно это было по той причине, что у нас адреса раздаются по фиксированному
лизинговому плану: на каждый MAC - определенный IP, а все остальные - на фиг. Карточки
менялись, а будить админа каждый раз была неохота… Ну, вот с этим-то "голимым маком" мой
комп и ломился к моему же частному серверу, который настроен только на обслуживание определенных
сетевых адресов. Накладочка вышла, однако. А я уже начал думать, что определение "любимого" DHCP
недетерминировано, и может отличаться для PXE BIOS и операционки - хотя, как знать, наверное,
может и такое случиться в сложной сети, если какой-то участок "приляжет" или ботлнек где-то
зафакапится на время. Но вы должны избегать такой непонятки всеми битами своей бинарной
души.
Короче: поднимайте свой DHCP, настраивайте его как следует - и вам
не нужно будет бегать за системных администратором хотя бы по этому вопросу. Удачного
DHCP'инга.