Библиотека сайта rus-linux.net
Технологии Интернет. Лабораторный практикум
Тема 3. ДИНАМИЧЕСКОЕ ПРИСВОЕНИЕ IP-АДРЕСОВ
- Протокол DHCP
- DHCP сервер под Unix
- DHCP сервер под Windows NT
- DHCP-клиент под Unix
- DHCP-клиент под Windows
- Задание
Литература и ссылки
- Craig Hunt "TCP/IP Network Administration", 9.5. DHCP - O'Reilly, Second Edition, December 1997 ; ISBN 1-56592-322-7, 630 pages.
- Оригинальный сайт DHCPD в Internet Software Consortium (дистрибутив, документация).
- man dhcpd, man dhcpd.conf, man dhclient, man dhclient.conf
- RFC 2131, 2132, 951
Используемое ПО:
- Unix (Solaris 2.x),
- DHCP v 2.0 или 3.0 (распространяется свободно).
См. архив на Уране.
Протокол DHCP
В этой теме изучается работа с протоколом DHCP (Dynamic Host Configuration Protocol, RFC 2131, 2132), предназначенным для автоматической настройки параметров стека TCP/IP рабочей станции в момент ее загрузки.
Эти данные передаются рабочей станции сервером DHCP после того, как станция во время своей загрузки выдаст широковещательный запрос параметров своей конфигурации, на который и откликается сервер. Данные конфигурации включают в себя IP-адрес рабочей станции, а также (опционально) адреса маршрутизатора (шлюза) и сервера DNS, имя домена и т.п.
Процесс взаимодействия сервера и клиента происходит в следующем порядке. Сервер получает запрос и откликается с предложением об аренде (lease), содержащим конфигурационные данные для хоста; ресурс, содержащийся в предложении, временно блокируется для предложения другим хостам до получения ответа от хоста или истечения тайм-аута. Хост может получить предложения от нескольких DHCP-серверов, работающих в его сети. Хост, на основании настроек своего DHCP-клиента, решает принять предложение определенного сервера (или принять первое поступившее предложение, если никаких настроек нет). Хост отвечает выбранному серверу сообщением "выбор". Сервер подтверждает выдачу аренды; после получения подтверждения хост конфигурирует себя в соответствии с полученными данными.
Один DHCP-сервер может работать в нескольких сетях. Для этого в каждой сети должен быть сконфигурирован DHCP-relay - специальный посредник, который будет ретранслировать сообщения между сервером и хостом, запросившим конфигурацию. Без посредника DHCP-сервер не услышит запросов, так как широковещательные IP-дейтаграммы не выходят за пределы IP-сети.
IP-адрес, присваиваемый рабочей станции, может браться сервером из пространства специально для этого выделенных адресов (берется первый свободный адрес). В этом случае у рабочей станции нет постоянного IP-адреса.
IP-адрес, присваиваемый конкретной рабочей станции, может быть и фиксированным, для этого надо знать MAC-адрес (Ethernet-адрес) рабочей станции и соответствующим образом настроить сервер.
В любом случае использование DHCP позволяет избежать конфигурирования стека TCP/IP на каждом хосте сети отдельно и проводить гибкую, централизованную административную политику.
DHCP сервер под Unix
В лабораторных работах используется DHCP сервер от Internet Software Consortium.
Сервер состоит из программы-демона dhcpd, ее конфигурационного файла /etc/dhcpd.conf и файла dhcpd.leases, в который сервер заносит информацию о выделенных адресах. Для работы с сервером необходимо создать конфигурационный файл, после чего запустить программу-демон.
В конфигурационном файле определяются пространства IP-адресов, назначаемых клиентам, дополнительная информация по конфигурации стека TCP/IP, передаваемая клиентам, а также описываются хосты, которым назначаются фиксированные IP-адреса (по MAC-адресу хоста).
В начале файла можно указать глобальные опции, передаваемые всем клиентам, например:
option domain-name "vvsu.ru"
Далее для каждой обслуживаемой сервером IP-сети создается отдельный раздел, где указываются
- маска сети (netmask);
- диапазон(ы) выдаваемых IP-адресов (range);
- время по умолчанию, на которое выдается адрес, в секундах (default-lease-time);
- максимальное время, на которое может быть выдан адрес, если хост запрашивает конкретное время, в секундах (max-lease-time);
- дополнительные опции (option), передаваемые клиентам, например:
- маска сети, передаваемая клиенту (subnet-mask);
- широковещательный адрес (broadcast-address);
- адреса шлюзов (для маршрута по умолчанию) (routers);
- имя домена (domain-name);
- адреса DNS-серверов (domain-name-servers).
Если какая-либо из опций уже определена глобально, то локальная опция заменяет значение глобальной опции для данной сети.
Пример конфигурации для обслуживаемой сети:
subnet 194.84.124.0 netmask 255.255.255.0 { range 194.84.124.100 194.84.124.127; range 194.84.124.200 194.84.124.254; default-lease-time 600 max-lease-time 7200; option subnet-mask 255.255.255.0; option broadcast-address 194.84.124.255; option routers 194.84.124.1; option domain-name-servers 194.84.124.4, 193.232.88.17; }
Для каждого из хостов, которым выдается фиксированный адрес, создается отдельный раздел с заголовком "host hostname", где hostname - имя хоста. Внутри раздела указываются MAC-адрес хоста (в случае Ethernet: hardware ethernet address) и IP-адрес, выдаваемый хосту (fixed-address IP-address). Также могут указываться опции такие же, как и для сети. Если опции не указаны, хосту будут переданы опции, определенные в разделе конфигурации сети, в которой находится хост, или глобальные опции, в порядке приоритета.
Пример раздела конфигурации хоста:
host ocean { hardware ethernet 08:00:26:4c:54:23; fixed-address 194.84.124.24; option domain-name-servers 194.84.124.4; }
Хосты можно объединять в группы, с указанием опций, общих для всех хостов данной группы, перед разделами с описанием хостов:
group { option domain-name-servers 194.84.124.4; host ocean { ... } host sea { ... } }
Запуск программы dhcpd может осуществляться в файле начальной загрузки типа /etc/rc/* (детали зависят от вида операционной системы, в Solaris это файл /etc/rc2.d/S72inetsvc). Некоторые параметры командной строки:
dhcpd [-p port] [-cf configfile] [if0 [...ifN]]
где port - номер UDP порта, если он отличается от стандартного (67); configfile - имя конфигурационного файла, если это не ./dhcpd.conf; if0 ... ifN - сетевые интерфейсы, обслуживаемые демоном (если у хоста несколько интерфейсов).
DHCP сервер под Windows NT
Windows NT имеет поставляемый с системой сервер DHCP. Для работы этого сервера необходимо:
1. В настройках сети (Настройки - Панель управления - Сеть), в разделе Services добавить Microsoft DHCP Server.
2. Запустить сервер через Control Panel - Services - DHCP Server кнопкой Start.
3. Сервер настраивается с помощью программы DHCP Manager, запускаемой из раздела Administrative Tools.
Для каждого из серверов (программа позволяет управлять несколькими серверами) существует один или несколько контекстов (scope), описывающих конфигурацию и настройки сервера для той или иной сферы действия. В простейшем случае имеется один сервер с одним контекстом. Серверы и их контексты показываются в левой части окна программы.
Если контекста нет, его следует создать через меню Scope-Create. Существующий контекст можно редактировать через меню Scope-Properties. В конфигурации контекста указывается диапазон IP-адресов, выделенный для динамического распределения адресов для клиентов, а также поддиапазоны, которые следует исключить (exclude) из этого диапазона. Параметр Lease Duration указывает максимальную продолжительность использования IP-адреса клиентом; значение Unlimited определяет неограниченное время использования.
Меню Scope-Reservations позволяет зафиксировать IP-адреса за определенными хостами (точнее, за определенными Ethernet-адресами). Ethernet-адрес указывается в поле Unique Identifier.
Передача клиентам дополнительной информации (адрес шлюза, адрес DNS-сервера и доменное имя и т.п.) конфигурируется через меню DHCP Options (Global - для всех контекстов, Scope - для данного контекста). Выберите нужные опции, активизируйте их с помощью кнопки Add и укажите значения требуемых параметров для каждой опции.
Опции для клиентов с фиксированными адресами устанавливаются через меню Scope - Active Leases, далее двойным щелчком вызвать свойства нужного клиента.
Для ввода контекста в действие используйте меню Scope-Activate (Deactivate - для отключения контекста).
DHCP-клиент под Unix
DHCP клиент под Unix (от Internet Software Consortium) состоит из программы dhclient, конфигурационного файла /etc/dhclient.conf и файла dhclient.leases в который клиент заносит информацию о выданных ему адресах и настройках. Для запуска клиента во время загрузки системы используется специальный скрипт (сценарий оболочки), поставляемый с клиентом в каталоге scripts (для разных типов Unix свои скрипты). Он подготавливает сетевые интерфейсы для конфигурирования с помощью DHCP, потом активизирует DHCP клиента. Этот скрипт должен быть скопирован в /etc под именем dhclient-script.
Конфигурационный файл в большинстве случаев очень прост и часто он даже может быть пуст. Ниже приведен ряд полезных директив конфигурационного файла dhclient.conf. Директивы завершаются точкой с запятой.
timeout time;- если через time секунд ответ от сервера не получен, хост пытается сконфигурироваться самостоятельно, используя информацию о предыдущих конфигурациях из файла dhclient.leases (если их срок годности не истек) или используя статически установленные конфигурации; каждая такая конфигурация-кандидат проверяется на работоспособность. Формат записи конфигураций - см. man dhclient.conf. В случае неудачи попытка соединения с сервером повторяется в соответствии с параметром retry; значение timeout по умолчанию - 60 с;
retry time;- период повторных попыток соединения с сервером в случае неудачи; измеряется в секундах, по умолчанию - 300 с;
request option;- запросить у сервера передачу опции option;
require option;- в случае, если сервер не передал опцию option, отвергнуть конфигурацию, предложенную сервером;
send option declaration;- передать серверу значение declaration опции option, например:
send requested-lease-time 7200;- запросить выделение IP-адреса на 7200 секунд;
default option declaration;- установить значение declaration для опции option, если сервер не передал эту опцию;
supersede option declaration;- установить значение declaration для опции option, независимо от того, что передал сервер;
prepend option declaration;- добавить значение для опции к значению, переданному сервером, поставив свое значение первым;
append option declaration;- добавить значение для опции к значению, переданному сервером, поставив свое значение последним.
Директивы prepend и append должны использоваться только для опций, допускающих множественные значения, иначе результат получится непредсказуемым.
reject ip_address;- не принимать предложения от DHCP-сервера, который идентифицирует себя адресом ip_address.
interface "if_name" { директивы }- если у компьютера несколько интерфейсов, директивы в разделе interface будут относиться к конфигурации интерфейса if_name. Интерфейсы, не имеющие соответствующих разделов в конфигурационном файле, будут конфигурироваться с учетом глобальных директив или по умолчанию.
DHCP-клиент под Windows
DHCP-клиент под Windows активизируется через Настройки - Панель управления - Сеть - TCP/IP - Свойства - IP-адрес - Получить IP-адрес автоматически. Если на хосте не сконфигурированы параметры DNS и адрес шлюза, они будут получены от DHCP-сервера, иначе будут использоваться уже имеющиеся настройки.
В случае отсутствия DHCP-сервера в сети при включенном автоматическом получении IP-адреса хост присвоит себе адрес самостоятельно. В этом случае возможно отсутствие коннективности из-за некорректного адреса.
Задание
Сконфигурировать DHCP-серверы на Аресах 1 и 2, DHCP-клиенты на Аресах 3,4,5 в соответствии с нижеследующим.
Арес-1 и Арес-2 являются DHCP-серверами, выдающими адреса в сети 212.16.196.0/24 (default router - 212.16.196.1). Первый выдает адреса в диапазоне 10-20, второй 40-50. Арес-3 получает адрес от Ареса-1, Арес-4 получает адрес от Ареса-2. Арес-5 получает адрес от DHCP-сервера ВГУЭС.
Обеспечить прием предложений только от "своего" сервера. Обеспечить разумную конфигурацию всех необходимых параметров стека TCP/IP даже в том случае, когда сервер не предоставил необходимых данных.
Для Ареса-1 и Ареса-2 выдавать сначала динамические адреса, потом фиксированные (по Ethernet-адресу).
Добиться полной коннективности. Каждый студент должен участвовать как в конфигурировании сервера, так и клиента.