dhcpd

Сервер протокола динамического конфигурирования хоста (DHCP)

Синтаксис:

dhcpd [опции...] &

Опции:

-a
Применить назначенный IP-адрес как псевдоним вместо перезаписи текущей конфигурации.
-b
Запросить транслирование ответных пакетов сервером DHCP клиенту. По умолчанию этот режим отключен.
-D идентификатор
Указать идентификатор клиента. Идентификатором по умолчанию является MAC-адрес.
-d
Опция отладки. Не переводить в фоновый режим и выводить ошибки в стандартный поток ошибок stderr. По умолчанию ошибки заносятся в syslogd.
-h имя_хоста
Имя хоста клиента. Значение по умолчанию предоставляется сервером (если доступно).
-I число
Количество опросов во время ожидания доступности интерфейса. Опрос выполняется каждые 2 секунды (значение по умолчанию – 5).
-i интерфейс
Имя настраиваемого интерфейса. Значение по умолчанию – первый из обнаруженных интерфейсов.
-m
Записать данные файла resolv.conf в качестве конфигурационных строк в оперативной памяти (по умолчанию выключено).
-n
Не применять предоставленные DHCP серверы имен.
-P порт
Указать порт сервера. Значением по умолчанию является порт dhcp или порт 67.
-p порт
Указать порт клиента. Значением по умолчанию является порт dhcpc или порт 68.
-r
Добавить .номер_узла к имени файла resolv.conf. По умолчанию не добавляется.
-s хост
Указать предпочтительный сервер; принимать пакеты только от этого сервера.
-T время_в_секундах
Время в секундах, в течение которого следует ожидать завершения согласования клиента с сервером (ACK-сообщение от сервера). Этот ключ применяется при каждом возврате клиента в состояние инициализации (DISCOVER). При таймауте утилита dhcp.client завершает работу со значением статуса завершения "3".
-t число
Попытка установить соединение с сервером определенное число раз перед отменой и завершением работы. Длительность каждой попытки равна 1 минуте. По умолчанию количество попыток неограничено.
-u
Не переводить в фоновый режим до успешного завершения конфигурирования интерфейса.

Платформы:

ЗОСРВ «Нейтрино»

Целевые архитектуры:

aarch64, arm, armv7, e2k, mips, ppc, x86

Описание:


Caution: Для запуска этого сервера пользователю необходимо войти в систему с учетной записью root.

Утилита dhcpd, как правило, выполняется как сервис в фоновом режиме. Она отвечает на запросы IP-адресов и сетевую информацию от клиентов в сети TCP/IP. Эта утилита использует протокол динамического конфигурирования хоста (DHCP) или, с некоторыми ограничениями, интернет-протокол начальной загрузки (BOOTP).


Note: Для поддержки нескольких интерфейсов следует использовать утилиту io-pkt-* с опцией reuseport_unicast.

IP-адресы извлекаются из списка, сохраненного в конфигурационном файле DHCP /etc/dhcpd.conf. Путем внесения в этот файл изменений системный администратор может присвоить статическую конфигурацию известным хостам и динамическую конфигурацию – добавляемым в сеть неизвестным хостам. Для получения дополнительной информации о содержимом этого файла см. описание /etc/dhcpd.conf.

При запуске утилита dhcpd считывает данные из файла /etc/dhcpd.conf и сохраняет в памяти список доступных адресов в каждой подсети. При запросе клиентом адреса с использованием протокола DHCP утилита dhcpd выделяет адрес из этого списка.

При присвоении утилитой dhcpd IP-адреса клиенту она сохраняет подробные данные (например, срок действия) в файле /var/state/dhcp/dhcpd.leases. Этот файл необходимо создать перед первым запуском протокола DHCP:

touch /var/state/dhcp/dhcpd.leases

Для получения дополнительной информации о содержимом файла аренды см. /var/state/dhcp/dhcpd.leases.

В режиме DHCP утилита dhcpd восстанавливает IP-адрес по истечении срока аренды, добавляя его в список /etc/dhcpd.conf.

Однако, поскольку протоколом BOOTP не предусмотрен соответствующий срок дейстия аренды, возможно, потребуется самостоятельно восстановить IP- адреса BOOTP с истекшей арендой. В конфигурационном файле DHCP представлены два оператора, которые помогут обойти эту проблему:

Для получения дополнительной информации, см. раздел "Операторы параметров" в главе /etc/dhcpd.conf.


Note: При внесении любых изменений в файл /etc/dhcpd.conf, необходимо перезапустить утилиту dhcpd (в файле /var/run/dhcpd.pid содержится PID dhcpd).

OMAPI

