.. _dhcpgl: Служба 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 или в обоих одновременно. Служба dhcp в режиме IPv4 ------------------------- Служба считается настроенной и включённой для работы в режиме IPv4 по настройке ``enable``, в случае если выполнено любое условие из следующих: - не задано ни одной команды ``listen ipv4`` и ``listen ipv6``: служба принимает запросы на всех подходящих интерфейсах; - задана одна или более ``listen ipv4``-команд: служба принимает запросы на указанных интерфейсах. Настройки принятия запросов ~~~~~~~~~~~~~~~~~~~~~~~~~~~ Для указания интерфейса, на котором служба ожидает DHCP-запросы от клиентов, применяется команда: :: # set listen ipv4 interface |noindent| где ```` – имя существующего интерфейса. По умолчанию служба ожидает запросы на всех широковещательных Ethernet-интерфейсах. Для указания порта, на котором ожидаются DHCP-запросы, применяется команда: :: # set listen ipv4 port |noindent| где ```` – число от 1 до 65535, по умолчанию – 67. Для указания IP-адреса, на котором принимаются нешироковещательные DHCP-запросы, применяется команда: :: # set listen ipv4 address
|noindent| где ``
`` – IPv4-адрес в формате ``A.B.C.D``. Широковещательные при этом запросы не принимаются. .. note:: Данная команда полезна при применении службы dhcp в связке со службой dhcprelay (на другом узле). Настройки тайм-аутов ~~~~~~~~~~~~~~~~~~~~ Для настройки максимального срока аренды адреса применяется команда: :: # set ipv4 timeout lease max |noindent| где ```` – число секунд, по умолчанию – 86400. Данную настройку можно указать глобально, в настройках хоста и подсети. Сетевое устройство, взаимодействующее с ПАК “Фортикс” по сети TCP/IP (далее по тексту клиент), в запросе может прислать желаемое максимальное значение срока аренды адреса. При указании максимального срока аренды адреса в конфигурации клиент не может получить в аренду адрес на время, большее заданного в настройке. Для настройки минимального срока аренды применяется команда: :: # set ipv4 timeout lease min |noindent| где ```` – число секунд, по умолчанию – 300. Данную настройку можно указывать глобально, в настройках хоста и подсети. Клиент в запросе может прислать желаемое минимальное значение срока аренды адреса. При указании минимального срока аренды адреса в конфигурации клиент не может получить в аренду адрес на время, меньшее заданного. Для настройки срока аренды адреса по умолчанию применяется команда: :: # set ipv4 timeout lease default |noindent| где ```` – число секунд, по умолчанию – 43200. Данную настройку можно указать глобально, в настройках хоста и подсети. Срок аренды адреса назначается клиенту в случае, если он не прислал в запросе желаемое значение. Для настройки промежутка времени, в течение которого служба ожидает перед ответом на запрос клиента, применяется команда: :: # set ipv4 timeout respond-delay |noindent| где ```` – число секунд от 0 до 255, по умолчанию – 0. Настройка применима для организации дублирующего DHCP-сервера на основе данной службы (если основной сервер DHCP не ответил в течение указанного периода времени, клиенту ответит дублирующая служба dhcp). Для настройки значения TTL динамических записей применяется команда: :: # set ipv4 timeout ddns-ttl |noindent| где ```` – число секунд, по умолчанию – определяется клиентом. Данная настройка применима при использовании динамических DNS-обновлений. .. _statvalueipv4: Настройка статического назначения ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Статическое назначение адреса применимо в случае существенных хостов сети (например, серверов), для рабочих станций используется динамическое назначение адреса (см. пункт :numref:`{number} {name} `). .. warning:: Статический диапазон адресов для назначения не может пересекаться с динамическим. Настройка статического назначения IP-адреса для клиентов осуществляется на следующем уровне конфигурации (далее по тексту host-секция): :: [edit service dhcp ipv4 host ] |noindent| где ```` –строка длиной от 1 до 253 символов. Аргумент ```` существенен только при включённой настройке ``send-hostname`` ( см. пункт :numref:`{number} {name} `): в этом случае оно передаётся клиенту в качестве имени его хоста. При выключенной настройке ``send-hostname`` имя хоста несущественно. Для переопределения имени хоста клиента применяется команда: :: # set hostname |noindent| где ```` – строка длиной от 1 до 253 символов. В службе dhcp предусмотрены настройки признаков, по которым служба определяет принадлежность входящего DHCP-запроса host-секции. Для указания MAC-адреса клиента в качестве привязки к host-секции применяется команда: :: # set mac |noindent| где ```` – МАС-адрес в формате ``xx:xx:xx:xx:xx:xx``. Для указания идентификатора клиента в качестве привязки host-секции применяется команда: :: # set client-id |noindent| где ```` – строка длиной от 1 до 253 символов. В качестве аргумента ```` принимается значение поля dhcp-client-identifier DHCP-запроса. Таким образом, для поиска host-секции, соответствующей клиенту, от которого поступил запрос, выполняется алгоритм: 1) Осуществляется поиск идентификатора клиента, указанного в настройке ``client-id ``, совпадающего с dhcp-client-identifier клиента. 2) Если искомый идентификатора клиента ``client-id`` не найден, осуществляется поиск MAC-адреса, указанного в настройке ``mac ``, совпадающего с МАС-адресом клиента. Для указания статического IP-адреса клиента, который назначается ему в случае соответствия host-секции по указанным в ней настройкам привязки (``mac `` или ``client-id ``), применяется команда: :: # set ip
|noindent| где ``
`` – IPv4-адрес в формате ``A.B.C.D``. .. _subnetipv4: Настройка динамического назначения ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Динамическое назначение адресов рекомендуется для обычных рабочих станций и других узлов, для которых не требуется постоянный IP-адрес. .. warning:: Статический диапазон адресов для назначения не должен пересекаться с динамическим диапазоном. Настройка динамического назначения IP-адреса клиентов осуществляется на следующем уровне конфигурации (далее по тексту subnet-секция): :: [edit service dhcp ipv4 subnet ] |noindent| где ```` – IPv4-адрес в формате ``A.B.C.D/mask``. Для настройки динамического назначения адресов необходимо определить диапазоны адресов, из которых назначаются IP-адреса для сетей. Для указания диапазона адресов сети применяется команда: :: # set range to |noindent| где - ```` –IPv4-адрес в формате ``A.B.C.D``; - ```` – IPv4-адрес в формате ``A.B.C.D``. IP-адреса в диапазоне должны принадлежать подсети, настройка которой осуществляется. Настройка разделяемых сетей для динамического назначения ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ На уровне конфигурации ``[edit service dhcp ipv4 subnet ]`` описывается сеть, обслуживаемая одним из интерфейсов системы. Для присвоения адресов клиентам из сетей, не обслуживаемых интерфейсами системы (например, в случае использования DHCP-Relay), используется группировка сетей в разделяемые сети. Для включения подсети в разделяемую сеть внутри subnet-секции применяется команда: :: # set shnet |noindent| где ```` – слово. Данная команда применяется минимум в двух 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, адреса выделяются клиентам из этого диапазона. .. warning:: Разделяемые сети создаются автоматически службой dhcp для ненастроенных в конфигурации сетей, если они принадлежат интерфейсам, обслуживающим несколько сетей. Для присоединения сети к автоматической разделяемой сети используется следующий формат именования автоматических разделяемых сетей: :: shnet_ где ``interface-name`` – имя существующего интерфейса. Например, для многосетевого интерфейса en0, если его сети не описаны в конфигурации службы и не задана их принадлежность к разделяемой сети, создается автоматическая разделяемая сеть с именем shnet_en0. Настройки разделяемых сетей ~~~~~~~~~~~~~~~~~~~~~~~~~~~ Настройка разделяемой сети осуществляется на следующем уровне конфигурации (далее по тексту – разделяемо-сетевая секция): :: [edit service dhcp ipv4 shnet ] |noindent| где ```` – слово. Настройки host- или subnet-секций аналогичны настройкам разделяемой сети. Настройки разделяемой сети являются общими для всех subnet-секций, которые выходят в указанную разделяемую сеть (задаётся настройкой ``shnet `` subnet-секции). Сетевые DHCP-опции ~~~~~~~~~~~~~~~~~~ Служба dhcp ПАК “Фортикс” позволяет передавать клиентам конфигурационную сетевую информацию (например, сетевые DHCP-опции). Настройки данного механизма указываются на любом из уровней службы: как глобально, так и в host-, сетевой- или разделяемо-сетевой секции. Для указания IP-адреса для широковещательных запросов применяется команда: :: # set broadcast
|noindent| где ``
`` – IPv4-адрес в формате ``A.B.C.D``. Для указания имени домена для трансляции имён через DNS применяется команда: :: # set domain-name |noindent| где ```` – строка длиной от 1 до 253 символов. По данной настройке возможно указание только одного домена. Для указания доменных имён для трансляции имён через DNS применяется команда: :: # set search |noindent| где ```` – строка длиной от 1 до 253 символов. По данной настройке возможно указание нескольких доменов. Для указания IP-адреса шлюза по умолчанию применяется команда: :: # set gateway
|noindent| где ``
`` – IPv4-адрес в формате ``A.B.C.D``. По данной настройке возможно указание нескольких шлюзов по умолчанию. Для указания маски подсети применяется команда: :: # set subnet-mask |noindent| где ```` – IPv4-адрес в формате ``A.B.C.D/mask``. Если маска подсети не указана, значение маски берётся из настройки имени сети ```` subnet-секции, в которую попадает запрос. Для указания IP-адреса сервера имён применяется команда: :: # set server dns
|noindent| где ``
`` – IPv4-адрес в формате ``A.B.C.D``. Для указания IP-адреса сервера времени применяется команда: :: # set server ntp
|noindent| где ``
`` – IPv4-адрес в формате ``A.B.C.D``. Для указания IP-адреса WINS (NetBios) сервера применяется команда: :: # set server wins
|noindent| где ``
`` – IPv4-адрес в формате ``A.B.C.D``. Для указания IP-адреса почтового SMTP-сервера применяется команда: :: # set server smtp
|noindent| где ``
`` – IPv4-адрес в формате ``A.B.C.D``. Для указания IP-адреса TFTP-сервера применяется команда: :: # set server tftp
|noindent| где ``
`` – IPv4-адрес в формате ``A.B.C.D``. Для указания доменного имени TFTP-сервера применяется команда: :: # set server tftp-name
|noindent| где ``
`` – IPv4-адрес в формате ``A.B.C.D``. Для указания предлагаемого BOOTP-клиентам имени bootstrap-файла на BOOTP-сервере применяется команда: :: # set boot file |noindent| где ```` – слово. Для указания размера загрузочного образа для BOOTP-клиентов применяется команда: :: # set boot size |noindent| где ```` – число 512-секторов. Пользовательские DHCP-опции ~~~~~~~~~~~~~~~~~~~~~~~~~~~ ПАК “Фортикс” позволяет создавать пользовательские сетевые DHCP-опции, передаваемые клиентам как стандартные сетевые DHCP-опции. Использование пользовательской опции возможно после её определения, которое осуществляется на глобальном уровне службы; использование (присвоение ей какого-либо значения) – на любых уровнях. Для определения новой опции применяется команда: :: [edit service dhcp ipv4] # set user-option-def code type |noindent| где - ```` – слово; - ```` – число от 128 до 254; - ```` – тип опции (см. ниже). .. note:: Код опции принимает значения из интервала 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 value |noindent| где - ```` – имя существующей опции; - ```` – строка (см. выше). .. _othersettings: Прочие настройки ~~~~~~~~~~~~~~~~ Для присвоения имени хоста BOOTP-клиентам (бездисковым рабочим станциям) применяется команда: :: # set ipv4 send-hostname on|off |noindent| где - ``on`` – включить; - ``off`` – отключить (по умолчанию – ``off``). При включённой настройке для каждого объявления хоста, находящегося в зоне действия настройки, имя ````, заданное в host-секции (см. пункт :numref:`{number} {name} `) передаётся клиенту в качестве его имени хоста. Настройка определяется глобально или на уровне конфигурации хоста. Для указания IP-адреса BOOTP-сервера (сервера, откуда загружается файл начальной загрузки – bootstrap-файл) применяется команда: :: # set server boot address
|noindent| где ``
`` – IPv4-адрес в формате ``A.B.C.D``. Для указания bootstrap-файла на BOOTP-сервере применяется команда: :: # set server boot file |noindent| где ```` – слово. Динамическое обновление зон DNS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Служба dhcp может обновлять динамические ресурсные записи службы dns или некоторого DNS-сервера. Для разрешения динамического обновления зон в службе dns необходимо задать настройку ``update`` в DNS-зоне и, если необходимо, с помощью настройки ``allow-update`` указать, кому именно разрешено обновлять зону DNS (подробнее см. раздел :numref:`{number} {name} `). В случае обновления зон локальной службы dns никакой дополнительной настройки в службе dhcp не требуется. Для включения динамического обновления зон удалённого сервера DNS на стороне службы dhcp применяется команда: :: [edit service dhcp ipv4] # set update zone [password] |noindent| где - ```` – IPv4-адрес в формате ``A.B.C.D``; - ```` – строка длиной от 1 до 253 символов в формате FQDN; - ``[password]`` – строка. Пароль для обновления зоны задаётся также и на удалённом DNS-сервере. Служба dhcp в режиме IPv6 ------------------------- Протокол DHCPv6 использует понятия префикс сети и длина префикса сети: - префиксом сети называется часть IPv6-адреса, которая задаёт адрес сети; - длина префикса сети обозначает, какая часть IPv6-адреса является адресом сети, причём отсчёт сетевого адреса начинается слева направо (длина префикса сети может быть от 0 до 128). В DHCPv6 также используются понятия *делегирующий роутер*, раздающий префиксы, и *запрашивающий роутер*, получающий и использующий их для назначения внутри префиксов адресов для собственных клиентов. Служба считается настроенной и включённой для работы в режиме IPv6 по настройке ``enable`` в случае, если выполнено любое из следующих условий: - не задано ни одной настройки ``listen ipv4`` и ``listen ipv6``: служба принимает запросы на всех подходящих интерфейсах; - задана одна или более настроек ``listen ipv6``: служба принимает запросы на указанных интерфейсах. Настройки принятия запросов ~~~~~~~~~~~~~~~~~~~~~~~~~~~ Аналогично настройкам службы в режиме IPv4, при этом IP-адреса указываются в формате IPv6. Настройка статического назначения ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. warning:: Статический диапазон адресов для назначения не должен пересекаться с динамическим диапазоном. Настройка статического назначения осуществляется на следующем уровне конфигурации (далее по тексту host-секция): :: [edit service dhcp ipv6 host ] |noindent| где ```` – строка длиной от 1 до 253 символов. Для привязки host-секции к идентификатору клиента ```` применяется команда: :: # set host-id |noindent| где ```` – строка. Клиент использует уникальный идентификатор DHCP (DUID) для получения IP-адреса и других настроек от сервера DHCPv6. Фактическая длина DUID зависит от его типа. Первые 16 бит DUID содержат один из следующих типов DUID (см. RFC 3315): - адрес уровня ссылки и время; - присвоенный поставщиками уникальный идентификатор; - адрес уровня ссылки. Значение оставшихся бит зависит от типа. Для указания статического IPv6-адреса клиента применяется команда: :: # set ip
|noindent| где ``
`` – IPv6-адрес в формате ``A:B:..:H``. Для использования делегирования префикса применяется команда: :: # set prefix |noindent| где ```` – IPv6-адрес в формате ``A:B:..:H/mask``. Настройка динамического назначения ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. warning:: Статический диапазон адресов для назначения не должен пересекаться с динамическим диапазоном. Аналогично настройкам службы в режиме IPv4, при этом IP-адреса указываются в формате IPv6. Для настройки делегирования префиксов в subnet-секции применяется команда: :: # set prefix end len |noindent| где - ```` – IPv6-адрес в формате ``A:B:..:H``; - ```` – IPv6-адрес в формате ``A:B:..:H``; - ```` – IPv6-адрес в формате ``A:B:..:H``. В команде задаётся начальный ```` и конечный ```` IPv6-адрес внутри сети subnet-секции, а также длина префикса ```` для данного интервала адресов. Сетевые DHCP-опции ~~~~~~~~~~~~~~~~~~ Для указания IP-адреса сервера имён применяется команда: :: # set server dns
|noindent| где ``
`` – IPv6-адрес в формате ``A:B:..:H``. Для указания IP-адреса сервера времени NTP применяется команда: :: # set server ntp
|noindent| где ``
`` – IPv6-адрес в формате ``A:B:..:H``. Для указания домена для трансляции имён через DNS применяется команда: :: # set search |noindent| где ```` – строка. По данной настройке возможно указание нескольких доменов. Некоторые DHCP-клиенты отправляют DHCP-сообщения, например, RELEASE, методом Unicast. Для разрешения обработки службой Unicast-сообщений от локального DHCP-клиента при динамических обновлениях локального DNS-сервера применяется команда: :: # set unicast Данная настройка по умолчанию включена для службы. Если включить настройку для некоторой секции службы (например, subnet), действие настройки ограничивается данной секцией. Таким образом, можно избирательно включать разрешение Unicast-сообщений только для определённых секций службы dhcp. Для других секций в таком случае запрещаются принятие и обработка Unicast-сообщений клиентов. Для указания длины префикса в процессе делегирования префиксов службой применяется команда: :: # set ia-prefix |noindent| где ```` – число от 0 до 128. .. note:: Данная настройка задаётся службой автоматически и не требует явного указания администратором. Для указания FQDN клиента в процессе динамического DNS-обновления зон применяется команда: :: # set fqdn |noindent| где ```` – строка длиной от 1 до 253 символов. .. note:: Данная настройка задаётся службой автоматически и не требует явного указания администратором. Для определения значения промежутка времени, сообщаемого клиентам, использующим Information-request сообщения, через которое им следует снова запросить у сервера сетевые параметры (настройки), применяется команда: :: # set timeout info-refresh |noindent| где ```` – число секунд. Пользовательские DHCP-опции ~~~~~~~~~~~~~~~~~~~~~~~~~~~ Аналогично настройкам службы в режиме IPv4. Связь с DNS (динамическое обновление) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Аналогично настройкам службы в режиме IPv4. Команды режима администрирования -------------------------------- Для просмотра текущего статуса службы dhcp (корректность внутренней конфигурации, состояние сервиса и корректность базы данных аренды) для режимов IPv4 и IPv6 применяется команда: :: > show service dhcp status Для просмотра информации по выбранным адресам (все – ``all``, действующие – ``active``, свободные – ``free``, указанный адрес – ``
``) применяется команда: :: > show service dhcp lease ipv4|ipv6 [all|active|free|
] Формат выходных данных: :: HOST: () IP:
MAC: - |noindent| где - ```` – имя хоста клиента, полученное из его DHCP-запроса (может отсутствовать, т.к. протокол DHCP не требует его передачи); - ```` – статус адресной информации: ``free`` – свободная, ``active`` – занятая; - ``
`` – арендованный IP-адрес; - ```` – MAC-адрес клиента; - ```` – время начала срока аренды адреса в формате ``YYYY/MM/DD/HH:MM:SS``; - ```` – время окончания срока аренды адреса в формате ``YYYY/MM/DD/HH:MM:SS``. Команды удаления данных ~~~~~~~~~~~~~~~~~~~~~~~ Для прекращения аренды указанного IP-адреса (всех адресов, если адрес не указан) применяется команда: :: > service dhcp ipv4|ipv6 lease remove [
] |noindent| где ``
`` – IP-адрес.