9. Служба dhcp

Служба dhcp в ПАК “Фортикс” реализует серверную часть протокола DHCP (Dynamic Host Configuration Protocol). Данная служба применяется для динамической конфигурации узла.

Протокол DHCP позволяет сетевому узлу автоматически получать IP-адрес и другие параметры, необходимые для работы в сети. Данный протокол работает по модели “клиент-сервер”. Для автоматической конфигурации клиент обращается к серверу DHCP и получает от него необходимые параметры на этапе конфигурации сетевого устройства.

Основная концепция настройки службы dhcp ПАК “Фортикс” – иерархичность и наследуемость конфигурационных пространств.

Предусмотрена следующая иерархия конфигурации:

  • [edit service dhcp], [edit service dhcp ipv4], [edit service dhcp ipv6] – уровень глобальной конфигурации службы, глобальной конфигурации службы в режиме IPv4 или IPv6 (уровень А);

  • [edit service dhcp ipv4|ipv6 subnet], [edit service dhcp ipv4|ipv6 shnet] или [edit service dhcp ipv4|ipv6 host] – уровень динамической конфигурации для подсети, разделяемой сети или статической конфигурации для хоста (уровень Б).

В ПАК “Фортикс” предусмотрен следующий принцип наследуемости конфигурации:

  • заданное значение настройки уровня А неявно определяет такое же значение для той же настройки на уровне Б, в случае если последняя не задана;

  • часть настроек уровня А может быть задана и на уровне Б: в этом случае настройка уровня Б переопределяет глобальную настройку, заданную на уровне А, или настройку по умолчанию (если аналогичной настройки на уровне А не задано).

Настройка службы dhcp осуществляется на следующем уровне конфигурации:

[edit service dhcp]

Служба может работать в режиме IPv4, в режиме IPv6 или в обоих одновременно.

9.1. Служба dhcp в режиме IPv4

Служба считается настроенной и включённой для работы в режиме IPv4 по настройке enable, в случае если выполнено любое условие из следующих:

  • не задано ни одной команды listen ipv4 и listen ipv6: служба принимает запросы на всех подходящих интерфейсах;

  • задана одна или более listen ipv4-команд: служба принимает запросы на указанных интерфейсах.

9.1.1. Настройки принятия запросов

Для указания интерфейса, на котором служба ожидает DHCP-запросы от клиентов, применяется команда:

# set listen ipv4 interface <interface-name>

где <interface-name> – имя существующего интерфейса.

По умолчанию служба ожидает запросы на всех широковещательных Ethernet-интерфейсах.

Для указания порта, на котором ожидаются DHCP-запросы, применяется команда:

# set listen ipv4 port <port-number>

где <port-number> – число от 1 до 65535, по умолчанию – 67.

Для указания IP-адреса, на котором принимаются нешироковещательные DHCP-запросы, применяется команда:

# set listen ipv4 address <address>

где <address> – IPv4-адрес в формате A.B.C.D.

Широковещательные при этом запросы не принимаются.

Примечание

Данная команда полезна при применении службы dhcp в связке со службой dhcprelay (на другом узле).

9.1.2. Настройки тайм-аутов

Для настройки максимального срока аренды адреса применяется команда:

# set ipv4 timeout lease max <lease-max-value>

где <lease-max-value> – число секунд, по умолчанию – 86400.

Данную настройку можно указать глобально, в настройках хоста и подсети.

Сетевое устройство, взаимодействующее с ПАК “Фортикс” по сети TCP/IP (далее по тексту клиент), в запросе может прислать желаемое максимальное значение срока аренды адреса. При указании максимального срока аренды адреса в конфигурации клиент не может получить в аренду адрес на время, большее заданного в настройке.

Для настройки минимального срока аренды применяется команда:

# set ipv4 timeout lease min <lease-min-value>

где <lease-min-value> – число секунд, по умолчанию – 300.

Данную настройку можно указывать глобально, в настройках хоста и подсети.

