Лекция 12 - Служба DHCP. Протокол DHCP. Протокол BOOTP.
- Протокол динамического конфигурирования ЭВМ DHCP - Семенов Ю.А. (ГНЦ ИТЭФ) (фактически перевод RFC2131)
- Протокол загрузки BOOTP - Семенов Ю.А. (ГНЦ ИТЭФ) (фактически перевод RFC0951 и RFC1048)
- BOOTP: протокол загрузки
- Протокол BOOTP
- Resources for DHCP - http://www.dhcp.org/
12.1 Служба DHCP.
DHCP (Dynamic Host Configuration Protocol) - протокол динамической конфигурации хоста.
DHCP является расширением и дополнением протокола BOOTP, который предназначен для выдачи IP-адресов бездисковым машинам.
Используется транспортный протокол UDP.
DHCP построен по схеме клиент-сервер.
Сервер должен отвечать на пакеты с IP-адресом 255.255.255.255, т.к. клиент может не знать где находится (какая IP-сеть, какой IP-адрес у DHCP).
Порт сервера по умолчанию 67.
Порт клиента по умолчанию 68.
Механизмы выделения IP-адресов сервером DHCP:
-
Динамическое присвоение - присваивает клиенту IP-адрес на ограниченное время.
-
Ручное выделение - IP-адрес клиента привязывается к адресу канального уровня (MAC-адрес для Ethrnet) клиента в базе DHCP, сетевым администратором.
Основные компоненты службы:
-
DHCP клиент
-
DHCP сервер
-
Relay Agent (агент пересылки) BOOTP - хост (маршрутизатор), который осуществляет связь между клиентом и сервером DHCP. В 2001г принят стандарт DHCP Relay Agent - RFC3046, и в следующей версии, наверное, будет DHCP Relay Agent вместо Relay Agent BOOTP. В старой версии (RFC0951) Relay Agent назывался BOOTP forwarding agents.
-
Binding (сопряжение) - совокупность конфигурационных параметров, включая, как минимум, IP-адрес, присваиваемый DHCP-клиенту.
12.2 Протокол BOOTP.
Создан для загрузки бездисковых машин.
Стандарт BOOTP - RFC0951 (Bootstrap Protocol W.J. Croft, J. Gilmore Sep-01-1985).
Последняя версия дополнений для BOOTP - RFC1542 (Clarifications and Extensions for the Bootstrap Protocol W. Wimer October 1993). Введено понятие Relay Agent.
Первая версия расширения разработчиков (поле vend) для BOOTP - RFC1048 (BOOTP vendor information extensions P.A. Prindeville Feb-01-1988).
Последняя версия расширения разработчиков (поле vend) для BOOTP - RFC2132 (DHCP Options and BOOTP Vendor Extensions S. Alexander, R. Droms March 1997).
BOOTP является прототипом DHCP, в DHCP есть все что было в BOOTP.
Поэтому BOOTP подробно рассматривать не будем.
12.3 Протокол DHCP.
Первый стандарт DHCP - RFC1531 (Dynamic Host Configuration Protocol R. Droms October 1993).
Последняя версия DHCP - RFC2131 (Dynamic Host Configuration Protocol R. Droms March 1997).
Последняя DHCP версия для IPv6 - RFC3315 (Dynamic Host Configuration Protocol for IPv6 (DHCPv6) R. Droms, Ed., J. Bound, B. Volz, T. Lemon, C. Perkins, M. Carney July 2003).
Последняя версия дополнительных параметров (поле OPTIONS) для DHCP - RFC2132 (DHCP Options and BOOTP Vendor Extensions S. Alexander, R. Droms March 1997).
Формат DHCP-пакета. Слова по 32 бита.
Назначение полей DHCP-сообщения
Поле | Значения | Описания |
OP | 1 - запрос (BOOTREQUEST) 2 - ответ (BOOTREPLY) |
Код операции |
HTYPE | 1- для 10Мбитного Ethrnet .... |
Тип адреса канального уровня (смотри раздел ARP в RFC "Assigned Numbers") |
HLEN | 6- для 10Мбитного Ethrnet .... |
Длина адреса канального уровня |
HOPS | 0 - выставляет клиент | Используется relay-агентом, каждый relay-агентом увеличивает на 1. |
XID | случайное число, устанавливается клиентом |
Идентификатор транзакций |
SECS | секунды | Время с загрузки сетевого модуля клиента |
FLAGS | 1000000000000000 - BROADCAST (левый бит) |
Флаги (пока используется только для BROADCAST) |
CIADDR | 192.168.20.6 (пример) | IP-адрес клиента (запрос) |
YIADDR | 192.168.20.7 (пример) | IP-адрес клиента (ответ) |
SIADDR | 192.168.20.8 (пример) | IP-адрес следующего сервера DHCP (например для, доставки образа операционной системы |
GIADDR | 192.168.20.9 (пример) | IP-адрес relay-агента, используется когда загрузка осуществляется через посредника. |
CHADDR | 00-02-44-10-36-E3 (пример Ethrnet) | Адрес клиента канального уровня |
SNAME | ipm.kstu.ru (пример) | Имя узла сервера DHCP |
FILE | Имя файла загрузки и др. информация для идентификации загрузочной части сетевого обеспечения клиента | |
OPTIONS | Дополнительные параметры |
Типы дополнительных параметров (поле OPTIONS) DHCP-сообщения (RFC2132)
Тип | Тип (перевод) | Код | Длина (байт) | Описания |
Vendor Extensions (расширения разработчиков для BOOTP) | ||||
Pad | Заполнитель | 0 | 1 | Нули - используются для заполнения неиспользуемых полей до полного слова |
Subnet Mask | Маска подсети | 1 | 4 | Маска подсети в локальной сети |
Time Offset | Смещение времени | 2 | 4 | Смещение времени по UTC (Coordinated Universal Time) (для Москвы -10800(-3ч)) |
Router | Маршрутизаторы | 3 | N | Список IP-адресов N/4 маршрутизаторов |
Time Server | Серверы времени | 4 | N | Список IP-адресов N/4 серверов времени (спецификация RFC868) |
Name Server | сервер имен | 5 | N | Список IP-адресов N/4 серверов имен (спецификация IEN 116) |
Domain Name Server | DNS сервер | 6 | N | Список IP-адресов N/4 DNS-серверов (спецификация RFC1035) |
Log Server | Log-сервер | 7 | N | Список IP-адресов N/4 log-серверов (MIT-LCS UDP) |
Cookie Server | Сервер квот | 8 | N | Список IP-адресов N/4 серверов квот (спецификация RFC865) |
LPR Server | Сервер печати | 9 | N | Список IP-адресов N/4 серверов печати (спецификация RFC1179) |
Impress Server | Impress | 10 | N | IP-адреса N/4 impress-серверов |
Resource Location Server | RLP-сервер | 11 | N | IP-адреса N/4 RLP серверов (спецификация RFC887) |
Host Name | Имя хоста | 12 | N | Имя клиента |
Boot File Size | Размер Boot-файла | 13 | 2 | размер boot-файла, размер в блоках по 512 байт, записывается 16-м виде |
Merit Dump File | Файл образа памяти | 14 | N | Путь к файлу в который клиент должен выгрузиться образ памяти (core image) в случае клиентского сбоя. путь - символьная строка, состоящая из символов от NVT набор символов ASCII. |
Domain Name | Имя домена | 15 | N | Имя домена |
Swap Server | Своп сервер | 16 | 4 | IP-адрес своп сервера |
Root Path | Корневой каталог | 17 | N | Путь к корневому каталогу клиента |
Extensions Path | Путь к расширению | 18 | N | Путь к расширению BOOTP |
IP Layer Parameters per Host (параметры уровня IP для хоста) | ||||
IP Forwarding | Форвард IP | 19 | 1 | Форвард IP значения 0/1 (Enable/Disable) |
Non-Local Source Routing | Маршрутизация нелокальных пакетов | 20 | 1 | Маршрутизация нелокальных пакетов, значения 0/1 (Enable/Disable) |
Policy Filter | Фильтр-список | 21 | N | Фильтр-список (IP и маска) N/8 Non-Local Source Routing |
Maximum Datagram Reassembly Size | Максимальный размер сборки датаграммы | 22 | 2 | Максимальный размер сборки датаграммы клиента |
Default IP Time-to-live | Время жизни пакета IP | 23 | 1 | Время жизни пакета IP, значения от 1 до 255 |
Path MTU Aging Timeout | Время старения ...? | 24 | 4 | Время старения ...? (в секундах) |
Path MTU Plateau Table | Таблица ...? | 25 | N | Таблица ...? |
IP Layer Parameters per Interface (параметры уровня IP для интерфейса) | ||||
Interface MTU | MTU интерфейса | 26 | 2 | Максимальный блок данных для интерфейса |
All Subnets are Local | Все подсети и локальную сеть | 27 | 1 | Если подсети и локальная сеть используют одинаковый MTU то 0. (значения 0/1) |
Broadcast Address | broadcast адрес | 28 | 4 | broadcast адрес для подсети клиента |
Perform Mask Discovery | Исполнить открытие маски | 29 | 1 | Исполнить открытие маски с помощью ICMP (значения 0/1 (Disable/Enable)) |
Mask Supplier | Поставка мски | 30 | 1 | Должен ли клиент отвечать на запросы маски подсети с помощью ICMP(значения 0/1 (Disable/Enable)) |
Perform Router Discovery | Исполнить открытие маршрутизатора | 31 | Клиент должен обратиться к маршрутизаторам, используя механизм открытия маршрутизатора, определенный в RFC1256 |
|
Router Solicitation Address | Адрес ходатайства маршрутизатора | 32 | 4 | Адрес, к которому клиент должен передать запросы к маршрутизатору |
Static Route | Статические маршруты | 33 | N | Маршруты состоят из списка IP пар адресов. Первый адрес является адресом источника, и второй адрес - маршрутизатор цель. |
Link Layer Parameters per Interface (параметры уровня связи для интерфейса) | ||||
Trailer Encapsulation | Формирование пакета завершителя | 34 | 1 | Клиент должен вести переговоры на использование завершителей (RFC 893) при использовании протокола ARP. (значения 0/1 (Disable/Enable)) |
ARP Cache Timeout | Время ожидания для кеша ARP | 35 | 4 | Время ожидания для кеша ARP |
Ethernet Encapsulation | Формирование пакета Ethernet | 36 | 1 | Значение 0 указывает, что клиент должен использовать RFC894 для формирования пакета. Значение 1 указывает, что клиент должен использовать RFC1042 формирования пакета. |
TCP Parameters (TCP параметры) | ||||
TCP Default TTL | Время жизни для TCP пакета | 37 | 1 | Время жизни для TCP пакета |
TCP Keepalive Interval | Интервал между посылками Keepalive TCP | 38 | 4 | Интервал между посылками Keepalive при TCP соединении |
TCP Keepalive Garbage | TCP keepalive сообщения с Garbage |
39 | 1 | Клиент должен послать TCP keepalive сообщения с Garbage (значения 0/1 (Disable/Enable)) |
Application and Service Parameters (параметры приложений) | ||||
Network Information Service Domain | Домен сетевой информационной службы | 40 | N | Домен сетевой информационной службы (NIS) |
Network Time Protocol Servers | NTP серверы | 41 | N | Список IP-адресов NTP серверов |
Vendor Specific Information | Специфическая информация поставщика | 42 | N | Смотреть RFC |
NetBIOS over TCP/IP Name Server | Сервер имен NetBIOS | 44 | N | Список IP-адресов NetBIOS серверов имен (WINS-серверов) |
NetBIOS over TCP/IP Datagram Distribution Server | NBDD серверы | 45 | N | Список IP-адресов NBDD серверов (Рассылка дейтограмм NetBios) |
NetBIOS over TCP/IP Node Type | Тип узла NetBIOS | 46 | Тип узла NetBIOS 1 = B-node (only broadcast, no WINS) 2 = P-node (only unicast, WINS only ) 4 = M-node (Mixed, broadcast, then WINS) 8 = H-node (Hybrids, WINS, then broadcast) |
|
NetBIOS over TCP/IP Scope | Ограничение набора символов | 47 | N | Ограничение набора символов для клиента NetBIOS RFC 1001/1002 |
X Window System Font Server | Сервер X Window шрифтов | 48 | N | Список IP-адресов серверов хранящих X Window (графический терминал) шрифты |
X Window System Display Manager | Сервер X Window оконных менеджеров | 49 | N | Список IP-адресов cерверов хранящих X Window оконные менеджеры |
Network Information Service+ Domain | Домен NIS+ | 64 | N | Домен NIS+ |
Network Information Service+ Servers | Серверы NIS+ | 65 | N | Список IP-адресов NIS+ cерверов |
Mobile IP Home Agent | Мобильные домашние IP-агенты |
68 | N | Cписок IP-адресов мобильных домашних IP-агентов, доступных клиенту |
Simple Mail Transport Protocol (SMTP) Server | SMTP - серверы | 69 | N | Cписок IP-адресов SMTP - серверов |
Post Office Protocol (POP3) Server | POP - серверы | 70 | N | Cписок IP-адресов POP - серверов |
Network News Transport Protocol (NNTP) Server | NNTP - серверы | 71 | N | Cписок IP-адресов NNTP - серверов |
Default World Wide Web (WWW) Server | WWW - серверы | 72 | N | Cписок IP-адресов WWW - серверов, по умолчанию |
Default Finger Server | Finger - серверы | 73 | N | Cписок IP-адресов Finger - серверов, по умолчанию |
Default Internet Relay Chat (IRC) Server | IRC - серверы | 74 | N | Cписок IP-адресов IRC - серверов, по умолчанию |
StreetTalk Server | StreetTalk - серверы | 75 | N | Cписок IP-адресов StreetTalk - серверов |
StreetTalk Directory Assistance (STDA) Server | STDA - серверы | 76 | N | Cписок IP-адресов STDA - серверов |
DHCP Extensions (расширения DHCP) | ||||
Requested IP Address | Требуемый IP адрес | 50 | 4 | Используется в запросе клиента DHCPDISCOVER. |
IP Address Lease Time | Время аренды IP адреса | 51 | 4 | Время аренды IP адреса для клиента |
Overload | Перезагрузка | 52 | 1 | Индикатор перезагрузки, значения 1/2/3 (file/sname/оба) |
TFTP server name | Имя сервера TFTP | 66 | N | Имя (sname) сервера TFTP для перезагрузки |
Bootfile name | Имя файла перезагрузки | 67 | N | Имя (file) файла перезагрузки |
DHCP Message Type | Типы DHCP-сообщений | 53 | 1 |
Значения и тип сообщения |
Server Identifier | Идентификатор сервера | 54 | 4 | Идентификатор сервера DHCP |
Parameter Request List | Список запрашиваемых параметров | 55 | N | Список запрашиваемых параметров клиентом, указываются коды из данной таблицы |
Message | Сообщение | 56 | Сообщение об ошибках, используется, когда клиент посылает DHCPNAK или DHCPDECLINE |
|
Maximum DHCP Message Size | Максимальный размер сообщения DHCP | 57 | 2 | Максимальный размер сообщения DHCP в байтах |
Renewal (T1) Time Value | Временной интервал обновления | 58 | 1 | Временной интервал от назначения IP-адреса до обновления (RENEWING) |
Rebinding (T2) Time Value | Временной интервал повторного переопределения | 59 | 4 | Временной интервал от назначения IP-адреса до повторного переопределения (Rebinding) |
Vendor class identifier | Идентификатор класса производителя | 60 | N | Идентификатор класса производителя |
Client-identifier | Идентификатор клиента | 61 | N | Идентификатор клиента, может состоять из пары htype/chaddr |
site-specific options |
Зарезервировано | 128-254 | - | Зарезервировано для специальных опций |
End | Конец | 255 | 1 | Конец списка |
12.4 Механизм динамического выделения адресов.
Выделение происходит при обмене сообщений между сервером и клиентом.
Алгоритм получения:
-
Клиент посылается широковещательный (BROADCAST-255.255.255.255) запрос DHCPDISCOVER всем серверам DHCP.
-
Все активные серверы посылают широковещательный ответ DHCPOFFER. Клиент принимает все ответы, инициализацию делает по адресу канального уровня (MAC-адрес для Ethrnet).
-
Клиент выбирает один из предложенных адресов и посылает широковещательно DHCPREQUEST, которое должно содержать параметр Server Identifier (поле OPTIONS), чтобы указать, какой сервер им выбран.
-
Сервер посылает широковещательно DHCPACK.
-
Клиент может работать.
Пример динамического выделения адреса (пошагово 1,2,3,4)
Типы DHCP-сообщений
Сообщение | Значения | Назначение |
DHCPDISCOVER | Обращение | Клиент посылает сообщение широковещательно, чтобы обнаружить доступный сервер. |
DHCPOFFER | Предложение | Посылает (широковещательно) сервер клиенту в ответ на сообщение DHCPDISCOVER и содержит конфигурационные параметры. Но это только предложение. |
DHCPREQUEST | Запрос | Сообщения клиента серверу:
|
DHCPACK | Подтверждение | Посылается сервером клиенту и содержит конфигурационные параметры. |
DHCPNAK | Неподтвержден | Посылает сервер клиенту, что сетевой адрес не корректен (например, клиент переместился в новую подсеть), или время использования адреса истекло. |
DHCPDECLINE | Отклонение | Посылает сервер клиенту, что сетевой адрес уже используется. |
DHCPRELEASE | Освобождение | Посылается клиентом серверу с целью отказа от IP-адреса. |
DHCPINFORM | Информация | Посылается клиентом серверу с просьбой получить конфигурационные параметры (кроме IP-адреса), клиент уже имеет полученный извне IP-адреса. |
12.4.1 Механизм повторного использования ранее выделеного адреса (RENEWING или Rebinding).
Если клиент сохранил и желает использовать выделенный ранее IP-адрес, он может опустить некоторые шаги алгоритма.
Алгоритм повторного получения:
-
Клиент посылает DHCPREQUEST.
-
Сервер, который узнает конфигурационные параметры клиента, посылает DHCPACK.
-
Клиент может работать.
12.5 База записей DHCP.
Пример файла (dhcpd.leases) содержащего базу выданных IP-адресов. Приведено только две записи.
lease 194.85.241.234 { // Выданный IP-адрес
starts 1 2003/11/17 11:42:13; // Время выдачи
ends 1 2003/11/17 17:42:13; // Время истечения срока аренды
binding state active; // Состояние сопряжения активно (время не истекло)
next binding state free; // Следующее состояние сопряжения свободно (после истечения времени)
hardware ethernet 00:50:22:bb:c0:0d; // etherne