Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Серверы Linux. Часть IV. Сервер DHCP

Оригинал: Introduction to DHCP
Автор: Paul Cobbaut
Дата публикации: 24 мая 2015 г.
Перевод: A.Панин
Дата перевода: 13 июля 2015 г.

Глава 6. Вводная информация о сервере DHCP

Протокол динамической настройки узла (Dynamic Host Configuration Protocol или кратко DHCP) является стандартным протоколом из семейства протоколов TCP/IP, предназначенным для распределения IP-адресов между клиентскими системами. Протокол DHCP описан в стандарте RFC 2131 (до выпуска данного стандарта он описывался в качестве дополнения к протоколу BOOTP в стандартах RFC 1531/1541).

Альтернативой использованию протокола DHCP является ручной ввод IP-адресов на каждом из клиентских компьютеров.

6.1. Четыре широковещательных передачи данных

Протокол DHCP использует широковещательные передачи данных уровня 2 сетевой модели OSI. После запуска клиент DHCP отправляет широковещательный запрос обнаружения серверов DHCP (DHCP discover) по сети. Все серверы DHCP (получившие необходимые данные) отправят в ответ предложение DHCP (DHCP offer). После этого клиент выберет одно из предложений серверов DHCP и отправит запрос DHCP (DHCP request), содержащий информацию о выбранном предложении. В большинстве случаев сервер DHCP отвечает на запрос подтверждением DHCP (DHCP ack(knowledge)).

Упомянутые широковещательные передачи данных в случае перехвата с помощью сниффера Wireshark выглядят следующим образом.

Четыре широковещательных передачи данных

После окончания описанной процедуры клиент может использовать полученные данные конфигурации до момента истечения времени их действия (lease time).

6.2. Графическое изображение принципа работы протокола DHCP

В данном примере мы будем рассматривать небольшую сеть с двумя серверами DHCP с именами DHCP-SRV1 и DHCP-SRV2, а также двумя клиентами (SunWS1 и SunWS2). Все компьютеры соединены с помощью хаба или коммутатора (изображенного в центре). От каждого из четырех компьютеров проведен кабель для подключения к хабу (кабели не показаны на иллюстрации).

Графическое изображение принципа работы протокола DHCP

  1. Клиент с именем SunWS1 отправляет запрос обнаружения серверов DHCP по сети. Все компьютеры получают данный запрос ввиду использования широковещательной передачи данных.

  2. Оба сервера DHCP отправляют предложение DHCP в ответ. Сервер DHCP-SRV1 является выделенным сервером DHCP и отправляет предложение DHCP быстрее, чем сервер с именем DHCP-SRV2 (который также является файловым сервером).

  3. Клиент выбирает предложение сервера с именем DHCP-SRV1 и отправляет запрос DHCP с информацией о нем по сети.

  4. Сервер DHCP с именем DHCP-SRV1 отправляет подтверждение DHCP в ответ.

Все четыре описанных широковещательных передачи (или пять, если считать оба предложения DHCP) могут быть осуществлены на уровне 2 сетевой модели OSI с указанием MAC-адреса ff:ff:ff:ff:ff:ff (Ethernet broadcast) и на уровне 3 сетевой модели OSI с указанием IP-адреса 255.255.255.255 (IP broadcast).

Аналогичный пример можно найти в стандарте RFC 2131.

6.3. Установка сервера DHCP в дистрибутиве Debian/Mint

Ниже показан процесс установки сервера DHCP в дистрибутиве Debian/Mint.

debian5:~# aptitude install dhcp3-server
Чтение списков пакетов  Готово
Построение дерева зависимостей      
Чтение информации о состоянии  Готово
Reading extended state information      
Initializing package states... Done
Reading task descriptions... Done  
НОВЫЕ пакеты, которые будут установлены:
  dhcp3-server 

После установки пакета программного обеспечения вы получите доступ к конфигурационному файлу с множеством примеров.

debian5:~# ls -l /etc/dhcp3/dhcpd.conf 
-rw-r--r-- 1 root root 3551 2011-04-10 21:23 /etc/dhcp3/dhcpd.conf

6.4. Установка сервера DHCP в дистрибутиве RHEL/CentOS

Установка осуществляется достаточно просто с помощью утилиты yum.

[root@rhel71 ~]# yum install dhcp
Загружены модули: product-id, subscription-manager
Разрешение зависимостей
--> Проверка сценария
---> Пакет dhcp.x86_64 12:4.2.5-36.el7 помечен для установки
--> Проверка зависимостей окончена

Зависимости определены

================================================================================
 Package                   Архитектура
                                  Версия                  Репозиторий     Размер
================================================================================
Установка:
 dhcp       x86_64       12:4.2.5-36.el7         rhel-7-server-rpms       510 k

Итого за операцию
================================================================================
Установить  1 пакет

Объем загрузки: 510 k
Объем изменений: 1.4 M
Is this ok [y/d/N]: y
Downloading packages:
dhcp-4.2.5-36.el7.x86_64.rpm                               | 510 kB   00:01
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Установка  : 12:dhcp-4.2.5-36.el7.x86_64                                  1/1
  Проверка   : 12:dhcp-4.2.5-36.el7.x86_64                                  1/1

Установлено:
  dhcp.x86_64 12:4.2.5-36.el7
Выполнено!
[root@rhel71 ~]#

После установки пакета программного обеспечения мы получим доступ к файлу конфигурации /etc/dhcp/dhcpd.conf, в котором находится ссылка на пример файла конфигурации с именем dhcpd.conf.sample.

[root@rhel71 ~]# cat /etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.example
#   see dhcpd.conf(5) man page
#
[root@rhel71 ~]#

Таким образом, мы можем просто скопировать пример файла конфигурации и модифицировать его копию в соответствии с нашими реальными потребностями. Именем копии примера файла конфигурации будет /etc/dhcp/dhcpd.conf.

[root@rhel71 ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
[root@rhel71 ~]# vi /etc/dhcp/dhcpd.conf
[root@rhel71 ~]# cat /etc/dhcp/dhcpd.conf
option domain-name "linux-training.be";
option domain-name-servers 10.42.42.42;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;

subnet 10.42.0.0 netmask 255.255.0.0 {
  range 10.42.200.11 10.42.200.120;
  option routers 10.42.200.1;
}
[root@rhel71 ~]#

Параметр 'routers' является действительным лишь для одной подсети, в то время, как параметр 'domain-name' является глобальным (действительным для всех подсетей).

Время запустить службу сервера. Помните о том, что для этого следует использовать команду systemctl start dhcpd в дистрибутивах RHEL7/CentOS7 или команду service dhcpd start в предыдущих версиях дистрибутивов RHEL/CentOS.

[root@rhel71 ~]# systemctl start dhcpd
[root@rhel71 ~]#

Предыдущий раздел: Оглавление Следующий раздел:
5.4. Пример: использование механизма изменения ответов сервера DNS в зависимости от источников запросов   6.5. Резервирование конфигураций клиентов