Клиент в запросе может прислать желаемое минимальное значение срока аренды адреса. При указании минимального срока аренды адреса в конфигурации клиент не может получить в аренду адрес на время, меньшее заданного.

Для настройки срока аренды адреса по умолчанию применяется команда:

# set ipv4 timeout lease default <lease-default-value>

где <lease-default-value> – число секунд, по умолчанию – 43200.

Данную настройку можно указать глобально, в настройках хоста и подсети.

Срок аренды адреса назначается клиенту в случае, если он не прислал в запросе желаемое значение.

Для настройки промежутка времени, в течение которого служба ожидает перед ответом на запрос клиента, применяется команда:

# set ipv4 timeout respond-delay <respond-delay-value>

где <respond-delay-value> – число секунд от 0 до 255, по умолчанию – 0.

Настройка применима для организации дублирующего DHCP-сервера на основе данной службы (если основной сервер DHCP не ответил в течение указанного периода времени, клиенту ответит дублирующая служба dhcp).

Для настройки значения TTL динамических записей применяется команда:

# set ipv4 timeout ddns-ttl <ddns-ttl-value>

где <ddns-ttl-value> – число секунд, по умолчанию – определяется клиентом.

Данная настройка применима при использовании динамических DNS-обновлений.

9.1.3. Настройка статического назначения

Статическое назначение адреса применимо в случае существенных хостов сети (например, серверов), для рабочих станций используется динамическое назначение адреса (см. пункт 9.1.4 Настройка динамического назначения).

Предупреждение

Статический диапазон адресов для назначения не может пересекаться с динамическим.

Настройка статического назначения IP-адреса для клиентов осуществляется на следующем уровне конфигурации (далее по тексту host-секция):

[edit service dhcp ipv4 host <host-name>]

где <host-name> –строка длиной от 1 до 253 символов.

Аргумент <host-name> существенен только при включённой настройке send-hostname ( см. пункт 9.1.9 Прочие настройки): в этом случае оно передаётся клиенту в качестве имени его хоста. При выключенной настройке send-hostname имя хоста несущественно.

Для переопределения имени хоста клиента применяется команда:

# set hostname <hostname>

где <hostname> – строка длиной от 1 до 253 символов.

В службе dhcp предусмотрены настройки признаков, по которым служба определяет принадлежность входящего DHCP-запроса host-секции.

Для указания MAC-адреса клиента в качестве привязки к host-секции применяется команда:

# set mac <mac-address>

где <mac-address> – МАС-адрес в формате xx:xx:xx:xx:xx:xx.

Для указания идентификатора клиента в качестве привязки host-секции применяется команда:

# set client-id <client-id-value>

где <client-id-value> – строка длиной от 1 до 253 символов.

В качестве аргумента <client-id-value> принимается значение поля dhcp-client-identifier DHCP-запроса.

Таким образом, для поиска host-секции, соответствующей клиенту, от которого поступил запрос, выполняется алгоритм:

  1. Осуществляется поиск идентификатора клиента, указанного в настройке client-id <client-id-value>, совпадающего с dhcp-client-identifier клиента.

  2. Если искомый идентификатора клиента client-id не найден, осуществляется поиск MAC-адреса, указанного в настройке mac <mac-address>, совпадающего с МАС-адресом клиента.

Для указания статического IP-адреса клиента, который назначается ему в случае соответствия host-секции по указанным в ней настройкам привязки (mac <mac-address> или client-id <client-id-value>), применяется команда:

# set ip <address>

где <address> – IPv4-адрес в формате A.B.C.D.

9.1.4. Настройка динамического назначения

Динамическое назначение адресов рекомендуется для обычных рабочих станций и других узлов, для которых не требуется постоянный IP-адрес.

Предупреждение

Статический диапазон адресов для назначения не должен пересекаться с динамическим диапазоном.

Настройка динамического назначения IP-адреса клиентов осуществляется на следующем уровне конфигурации (далее по тексту subnet-секция):