Существует возможность изменения некоторых параметров конфигурации сервера DHCP во время его работы. Можно изменить файлы базы данных, не останавливая сервер, а затем перезапустить его. В настоящее время такая возможность предоставляется посредством OMAPI – API для управления удаленными объектами. Клиенты OMAPI подключаются к серверу по TCP/IP, проходят аутентификацию, после чего могут анализировать текущее состояние сервера и изменять его.

Вместо непосредственной реализации базового протокола OMAPI, следует настроить использование программами интерфейса API dhcpctl() или самого OMAPI (API). dhcpctl() представляет собой оболочку, которая обрабатывает некоторые из управляющих действий, которые OMAPI не выполняет автоматически.

OMAPI экспортирует объекты, которые затем можно проанализировать и изменить. Сервер DHCP экспортирует следующие объекты: аренда, хост, объект резервирования и группа. Каждому объекту соответствует несколько методов: поиск, создание и уничтожение. Кроме этого, можно выполнить поиск хранящихся в объектах атрибутов и, в некоторых случаях, изменить их.

Объект аренды (lease object)

Возможность создания или уничтожения объектов аренды не предусмотрена, однако можно проверить и изменить их состояние.

Объекты аренды имеют следующие атрибуты:

state целое_число поиск, проверка
1
Свободный.
2
Активный.
3
Истекший.
4
Выпущенный.
5
Брошенный.
6
Сброшенный.
7
Резервная копия.
8
Зарезервированный.
9
Протокол BOOTP.
ip-address данные поиск, проверка
IP-адрес объекта аренды.
dhcp-client-identifier данные поиск, проверка, обновление
Идентификатор клиента, который использовался клентом при приобретении объекта аренды. Поскольку не все клиенты отправляют идентификатор, это поле может быть пустым.
client-hostname данные проверка, обновление
Значение, отправленное клиентом в опции имени хоста.
host описатель проверка
Связанное с этим объектом аренды (если он приобретен) объявление хоста.
hardware-type целое_число проверка, обновление
Тип сетевого интерфейса, о котором сообщил клиент при приобретении объекта аренды.
ends время проверка
Время окончания текущего состояния аренды, согласно информации клиента.
tstp время проверка
Время окончания текущего состояния аренды, согласно информации сервера.
tsfp время проверка
Время окончания текущего состояния аренды, согласно информации резервного сервера (если последний отсутствует, значение является не определенным).
cltt время проверка
Время последней транзакции с клиентом по этому объекту аренды.

Объект хоста (host object)

Существует возможность создания, уничтожения, поиска, проверки и изменения хостов. Если объявление хоста создается или удаляется с использованием OMAPI, эта информация записывается в файл dhcpd.leases. Описанные в файле dhcpd.conf объявления хостов можно удалять.

Хосты имеют следующие атрибуты:

name данные поиск, проверка, изменение
Имя объявления хоста. Это имя должно быть уникальным среди всех объявлений хостов.
group описатель проверка, изменение
Именованная группа связанная с обявлением хоста (при наличии).
hardware-address данные поиск, проверка, изменение
Адрес канального уровня, который необходимо использовать для проверки совпадения клиента (при наличии). Действителен только при наличии типа оборудования.
hardware-type целое_число поиск, проверка, изменение
Тип сетевого интерфейса, который необходимо использовать для проверки совпадения клиента (при наличии). Действителен только при наличии адреса оборудования.
dhcp-client-identifier данные поиск, проверка, изменение
Опция dhcp-клиент-identifier, которая необходимо использовать для проверки совпадения клиента (при наличии).
ip-address данные проверка, изменение
Фиксированный IP-адрес, зарезервированный для клиента DHCP, который соответствует объявлению хоста.

С именованными группами можно выполнять следующие действия: создание, уничтожение, поиск, проверка, изменение. Если объявление группы создается или удаляется с использованием OMAPI, эта информация записывается в файл dhcpd.leases. Можно удалить объявления групп, которые объявлены в файле dhcpd.conf.

В настоящий момент именованные группы можно присваивать только хостам, что позволяет эффективно присоединять набор операторов к нескольким объявлениям хостов. Группы имеют следующие атрибуты:

name данные
Имя группы. У всех групп, созданных с использованием OMAPI, должны быть имена; имена должны быть уникальными среди всех групп.
statements данные
Список операторов в формате файла dhcpd.conf, который будет выполнен при обработке сообщения от клиента, объявление хоста которого ссылается на эту группу.

Управляющий объект (control object)

