Сервер
протокола динамического конфигурирования хоста (DHCP)
Примечание. Эту утилиту может
выполнить только пользователь root.
Синтаксис:
dhcpd
[опции...]
&
Поддерживаемые платформы:
QNX
Neutrino
Опции:
-a
Применить
назначенный IP-адрес как псевдоним вместо перезаписи текущей
конфигурации.
-b
Запросить
транслирование ответных пакетов сервером DHCP клиенту. По
умолчанию этот режим отключен.
-D
идентификатор
Указать
идентификатор клиента. Идентификатором по умолчанию является
MAC-адрес.
-d
Опция
отладки. Не переводить в фоновый режим и выводить ошибки в
стандартный поток ошибок stderr. По умолчанию ошибки заносятся
в syslogd.
-h
имя_хоста
Имя
хоста клиента. Значение по умолчанию предоставляется сервером
(если доступно).
-I
число
Количество
опросов во время ожидания доступности интерфейса.. Опрос
выполняется каждые 2 секунды (значение по умолчанию – 5).
-i
интерфейс
Имя
настраиваемого интерфейса. Значение по умолчанию – первый из
обнаруженных интерфейсов.
-m
Записать
данные файла resolv.conf в качестве конфигурационных строк в
оперативной памяти (только Neutrino; по умолчанию выключено).
-n
Не
применять предоставленные DHCP серверы имен.
-P
порт
Указать
порт сервера. Значением по умолчанию является порт dhcp или порт
67.
-p
порт
Указать
порт клиента. Значением по умолчанию является порт dhcpc или
порт 68.
-r
Добавить
.номер_узла к имени файла resolv.conf. По умолчанию не
добавляется.
-s
хост
Указать
предпочтительный сервер; принимать пакеты только от этого
сервера.
-T
время_в_секундах
Время
в секундах, в течение которого следует ожидать завершения
согласования клиента с сервером (ACK-сообщение от сервера).
Этот ключ применяется при каждом возврате клиента в состояние
инициализации (DISCOVER). При таймауте утилита dhcp.client
завершает работу со значением статуса завершения "3".
-t
число
Попытка
установить соединение с сервером определенное число раз перед
отменой и завершением работы. Длительность каждой попытки
равна 1 минуте. По умолчанию количество попыток неограничено.
-u
Не
переводить в фоновый режим до успешного завершения
конфигурирования интерфейса.
Описание:
Утилита
dhcpd, как правило, выполняется как сервис в фоновом режиме.
Она отвечает на запросы IP-адресов и сетевую информацию от
клиентов в сети TCP/IP. Эта утилита использует протокол
динамического конфигурирования хоста (DHCP) или, с некоторыми
ограничениями, интернет-протокол начальной загрузки (BOOTP).
Примечание. Для поддержки
нескольких интерфейсов следует использовать утилиту 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 представлены два оператора,
которые помогут обойти эту проблему:
*
dynamic-bootp-lease-cutoff дата;
*
dynamic-bootp-lease-length длина;
Для
получения дополнительной информации, см. раздел "Операторы
параметров" в главе /etc/dhcpd.conf.
Примечание. При
внесении любых изменений в файл /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 выполняется как приоритетная задача.
Автор:
Тед
Лемон (Ted Lemon) в сотрудничестве с компанией Vixie
Enterprises.
Лицензия:
Эта
утилита разработана на основе программного обеспечения,
авторские права на которое принадлежат организации "The
Internet Software Consortium". Уведомление об авторских правах
см. в разделе dhcpd в приложении "Уведомление об авторских
правах третьих сторон" (Third-Party Copyright Notices).