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-секции, соответствующей клиенту, от которого поступил запрос, выполняется алгоритм:
Осуществляется поиск идентификатора клиента, указанного в настройке
client-id <client-id-value>, совпадающего с dhcp-client-identifier клиента.Если искомый идентификатора клиента
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-адрес.