[edit service dhcp ipv4 subnet <subnet-address>]

где <subnet-address> – IPv4-адрес в формате A.B.C.D/mask.

Для настройки динамического назначения адресов необходимо определить диапазоны адресов, из которых назначаются IP-адреса для сетей.

Для указания диапазона адресов сети применяется команда:

# set range <from-address> to <to-address>

где

  • <from-address> –IPv4-адрес в формате A.B.C.D;

  • <to-address> – IPv4-адрес в формате A.B.C.D.

IP-адреса в диапазоне должны принадлежать подсети, настройка которой осуществляется.

9.1.5. Настройка разделяемых сетей для динамического назначения

На уровне конфигурации [edit service dhcp ipv4 subnet <subnet-address>] описывается сеть, обслуживаемая одним из интерфейсов системы. Для присвоения адресов клиентам из сетей, не обслуживаемых интерфейсами системы (например, в случае использования DHCP-Relay), используется группировка сетей в разделяемые сети.

Для включения подсети в разделяемую сеть внутри subnet-секции применяется команда:

# set shnet <shnet-name>

где <shnet-name> – слово.

Данная команда применяется минимум в двух subnet-секциях, так как невозможно сгруппировать одну сеть в разделяемую сеть.

Пример применения команд для включения подсети в разделяемую сеть:

[edit service dhcp ipv4]
# edit subnet 10.0.10.0/24
[edit service dhcp ipv4 subnet 10.0.10.0/24]
# set shnet shnet1
# set range 10.0.10.2 to 10.0.10.100

[edit service dhcp ipv4]
# edit subnet 10.0.0.0/24
[edit service dhcp ipv4 subnet 10.0.0.0/24]
# set shnet shnet1

По умолчанию в системе настроен интерфейс en0 с адресом 10.0.0.1/24, на котором необходимо принимать запросы от клиентов из другого сегмента сети через службу dhcprelay и раздавать им адреса из сети 10.0.10.0/24. Настройки из примера выше позволяют объединить две сети в одну разделяемую и обеспечить попадание запросов, приходящих на интерфейс сети 10.0.0.0/24, в shnet1. Так как интервал адресов задан только для сети 10.0.10.0/24, адреса выделяются клиентам из этого диапазона.

Предупреждение

Разделяемые сети создаются автоматически службой dhcp для ненастроенных в конфигурации сетей, если они принадлежат интерфейсам, обслуживающим несколько сетей. Для присоединения сети к автоматической разделяемой сети используется следующий формат именования автоматических разделяемых сетей:

shnet_<interface-name>

где interface-name – имя существующего интерфейса.

Например, для многосетевого интерфейса en0, если его сети не описаны в конфигурации службы и не задана их принадлежность к разделяемой сети, создается автоматическая разделяемая сеть с именем shnet_en0.

9.1.6. Настройки разделяемых сетей

Настройка разделяемой сети осуществляется на следующем уровне конфигурации (далее по тексту – разделяемо-сетевая секция):

[edit service dhcp ipv4 shnet <shnet-name>]

где <shnet-name> – слово.

Настройки host- или subnet-секций аналогичны настройкам разделяемой сети. Настройки разделяемой сети являются общими для всех subnet-секций, которые выходят в указанную разделяемую сеть (задаётся настройкой shnet <shnet-name> subnet-секции).

9.1.7. Сетевые DHCP-опции

Служба dhcp ПАК “Фортикс” позволяет передавать клиентам конфигурационную сетевую информацию (например, сетевые DHCP-опции). Настройки данного механизма указываются на любом из уровней службы: как глобально, так и в host-, сетевой- или разделяемо-сетевой секции.

Для указания IP-адреса для широковещательных запросов применяется команда:

# set broadcast <address>

где <address> – IPv4-адрес в формате A.B.C.D.

Для указания имени домена для трансляции имён через DNS применяется команда:

# set domain-name <domain-name>

