Настройки dhcpd хранятся в файле /etc/dhcpd.conf. Файл настройки содержит инструкции, которые определяют, какие подсети и узлы обслуживает сервер и какую информацию настройки он им предоставляет, dhcpd.conf - обычный текстовый файл, сходный с файлом исходного текста на языке С. Проще всего изучить файл dhcpd.conf на примере:

ft Определения значений, действующих для всех систем.
default-lease-time 86400;
max-lease-time 604800;
get-lease-hostnames true;
option subnet-mask 255.255.255.0;
option domain-name "wrotethebook.com";
option domain-name-servers 172.16.12.1, 172.16.3.5;
option lpr-servers 172.16.12.1;
option interface-mtu 1500;
#    Определения подсетей, параметров для отдельных подсетей,
#    диапазона адресов, доступных для динамического распределения.
subnet 172.16.3.0 netmask 255.255.255.0 {
option routers 172.16.3.25;
option broadcast-address 172.16.3.255;
range 172.16.3.50 172.16.3.250;
}
subnet 172.16.12.0 netmask 255.255.255.0 {
option routers 172.16.12.1;
option broadcast-address 172.16.12.255;
range 172.16.12.64 172.16.12.192;
range 172.16.12.200 172.16.12.250;
>
#    Определения клиентов ВООТР - оператор host
group {
use-host-decl-names true;
host 24seven {
hardware ethernet 00:80:c7:aa:a8:04;
fixed-address 172.16.3.4;
}
host rodent {
hardware ethernet 08:80:20:01:59:c3;
fixed-address 172.16.12.2;
}
host ring {
hardware ethernet 00:00:c0:a1:5e:10;
fixed-address 172.16.3.16;

Это пример настройки сервера, объединяющего и обслуживающего две различные подсети. Сервер динамически назначает IP-адреса DHCP-клиентам обеих подсетей и осуществляет поддержку нескольких клиентов ВООТР. Все строки, начинающиеся символом решетки (#), являются комментариями. Первые несколько активных строк файла определяют ряд параметров и режимов, действующих для всех обслуживаемых сервером подсетей и клиентов. Первые три строки содержат параметры для сервера. Каждый из трех параметров в данном примере определяет один из аспектов работы dhcpd при динамическом назначении адресов.


default-lease-time - Указывает серверу длительность аренды адреса по умолчанию (в секундах). Клиент может запросить аренду адреса на определенный период времени, и в этом случае его запрос выполняется. Однако могут действовать определенные ограничения. Часто клиенты не указывают конкретную длительность аренды при получении адреса. В такой ситуации используется параметр default-lease-time. В нашем примере длительность аренды по умолчанию составляет один день (86400 секунд).

max-lease-time - Определяет максимально допустимое время аренды. Независимо от длительности аренды, фигурирующей в запросе клиента, это самый длительный срок, на который dhcpd выдаст клиенту адрес. Время аренды определяется в секундах. В данном примере максимальное время аренды составляет одну неделю.

get-lease-hostnames - Предписывает dhcpd предоставлять каждому клиенту наряду с динамически назначенным адресом имя узла. Имя узла должно быть получено в DNS. Данный параметр - логический. При значении false (принятом по умолчанию) клиенту назначается адрес, но не имя узла. Поиск имен узлов для всех динамически выделяемых адресов значительно увеличивает время, требуемое на запуск демона. Присваивайте этому параметру значение false. Значение true используйте, только если сервер работает с очень небольшим количеством адресов, назначаемых динамически.

В файле настройки содержатся и другие параметры - их мы изучим в ходе дальнейшего изложения. Полный перечень всех параметров DHCP приведен в приложении D.

Следующие четыре строки представляют ключи настройки. Они начинаются с ключевого слова option. За ним следует имя ключа и назначенное ему значение. Ключи определяют значения настройки, используемые клиентом. О назначении ключей из примера легко догадаться, поскольку их имена носят описательный характер. Мы передаем клиентам маску подсети, имя домена, адреса сервера доменных имен, а также адрес сервера печати. Эти значения аналогичны тем, что могли распространяться посредством более старой службы ВООТР.


Однако возможности DHCP шире, чем у ВООТР. Чтобы проиллюстрировать это утверждение примером, мы также указали максимальную длину передаваемого блока - MTU (maximum transmission unit). В примере ключ interfacemtu уведомляет клиента, что значение MTU равно 1500 байт. В данном случае это избыточное действие (поскольку значение 1500 принимается по умолчанию для интерфейсов Ethernet), но оно ясно показывает, что DCHP позволяет передавать клиентам самую разнообразную информацию о настройках.

Операторы subnet определяют подсети, обслуживаемые dhcpd. Идентификация сетей выполняется на основе адреса и адресной маски - оба элемента являются обязательными для оператора subnet, dhcpd передает информацию о настройках только клиентам этих сетей. Для каждой подсети, с которой физически связан сервер, должен присутствовать отдельный оператор subnet, даже если в некоторых из подсетей нет клиентов. Информация о подсетях требуется dhcpd при запуске.

Действие ключей и параметров внутри оператора subnet распространяется только на эту подсеть и находящиеся в ней клиенты. Назначение ключей в примере понятно. Они указывают клиентам, какой маршрутизатор и широковещательный адрес использовать. Параметр range более интересен, поскольку напрямую связан с одной из ключевых возможностей DHCP.

Параметр range определяет диапазон адресов для динамического выделения. Он всегда существует в контексте оператора subnet, и диапазон адресов должен принадлежать адресному пространству этой подсети. Диапазон в параметре range определяется парой указанных адресов. Первый адрес определяет наименьший адрес, который может быть назначен автоматически, а второй - наибольший из таких адресов. Первый параметр range нашего примера обозначает непрерывную группу адресов с 172.16.12.50 по 172.16.12.250, доступных для динамического назначения. Обратите внимание, что во втором операторе subnet два параметра range. Так создаются раздельные последовательности динамически выделяемых адресов. Когда это может пригодиться?


К примеру, если некоторые из адресов уже были назначены вручную до установки сервера DHCP. Главное, что независимо от причин можно определять области динамически выделяемых адресов, содержащие разрывы, при помощи нескольких операторов range.

Если параметр range фигурирует в операторе subnet, любой клиент DHCP из этой подсети, запросивший адрес, получит один из адресов диапазона, если свободные адреса есть. В отсутствие параметра range механизм динамического назначения адресов не действует.

Чтобы включить автоматическое назначение адресов клиентам ВООТР, добавьте аргумент dynamic-bootp в параметр range. Например, так:

range dynamic-bootp 172.16.8.10 172.16.8.50;

По умолчанию клиентам ВООТР назначаются постоянные адреса. Поведение системы можно изменить при помощи параметра dynamic-bootp-lease-cutoff либо при помощи параметра dynamic-bootp-lease-length. Однако клиенты ВООТР не умеют арендовать адреса и не знают, что должны их обновлять. Поэтому параметры dynamic-bootp-lease-cutoff и dynamic-bootp-lease-length используются только в особых обстоятельствах. Если вам нужны именно эти параметры, обратитесь к приложению D.

Каждому из клиентов ВООТР должен быть сопоставлен оператор host, позволяющий указать параметры и ключи настройки для клиента. Он может использоваться для назначения клиентам постоянных, фиксированных адресов. Приведенный выше файл настройки заканчивается тремя операторами host - для узлов 24seven, rodent и ring соответственно. Каждый оператор host содержит параметр hardware, определяющий тип сетевого аппаратного обеспечения (ethernet) и физический сетевой адрес (например, 08:80:20:01:59:сЗ), используемый клиентом. Параметр hardware является обязательным для операторов host клиентов ВООТР. Адрес Ethernet используется dhcpd для идентификации клиентов ВООТР. Клиентам DHCP также могут соответствовать операторы host. Для клиентов DHCP параметр hardware является необязательным, поскольку идентификацию клиента DHCP можно осуществить по значению dhcp-client-identifier. Однако клиент DHCP, подключенный по интерфейсу Ethernet, проще идентифицировать по его адресу Ethernet.

Оператор host может содержать широкий спектр различных параметров и ключей. Например, добавление в каждый оператор host ключа следующего типа назначает каждому клиенту определенное имя узла:


option host-name 24seven;

Часто оказывается проще определять значения параметров и ключей на более высоком уровне. Глобальные настройки действуют для всех систем. Настройки подсети действуют для всех ее клиентов, а настройки, принадлежащие оператору host, действуют лишь для одного узла. Ключ host-name, приведенный выше, необходимо повторить с различными именами узлов в каждом операторе host. Проще определить параметр или ключ для группы узлов, воспользовавшись оператором group.

Оператор group группирует любые другие операторы. Единственным назначением оператора group является распространение действия параметров и ключей на всех участников группы. Именно это мы сделали в примере. Оператор group объединил все операторы host. Параметр use-host-decl-names в операторе group действует на все узлы в группе. Этот параметр предписывает dhcpd присвоить каждому клиенту имя узла, указанное в операторе host клиента, что делает ключ host-name ненужным в данном файле настройки.

Исходя из приведенного выше файла dhcpd.conf, мы знаем, что, когда dhcpd получает запрос от клиента с адресом Ethernet 08:80:20:01:59:сЗ, клиенту передается следующая информация:

  • Адрес 172.16.12.2
  • Имя узла rodent
  • Адрес маршрутизатора по умолчанию 172.16.12.1
  • Широковещательный адрес 172.16.12.255
  • Маска подсети 255.255.255.0
  • Имя домена wrotethebook.com
  • Адреса серверов имен домена: 172.16.12.1 и 172.16.3.5
  • Адрес сервера печати 172.16.12.1
  • Значение MTU для интерфейса Ethernet

Клиент получает все глобальные значения, все значения своей подсети, а также все значения, определенные только для этого узла. Очевидно, DHCP позволяет обеспечить клиент полноценными настройками.

Ваши настройки DHCP вероятно проще, чем в приведенном примере, хотя реализуют поддержку большего числа систем. Некоторые из команд включены в пример только ради наглядности. Основное различие заключается в том, что на большинстве площадок единственный сервер настройки не обслуживает более одной подсети. В каждой подсети существует свой сервер: это сокращает нагрузку на сервер, в особенности нагрузку, вызванную неполадками с электропитанием, затронувшими сеть в целом; снимает необходимость передавать загрузочные пакеты через маршрутизаторы. Кроме того, распределение адресов на уровне подсети делает более логичным и размещение сервера на том же уровне. В следующем разделе мы рассмотрим вопрос обновлений для распределенных серверов.