Управляющий объект позволяет отключить сервер. При передаче сервером управления резервному серверу, сервер выполнит чистый переход в состояние отключения и уведомит об этом резервный сервер. Резервный сервер перейдет в режим обслуживания неисправного состояния сервера-партнера, после чего запишет состояние "восстановления" в файл аренды. Таким образом после перезапуска сервера будет автоматически выполнена его повторная синхронизация с резервным сервером.

При отключении сервер также попытается аккуратно закрыть все соединения OMAPI. Если эти соединения не закрываются аккуратно после пяти секунд, они закрываются с упреждением. С начала процесса отключения до фактического завершения работы сервера может пройти не менее 25 секунд.

Для отключения сервера откройте соответствующий управляющий объект и установите для атрибута состояния значение "2".

Объект резервирования (failover-state object)

Объект резервирования отслеживает состояние протокола резервирования, в то время как последний управляется для определенного резервного сервера. Объект резервирования имеет следующие атрибуты (см. также описание файла dhcpd.conf)

name данные проверка
Указывает имя отношения резервного сервера, как описано в файле dhcpd.conf сервера.
partner-address данные проверка
Указывает IP-адрес резервного сервера-партнера.
local-address данные проверка
Указывает IP-адрес, который используется сервером DHCP для резервного сервера.
mclt целое_число проверка
Указывает максимальное время перенаправления клиента в данной связке резервирования.
load-balance-max-secs целое_число проверка
Указывает максимальное значение для поля "секунды" в запросе клента до блокирования балансировки загрузки.
load-balance-hba данные проверка
Указывает массив хэш-группы балансировки нагрузки для этой связки резервирования.
local-state целое_число проверка, изменение
Указывает текущее состояние сервера DHCP в этой связке резервирования. Возможны следующие значения состояния:
1
Партнер неисправен.
2
Рабочее состояние.
3
Связь прервана.
4
Разрешение прервано.
5
Потенциальный конфликт.
6
Восстановление.
7
Восстановление выполнено.
8
Выключение.
9
Приостановлено.
10
Запуск.
11
Ожидание восстановления.

В общем случае это состояние менять не следует. Однако, если известно, что резервный сервер-партнер неисправен, может оказаться целесообразным установить для сервера DHCP состояние резервирования "партнер неисправен". В этот момент сервер DHCP примет обслуживание аренд резервного сервера-партнера при первой возможности и будет выдавать обычные аренды, а не ограниченные MCLT. Если установить серверу DHCP состояние "партнер неисправен" в то время как другой сервер DHCP находится в отличном от указанного состояния, но, тем не менее, недоступен, вероятно возникновение конфликтов назначения IP-адресов. Как только для сервера установлено состояние "партнер неисправен", возвращение его резервного сервера-партнера в оперативный режим запрещено до тех пор, пока не будет восстановлена связь между этими двумя серверами.
partner-state целое_число проверка
Указывает текущее состояние резервного сервера-партнера.
local-stos целое_число проверка
Указывает время, в которое сервер DHCP вошел в свое текущее состояние в этой связке резервирования.
partner-stos целое_число проверка
Указывает время, в которое резервный сервер-партнер вошел в свое текущее состояние.
skew целое_число проверка
Указывает разницу между системными часами резервного сервера-партнера и этого сервера DHCP.
max-response-delay целое_число проверка
Указывает время в секундах, по истечении которого, если не получено сообщение от резервного сервера-партнера, предполагается, что связь с партнером утеряна.
cur-unacked-updates целое_число проверка
Указывает количество сообщений обновления, которые были получены от резервного сервера-партнера, но еще не обработаны.

Примеры:

Запуск dhcpd со значениями по умолчанию:

dhcpd &

Запуск прослушивания утилитой dhcpd на одном интерфейсе:

dhcpd -i en0

Файлы:

/etc/dhcpd.conf
Конфигурационный файл по умолчанию.
/var/state/dhcp/dhcpd.leases
Содержит информацию об объектах аренды.
/var/run/dhcpd.pid
Содержит номер PID выполняющейся в настоящий момент утилиты dhcpd.
/var/lib/dhcp/dhcpd.leases~
Резервная копия файла dhcpd.leases.

Ошибки:

При возникновении ошибки утилита dhcpd отправляет описание ошибки в syslogd и стандартный поток ошибок stderr, если утилита dhcpd выполняется как приоритетная задача.

Классификация:

Базовые подсистемы ЗОСРВ «Нейтрино»

В ЗОСРВ «Нейтрино» редакции 2020 утилита обновлена до версии 4.1-ESV-R16

Тематические ссылки:

dhcp.client, /var/state/dhcp/dhcpd.leases, /etc/dhcpd.conf, dhcprelay, syslogd

Основано на: RFC2131, RFC2132




Предыдущий раздел: Сервисы