где <domain-name> – строка длиной от 1 до 253 символов.

По данной настройке возможно указание только одного домена.

Для указания доменных имён для трансляции имён через DNS применяется команда:

# set search <domain-name>

где <domain-name> – строка длиной от 1 до 253 символов.

По данной настройке возможно указание нескольких доменов.

Для указания IP-адреса шлюза по умолчанию применяется команда:

# set gateway <address>

где <address> – IPv4-адрес в формате A.B.C.D.

По данной настройке возможно указание нескольких шлюзов по умолчанию.

Для указания маски подсети применяется команда:

# set subnet-mask <subnet-mask-address>

где <subnet-mask-address> – IPv4-адрес в формате A.B.C.D/mask.

Если маска подсети не указана, значение маски берётся из настройки имени сети <subnet-address> subnet-секции, в которую попадает запрос.

Для указания IP-адреса сервера имён применяется команда:

# set server dns <address>

где <address> – IPv4-адрес в формате A.B.C.D.

Для указания IP-адреса сервера времени применяется команда:

# set server ntp <address>

где <address> – IPv4-адрес в формате A.B.C.D.

Для указания IP-адреса WINS (NetBios) сервера применяется команда:

# set server wins <address>

где <address> – IPv4-адрес в формате A.B.C.D.

Для указания IP-адреса почтового SMTP-сервера применяется команда:

# set server smtp <address>

где <address> – IPv4-адрес в формате A.B.C.D.

Для указания IP-адреса TFTP-сервера применяется команда:

# set server tftp <address>

где <address> – IPv4-адрес в формате A.B.C.D.

Для указания доменного имени TFTP-сервера применяется команда:

# set server tftp-name <address>

где <address> – IPv4-адрес в формате A.B.C.D.

Для указания предлагаемого BOOTP-клиентам имени bootstrap-файла на BOOTP-сервере применяется команда:

# set boot file <boot-file-name>

где <boot-file-name> – слово.

Для указания размера загрузочного образа для BOOTP-клиентов применяется команда:

# set boot size <size-value>

где <size-value> – число 512-секторов.

9.1.8. Пользовательские DHCP-опции

ПАК “Фортикс” позволяет создавать пользовательские сетевые DHCP-опции, передаваемые клиентам как стандартные сетевые DHCP-опции.

Использование пользовательской опции возможно после её определения, которое осуществляется на глобальном уровне службы; использование (присвоение ей какого-либо значения) – на любых уровнях.

Для определения новой опции применяется команда:

[edit service dhcp ipv4]
# set user-option-def <option-name> code <option-code> type <option-type>

где

  • <option-name> – слово;

  • <option-code> – число от 128 до 254;

  • <option-type> – тип опции (см. ниже).

Примечание

Код опции принимает значения из интервала 128-254, т.к. все коды меньше 128 зарезервированы под стандартные DHCP-опции. В стандарте RFC интервал от 128 до 224 также зарезервирован под стандартные DHCP-опции, при этом не все клиенты поддерживают данный стандарт и могут использовать интервал 128-224 как пользовательский интервал опций. Рекомендуется использовать интервал кодов 224-254. Значения из интервала 128-224 допустимы для совместимости.

Предусмотрены следующие типы опции:

  • bool – булевый тип значения опции (on, off);

  • string – строковый тип значения опции (любая текстовая строка);

  • bytes – бинарный тип значения опции (последовательность байт длиной до 128, байты разделяются символом “:”);

  • uint32 – целочисленный тип значения опции (любое 32-битное число);

  • ip – тип значения опции в виде IP-адреса.

Для указания значения раннее определённой опции применяется команда:

# set user-option <option-name> value <option-value>

где

  • <option-name> – имя существующей опции;

  • <option-value> – строка (см. выше).

9.1.9. Прочие настройки

Для присвоения имени хоста BOOTP-клиентам (бездисковым рабочим станциям) применяется команда:

# set ipv4 send-hostname on|off

где

  • on – включить;

  • off – отключить (по умолчанию – off).

При включённой настройке для каждого объявления хоста, находящегося в зоне действия настройки, имя <host-name>, заданное в host-секции (см. пункт 9.1.3 Настройка статического назначения) передаётся клиенту в качестве его имени хоста.

Настройка определяется глобально или на уровне конфигурации хоста.

Для указания IP-адреса BOOTP-сервера (сервера, откуда загружается файл начальной загрузки – bootstrap-файл) применяется команда:

# set server boot address <address>

где <address> – IPv4-адрес в формате A.B.C.D.

Для указания bootstrap-файла на BOOTP-сервере применяется команда:

# set server boot file <boot-file-name>

где <boot-file-name> – слово.

9.1.10. Динамическое обновление зон DNS

Служба dhcp может обновлять динамические ресурсные записи службы dns или некоторого DNS-сервера.

Для разрешения динамического обновления зон в службе dns необходимо задать настройку update в DNS-зоне и, если необходимо, с помощью настройки allow-update указать, кому именно разрешено обновлять зону DNS (подробнее см. раздел 11 Служба dns). В случае обновления зон локальной службы dns никакой дополнительной настройки в службе dhcp не требуется.

Для включения динамического обновления зон удалённого сервера DNS на стороне службы dhcp применяется команда:

[edit service dhcp ipv4]
# set update <dns-server-ip> zone <zone-name> [password]

где

  • <dns-server-ip> – IPv4-адрес в формате A.B.C.D;

  • <zone-name> – строка длиной от 1 до 253 символов в формате FQDN;

  • [password] – строка.

Пароль для обновления зоны задаётся также и на удалённом DNS-сервере.

9.2. Служба dhcp в режиме IPv6

Протокол DHCPv6 использует понятия префикс сети и длина префикса сети:

  • префиксом сети называется часть IPv6-адреса, которая задаёт адрес сети;

  • длина префикса сети обозначает, какая часть IPv6-адреса является адресом сети, причём отсчёт сетевого адреса начинается слева направо (длина префикса сети может быть от 0 до 128).

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

Служба считается настроенной и включённой для работы в режиме IPv6 по настройке enable в случае, если выполнено любое из следующих условий:

  • не задано ни одной настройки listen ipv4 и listen ipv6: служба принимает запросы на всех подходящих интерфейсах;

  • задана одна или более настроек listen ipv6: служба принимает запросы на указанных интерфейсах.

9.2.1. Настройки принятия запросов

Аналогично настройкам службы в режиме IPv4, при этом IP-адреса указываются в формате IPv6.

9.2.2. Настройка статического назначения

Предупреждение

Статический диапазон адресов для назначения не должен пересекаться с динамическим диапазоном.

Настройка статического назначения осуществляется на следующем уровне конфигурации (далее по тексту host-секция):

[edit service dhcp ipv6 host <host-name>]

где <host-name> – строка длиной от 1 до 253 символов.

Для привязки host-секции к идентификатору клиента <client-id> применяется команда:

# set host-id <client-id>

где <client-id> – строка.

Клиент использует уникальный идентификатор DHCP (DUID) для получения IP-адреса и других настроек от сервера DHCPv6. Фактическая длина DUID зависит от его типа. Первые 16 бит DUID содержат один из следующих типов DUID (см. RFC 3315):

  • адрес уровня ссылки и время;

  • присвоенный поставщиками уникальный идентификатор;

  • адрес уровня ссылки.

Значение оставшихся бит зависит от типа.

Для указания статического IPv6-адреса клиента применяется команда:

# set ip <address>

где <address> – IPv6-адрес в формате A:B:..:H.

Для использования делегирования префикса применяется команда:

# set prefix <net-address>

где <net-address> – IPv6-адрес в формате A:B:..:H/mask.

9.2.3. Настройка динамического назначения

Предупреждение

Статический диапазон адресов для назначения не должен пересекаться с динамическим диапазоном.

Аналогично настройкам службы в режиме IPv4, при этом IP-адреса указываются в формате IPv6.

Для настройки делегирования префиксов в subnet-секции применяется команда:

# set prefix <start-prefix> end <end-prefix> len <prefix-length>

где

  • <start-prefix> – IPv6-адрес в формате A:B:..:H;

  • <end-prefix> – IPv6-адрес в формате A:B:..:H;

  • <prefix-length> – IPv6-адрес в формате A:B:..:H.

В команде задаётся начальный <start-prefix> и конечный <end-prefix> IPv6-адрес внутри сети subnet-секции, а также длина префикса <prefix-length> для данного интервала адресов.

9.2.4. Сетевые DHCP-опции

Для указания IP-адреса сервера имён применяется команда:

# set server dns <address>

где <address> – IPv6-адрес в формате A:B:..:H.

Для указания IP-адреса сервера времени NTP применяется команда:

# set server ntp <address>

где <address> – IPv6-адрес в формате A:B:..:H.

Для указания домена для трансляции имён через DNS применяется команда:

# set search <domain-name>

где <domain-name> – строка.

По данной настройке возможно указание нескольких доменов.

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

# set unicast

Данная настройка по умолчанию включена для службы. Если включить настройку для некоторой секции службы (например, subnet), действие настройки ограничивается данной секцией. Таким образом, можно избирательно включать разрешение Unicast-сообщений только для определённых секций службы dhcp. Для других секций в таком случае запрещаются принятие и обработка Unicast-сообщений клиентов.

Для указания длины префикса в процессе делегирования префиксов службой применяется команда:

# set ia-prefix <ia-prefix-length>

где <ia-prefix-length> – число от 0 до 128.

Примечание

Данная настройка задаётся службой автоматически и не требует явного указания администратором.

Для указания FQDN клиента в процессе динамического DNS-обновления зон применяется команда:

# set fqdn <fqdn-name>

где <fqdn-name> – строка длиной от 1 до 253 символов.

Примечание

Данная настройка задаётся службой автоматически и не требует явного указания администратором.

Для определения значения промежутка времени, сообщаемого клиентам, использующим Information-request сообщения, через которое им следует снова запросить у сервера сетевые параметры (настройки), применяется команда:

# set timeout info-refresh <timeout-info-refresh-value>

где <timeout-info-refresh-value> – число секунд.

9.2.5. Пользовательские DHCP-опции

Аналогично настройкам службы в режиме IPv4.

9.2.6. Связь с DNS (динамическое обновление)

Аналогично настройкам службы в режиме IPv4.

9.3. Команды режима администрирования

Для просмотра текущего статуса службы dhcp (корректность внутренней конфигурации, состояние сервиса и корректность базы данных аренды) для режимов IPv4 и IPv6 применяется команда:

> show service dhcp status

Для просмотра информации по выбранным адресам (все – all, действующие – active, свободные – free, указанный адрес – <address>) применяется команда:

> show service dhcp lease ipv4|ipv6 [all|active|free|<address>]

Формат выходных данных:

HOST:<host-name> (<status>)
IP:<address> MAC:<mac> <start-date>-<end-date>

где

  • <host-name> – имя хоста клиента, полученное из его DHCP-запроса (может отсутствовать, т.к. протокол DHCP не требует его передачи);

  • <status> – статус адресной информации: free – свободная, active – занятая;

  • <address> – арендованный IP-адрес;

  • <mac> – MAC-адрес клиента;

  • <start-date> – время начала срока аренды адреса в формате YYYY/MM/DD/HH:MM:SS;

  • <end-date> – время окончания срока аренды адреса в формате YYYY/MM/DD/HH:MM:SS.

9.3.1. Команды удаления данных

Для прекращения аренды указанного IP-адреса (всех адресов, если адрес не указан) применяется команда:

> service dhcp ipv4|ipv6 lease remove [<address>]

где <address> – IP-адрес.