Page tree
Skip to end of metadata
Go to start of metadata

Успешно сдайте бесплатный сертификационный экзамен в Академии "Инфинет" и получите статус сертифицированного инженера Инфинет.

Пройти сертификационный экзамен

Содержание

Описание

Данная команда задаёт командный язык DHCP-сервера. Команды конфигурации или просмотра текущего состояния сервера вводятся с консоли или Telnet-клиента ОС WANFlex. Префикс команд управления сервером DHCP в командном интерпретаторе "dhcpd". В синтаксисе перечислен полный список команд без префикса.

ВНИМАНИЕ

Сервер DHCP не может быть запущен одновременно с DHCP-ретранслятором, если в конфигурации устройства присутствует команда "dhcpr start", настройка запуска сервера применена не будет.

ВНИМАНИЕ

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

Например, команда "dhcpd show scope *" может быть сокращена до "dhcpd s s *", а команда "dhcpd show config" до "dhcpd sh c". Команды, использующиеся для изменения конфигурации DHCP-сервера, а также его запуска или остановки, требуют, чтобы администратор имел в данной системе права "super-user". Другие команды сервер DHCP будет выполнять для любого пользователя.

В приведенном списке команд их параметры условно изображены в скобках "<>". Если значение какого-либо параметра содержит пробелы, то это значение должно указываться в кавычках.

Синтаксис:

add dscope <SCOPE_NAME> <INTERFACE|*> <START_IP> <END_IP>
add scope <SCOPE_NAME> <INTERFACE|*> <START_IP> <END_IP>
add virtual interface <VIFNAME> <GATEWAY> <GWIFNAME|*>
clear
delete option <OPTION_NAME>
delete scope <SCOPE_NAME>
delete useroption <NAME>
delete virtual interface <VIFNAME>
help options
interface <INTERFACE> delete option <OPTION_NAME>
interface <INTERFACE> option <OPTION_NAME> <OPTION_VALUE>
interface <INTERFACE> reservation <CLIENT_ID> delete option <OPTION_NAME>
interface <INTERFACE> reservation <CLIENT_ID> option <OPTION_NAME> <OPTION_VALUE>
interface <INTERFACE|*> show boundhistory
interface <INTERFACE|*> show client <CLIENT_ID|*>
lock interface <INTERFACE>
notrace
option <OPTION_NAME> <OPTION_VALUE>
scope <SCOPE_NAME> add classid <CLIENT_CLASS_ID>
scope <SCOPE_NAME> add exclude <START_IP> <END_IP>
scope <SCOPE_NAME> add reservation <CLIENT_ID> <CLIENT_IP>
scope <SCOPE_NAME> delete classid <CLIENT_CLASS_ID>
scope <SCOPE_NAME> delete exclude <START_IP>
scope <SCOPE_NAME> delete option <OPTION_NAME>
scope <SCOPE_NAME> delete reservation <CLIENT_ID>
scope <SCOPE_NAME> interface <INTERFACE|*>
scope <SCOPE_NAME> option <OPTION_NAME> <OPTION_VALUE>
scope <SCOPE_NAME> reservation <CLIENT_ID> delete option <OPTION_NAME>
scope <SCOPE_NAME> reservation <CLIENT_ID> option <OPTION_NAME> <OPTION_VALUE>
scope <SCOPE_NAME> set range <START_IP> <END_IP>
scope <SCOPE_NAME|*> show declinehistory
show config
show interface <INTERFACE|*>
show options
show scope <NAME|*>
show unleases <SUBSTR|*>
show version
show xml
start
stop
trace
unlock interface <INTERFACE>
useroption <NAME> code <CODE> type <TYPE>
virtual interface <VIFNAME> add subnet <IP_ADDRESS> <SUBNET_MASK>
virtual interface <VIFNAME> change <GATEWAY> <GWIFNAME|*>
virtual interface <VIFNAME> delete subnet <IP_ADDRESS> <SUBNET_MASK>

ПРЕДОСТЕРЕЖЕНИЕ

DHCP выполняет команды только после своего запуска.

dhcpd start

Клиенты DHCP-сервера (CLIENT)

Протокол DHCP используется для динамической настройки основных параметров подключения хостов (рабочих станций и серверов) к сети TCP/IP. Протокол DHCP использует в качестве транспортного протокол UDP. Хост, запрашивающий данные о конфигурации своего подключения к сети (IP-адрес, маску подсети, основной шлюз и др.), называется клиентом DHCP. Основным параметром конфигурации для клиента является IP-адрес. После старта, клиент рассылает по сети специальные DHCP-запросы о предоставлении ему в аренду IP-адреса и получения прочих параметров сетевой конфигурации. Для своей идентификации клиент в этих запросах может указывать идентификатор клиента. В общем случае, идентификатор клиента – это двоичный набор байтов, уникальный в пределах физического сегмента сети, к которой этот клиент подключен. Если клиент не сообщает свой идентификатор, то за его идентификатор сервер примет физический адрес (MAC) сетевого интерфейса клиента. Таким образом в DHCP-сервере клиент идентифицируется своим идентификатором клиента и сетевым интерфейсом, с которого сервер принимает запросы от данного клиента (интерфейс клиента). Идентификатор клиента (параметр "<CLIENT_ID>" в командах) представляется в виде "ID:<идентификатор>|01:<МАС адрес сетевого адаптера клиента>", как показано на примере ниже.

ID:01:00:04:35:22:88:1D

В своих запросах серверу клиент может сообщать свой класс (идентификатор класса). Идентификатор класса – это строка символов, которая определяет какое-либо свойство клиента, общее для некоторого множества однотипных. Это может быть, например, название операционной системы клиента или краткое название продукта. Например, клиенты DHCP, работающие под управлением ОС Windows XP, передают в качестве класса клиента “MSFT 5.0”, а IP телефоны Infinet Wireless – “IW_IP_PHONE”. Класс клиента может быть использован администратором сервера для автоматической группировки клиентов в необходимые пулы адресов для удобства назначения специфических  параметров (options) конфигурации. Пул (scope) - это диапазон IP-адресов, в пределах которого сервер имеет право выделять IP-адреса клиентам. Пулы хранятся в конфигурационной базе данных сервера и идентифицируются в ней своим именем, определенным администратором сервера при создании этого пула.

Параметры

ПараметрОписание

Пулы адресов (scope)

add scope <SCOPE_NAME> <INTERFACE|*> <START_IP> <END_IP>

Команда с данным параметром позволяет создать пул адресов. Даже если по каким-либо причинам пул не может быть подключен, он не уничтожается.

  • "SCOPE_NAME" – имя пула. Имя пула не чувствительно к регистру и должно быть уникальным. Если имя пула содержит пробелы, сервер  автоматически заменит их на знак "подчеркивание" ( _ ).
  • "INTERFACE" – имя сетевого интерфейса, к которому этот пул может подключаться (разрешенный интерфейс). Если вместо имени интерфейса указать "*", то это означает, что этому пулу разрешено подключаться к любому подходящему сетевому интерфейсу. Подходящий сетевой интерфейс – это интерфейс, который содержит такую подсеть IP-адресов, к которой принадлежат и стартовый и конечный IP-адрес этого пула. Если же при создании пула указано имя конкретного сетевого интерфейса, то при попытке подключиться, пул будет определять подходящую подсеть только среди подсетей этого интерфейса. Иными словами, пул подключается только к разрешенному интерфейсу, содержащему подсеть, к которой пул принадлежит полностью.
  • "START_IP" / "END_IP" – начальный/конечный IP-адрес пула соответственно. При подключении к сетевому интерфейсу, проверяется, что диапазон подключающегося пула не пересекается (и не принадлежит к) с диапазоном уже подключенного ранее к этому интерфейсу пула. При выделении IP-адресов клиентам рассматриваются только те пулы, которые подключены к сетевому интерфейсу, через который принимаются запросы от данного клиента, т.е. только пулы, подключенные к интерфейсу клиента.
scope <SCOPE_NAME> set range <START_IP> <END_IP>

Позволяет изменить диапазон адресов ранее созданного пула.

  • "SCOPE_NAME" – имя пула, диапазон которого требуется изменить.
  • "START_IP" и "END_IP" – новый начальный и конечный IP-адрес пула соответственно.

ПРЕДОСТЕРЕЖЕНИЕ

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

scope <SCOPE_NAME> interface <INTERFACE|*>

Применяется, чтобы изменить разрешенный для подключения пула интерфейс.

  • "SCOPE_NAME" – имя пула, для которого требуется изменить разрешенный интерфейс.
  • "INTERFACE" – имя сетевого интерфейса, разрешенного для данного пула.

    ВНИМАНИЕ

    Если в системе не существует интерфейса с таким именем или у этого интерфейса не будет условий для подключения данного пула, то пул немедленно отключится. Это свойство можно использовать для временного отключения какого-либо пула, если изменить имя разрешенного ему интерфейса на заведомо несуществующее.

scope <SCOPE_NAME> add classid <CLIENT_CLASS_ID>

Пулы адресов имеют фильтр классов клиентов. Если клиент в запросе сообщает свой класс, то сервер может выделить IP-адрес для этого клиента только из пулов, подключенных к интерфейсу клиента, у которых в фильтре классов имеется сообщаемый класс. Фильтр представляет собой список идентификаторов классов клиентов, для которых разрешено выделять из этого пула адреса в аренду. Чтобы сформировать у пула фильтр классов, необходимо добавить в список классов пула один или несколько идентификаторов классов клиентов (client vendor class id), которым он будет вправе выдавать IP-адреса из своего диапазона в аренду. Данный параметр используется для добавления нужного класса.

  • "SCOPE_NAME" – имя пула, в который добавляется идентификатор класса клиента со значением "CLIENT_CLASS_ID".
  • "CLIENT_CLASS_ID" – это набор символов произвольной длины (не более 255). Если этот аргумент должен содержать пробелы, то необходимо указывать его в командной строке в кавычках. Класс клиента сопоставляется с тем, который сообщает клиент в пакетах запроса аренды IP-адреса. В случае, если клиент сообщил свой класс, которого нет ни у одного пула в своем фильтре, или вовсе не сообщил свой класс, то для выделения ему IP-адреса сервер вправе использовать только такие пулы, у которых фильтр классов пуст.
scope <SCOPE_NAME> delete classid <CLIENT_CLASS_ID>Параметр для удаления класса из фильтра пула.
scope <SCOPE_NAME> add exclude <START_IP> <END_IP>

Позволяет вносить исключения (exclude) в пул адресов. Исключения – это диапазоны адресов, принадлежащие пулу, но запрещенные для выдачи в аренду клиентам.

  • "SCOPE_NAME" – имя пула, в который вносится диапазон исключения.
  • "START_IP" и "END_IP" – начальный и конечный адреса диапазона исключения соответственно. При внесении исключения, его диапазон не должен пересекаться (или принадлежать к) ни с одним из диапазонов исключения, ранее внесенным в данный пул.
scope <SCOPE_NAME> delete exclude <START_IP>

Позволяет удалить внесенные ранее исключения.

scope <SCOPE_NAME> add reservation <CLIENT_ID> <CLIENT_IP>

Позволяет создавать резервирования в пуле адресов. Главная цель резервирования в пуле – зафиксировать IP-адрес, выделяемый для определенного клиента из данного пула. Зарезервированный адрес может занимать IP-адреса из диапазонов исключений пулов, и не подчиняется правилу фильтра классов клиентов.

  • "SCOPE_NAME" – имя пула, в который добавляется резерв.
  • "CLIENT_ID" – идентификатор клиента.
  • "CLIENT_IP" – IP-адрес, который будет выдаваться этому клиенту. Резервы пулов хранятся в конфигурационной базе данных сервера и идентифицируются в ней названием пула и идентификатором клиента.
scope <SCOPE_NAME> delete reservation <CLIENT_ID>Параметр позволяет удалить резервирование из пула. Если к моменту удаления клиент уже получил данный IP-адрес, то после удаления сервер оставит этот адрес в аренде у данного клиента, если тот не нарушает других правил пула (исключений и фильтра классов). В противном случае сервер аннулирует аренду.
scope <SCOPE_NAME>  option <OPTION_NAME> <OPTION_VALUE>

Позволяет добавить набор опций для конкретного пула.

    • "SCOPE_NAME" – имя пула, которому требуется назначить необходимые опции.
    • "OPTION_NAME" и "OPTION_VALUE" – описание данных аргументов приведено в разделе "Конфигурационные параметры (options)".
scope <SCOPE_NAME> delete option <OPTION_NAME>Параметр позволяет удалить опции для пула.
scope <SCOPE_NAME> reservation <CLIENT_ID> option <OPTION_NAME> <OPTION_VALUE>

Позволяет добавить набор опций для резервированных IP-адресов в пуле.

    • "SCOPE_NAME" – имя пула, зарезервированному адресу которого требуется назначить опции.
    • "CLIENT_ID" – идентификатор клиента, для которого было создано резервирование. Если опция с таким именем ранее была определена в данном наборе, то команда заменит ее значение на указанное в этой команде.
    • "OPTION_NAME" и "OPTION_VALUE" - описание данных аргументов приведено в разделе "Конфигурационные параметры (options)".
scope <SCOPE_NAME> reservation <CLIENT_ID> delete option <OPTION_NAME>

Параметр позволяет удалить опции для резервированного адреса пула.

show scope <NAME|*>

Вывести распечатку состояния пула. В подазделе "Время аренды (Address Time)" указана расшифровка значений IP-адресов для данной опции.

  • "NAME" – имя пула, состояние которого требуется узнать. Если вместо имени указан знак "*", выводится состояние всех пулов.

scope <SCOPE_NAME|*> show declinehistory

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

delete scope <SCOPE_NAME>

Позволяет удалить пул адресов.

Сетевые интерфейсы (interface)

show interface <INTERFACE|*>

Применяется для просмотра информации об интерфейсах. Сервер при старте самостоятельно определяет набор сетевых интерфейсов, пригодных для обслуживания клиентов DHCP. Пригодным считается интерфейс, подключенный к сети множественного доступа, поддерживающие широковещательную передачу broadcast (BMA), в том числе и виртуальный (VLAN). В базе данных сервера интерфейс идентифицируется своим именем, которое было присвоено интерфейсу при регистрации.

  • "INTERFACE" – имя сетевого интерфейса, информацию о котором требуется вывести на экран. Если вместо имени интерфейса указать "*", то будет выведена информация о всех интерфейсах. Информация выводится в виде структурированного списка.
lock interface <INTERFACE>Параметр позволяет запретить серверу DHCP использовать тот или иной интерфейс.
unlock interface <INTERFACE>Отменяет запрет серверу DHCP использовать тот или иной интерфейс.
interface <INTERFACE> option <OPTION_NAME> <OPTION_VALUE>

Позволяет назначить набор опций для конкретного интерфейса.

  • "INTERFACE" – имя сетевого интерфейса, к которому необходимо применить опции.
  • "OPTION_NAME" и "OPTION_VALUE" - описание данных аргументов приведено в разделе "Конфигурационные параметры (options)".
interface <INTERFACE> delete option <OPTION_NAME>Позволяет отменить назначение опций для интерфейса.
interface <INTERFACE> reservation <CLIENT_ID> option <OPTION_NAME> <OPTION_VALUE>

Позволяет добавить опции для резерва на интерфейсе. Резерв на интерфейсе предназначен для определения специфического набора конфигурационных параметров, которые будут применены выбранному клиенту, вне зависимости от того, в каком из пулов данного интерфейса этот клиент получит аренду. Резерв интерфейса отличается от резервирования адреса в пуле двумя основными свойствами: во-первых, не определяет фиксированное значение IP-адреса для клиента, во-вторых, позволяет изменить класс клиента (если определить для резерва интерфейса опцию "Class Id", то при поступлении запросов от клиента этого интерфейса, его класс будет изменен на значение этой опции). Создание резервов интерфейсов не противоречит резервированию адресов пула для того же клиента.

    • "INTERFACE" – имя интерфейса, на котором создан резерв для клиента "CLIENT_ID". Если на данном интерфейсе не был создан резерв для указанного клиента, то команда автоматически совершит резервирование и добавит указанный в ней набор опций.
    • "CLIENT_ID" – идентификатор клиента, для котрого осуществляется резервирование. Если опция с таким именем ранее была определена в данном наборе, то команда заменит ее значение на указанное в этой команде.
    • "OPTION_NAME" и "OPTION_VALUE" - описание данных аргументов приведено в разделе "Конфигурационные параметры (options)".
interface <INTERFACE> reservation <CLIENT_ID> delete option <OPTION_NAME>

Позволяет удалить опции для резерва интерфейса.

ВНИМАНИЕ

Если после удаления опций для резерва на интерфейсе окажется, что набор опций пуст, то сам резервирование будет уничтожено автоматически.

interface <INTERFACE|*> show client <CLIENT_ID|*>

Позволяет посмотреть список опций, запрошенный клиентом и выданный ему сервером. Наборы опций в списке условно обозначаются символами:

  • "SR" – наборы для зарезервированного адреса в пуле.
  • "IR" – наборы для резерва интерфейса.
  • "S" – наборы для пула.
  • "I" – наборы для интерфейса клиента.
  • "SV" – наборы для всего сервера.

Если запрашиваемая клиентом опция не определена ни в одном из наборов сервера, то в списке она показывается со значением "<not supplied>". Кроме того, опции, которые были запрошены клиентом и выданы сервером в обязательном порядке, но не определены ни в одном из наборов (например, "Subnet Mask"), обозначаются DF.

  • "INTERFACE" – имя сетевого интерфейса, информацию о клиентах которого необходимо вывести на экран.
  • "CLIENT_ID" – идентификатор клиента, информацию о котором необходимо вывести на экран. Вместо имени интерфейса можно указать "*", и тогда будет выведена информация о клиентах всех интерфейсов сервера. Вместо идентификатора клиента так же допускается указывать "*", что будет означать запрос информации о всех клиентах. Информация о запрашиваемых клиентом опциях распечатывается только для клиентов, получивших к текущему моменту времени аренду IP-адреса у одного из пулов, подключившихся к данному интерфейсу.

interface <INTERFACE|*> show boundhistory

Позволяет просматривать базу данных интерфейса по параметрам аннулированной аренды IP-адресов.

  • "INTERFACE" – имя сетевого интерфейса, по которому необходимо получить информацию. Если вместо имени интерфейса указать "*", то база данных будет отображать информацию по всем интерфейсам сервера.

Виртуальные интерфейсы (virtual interface)

add virtual interface <VIFNAME> <GATEWAY> <GWIFNAME|*>

Используется для создания виртуального интерфейса. Если клиент DHCP физически подключен к другой сети, для выделения ему IP-адреса, необходимо, что бы маршрутизатор, логически соединяющий сеть клиента с сетью DHCP-сервера, обладал специальной программной компонентой – DHCP Relay Agent (DRA). DRA производит ретрансляцию DHCP-пакетов (включая и широковещательные) от клиентов DHCP серверу DHCP и обратно. При этом обмен пакетами DHCP между DRA и DHCP-сервером происходит только адресно (unicast). Из этого следует, что DRA и сервер DHCP должны знать IP-адреса друг друга еще на этапе своей конфигурации. Для этой цели в DHCP-сервере существуют виртуальные интерфейсы. В сущности виртуальный интерфейс в сервере DHCP – это некий физический сетевой интерфейс, но находящийся у DRA. Так как набор подсетей этих интерфейсов DHCP-серверу неизвестен, то при конфигурации виртуальных интерфейсов необходимо указать эти подсети.

  • "VIFNAME" – имя виртуального интерфейса DHCP-сервера.
  • "GATEWAY" – IP-адрес DRA, у которого находится соответствующий физический интерфейс.
  • "GWIFNAME" – имя интерфейса DRA, который осуществляет ретрансляцию пакетов DHCP. Если в качестве параметра «GWIFNAME» используется символ "*", то DRA может производить ретрансляцию на всех своих интерфейсах.

virtual interface <VIFNAME> change <GATEWAY> <GWIFNAME|*>

Используется для изменений виртуального интерфейса.

  • "VIFNAME" – имя виртуального интерфейса DHCP-сервера.
  • "GATEWAY" – новый IP-адрес DRA.
  • "GWIFNAME" – имя нового интерфейса DRA, который будет производить ретрансляцию пакетов DHCP. Если в качестве параметра «GWIFNAME» используется символ "*", то DRA может производить ретрансляцию на всех своих интерфейсах.
virtual interface <VIFNAME> add subnet <IP_ADDRESS> <SUBNET_MASK >

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

  • "VIFNAME" – имя виртуального интерфейса DHCP-сервера.
  • "IP_ADDRESS" – IP-адрес, который имеет DRA на данной подсети.
  • "SUBNET_MASK" – маска этой подсети.
virtual interface <VIFNAME> delete subnet <IP_ADDRESS> <SUBNET_MASK>Позволяет удалить подсеть из набора виртуального интерфейса. Если удалить подсеть, к которой был подключен пул, то этот пул немедленно отключился и будет оставаться неподключенным до тех пор, пока не будет сконфигурирована подходящая для него подсеть у нужного виртуального интерфейса.

delete virtual interface <VIFNAME>

Позволяет удалить виртуальный интерфейс, подсети так же будут удалены, пулы отключены.

Общие параметры

help options

Показывает список всех опций, которые DHCP-демон может включать в сообщения для клиентов.

show versionВыводит актуальную версию сервера DHCP.
show xml

Отображает конфигурацию DHCP-сервера в формате XML.

trace/notraceВключает/отключает отладочную трассировку работы протокола. 

useroption <NAME> code <CODE> type <TYPE>

Позволяет создать пользовательскую опцию, отправляемую в сообщениях клиентам.

  • "NAME" – имя для опции.
  • "CODE" – код опции в списке параметров DHCP/BOOTP.
  • "TYPE" – тип представления данных. Тип может принимать значения:
    • "n8" – 8-битное число.
    • "n16" – 16-битное число.
    • "n32" – 32-битное число.
    • "ip" – IP-адрес.
    • "text" - символьная строка.
    • "ipp" – пары IP-адресов (классовые маршруты).
    • "clr" – бесклассовые маршруты формата: A.B.C.D/M>R.R.R.R, где "A.B.C.D" – IP-адрес, "M" – маска подсети, "R.R.R.R" - шлюз.
delete useroption <NAME> Параметр используется для удаления пользовательской опции.
option <OPTION_NAME> <OPTION_VALUE>Позволяет добавить опции для всего сервера.
delete option <OPTION_NAME>Удаляет опции для всего сервера.
show unleases <SUBSTR|*>

Просмотр содержимого списка клиентов, которым серверу DHCP не удалось выдать IP-адрес в аренду. Записи в этом списке хранятся в течение 15 минут, если клиент не повторяет попыток получить аренду.

  • "SUBSTR" – это подстрока для выборочного просмотра списка "unleases". При выполнении команды, сервер будет выводить только те записи "unleases", у которых одно из полей содержит указанную подстроку. При этом учитывается регистр символов. Если вместо подстроки указать "*", то сервер выведет содержимое этого списка полностью.
stopОстанавливает сервер, в случае необходимости очистить конфигурацию.
clearПозволяет полностью очистить конфигурацию сервера после его остановки.

Конфигурационные параметры (options) 

Конфигурационные параметры (options) – это параметры, которые клиенты могут запрашивать у сервера для более точной настройки хоста. К таким параметрам относятся, например, "Address Time" (время аренды), "Router" (шлюзы по умолчанию), "NTP Servers" и т.п. Значения этих параметров сервер передает клиентам только, если клиент включил этот параметр в список запрашиваемых и только если серверу известно значение этого параметра. Набор и значения параметров (options) определяется при конфигурировании DHCP-сервера. Наборы опций могут быть определены для:

  • Зарезервированного адреса в пуле. Значения опций из этого набора будут передаваться клиенту с указанным адресом.
  • Резерва интерфейса. Передаются, если значение запрошенной опции отсутствовало в наборах заразервированных адресов пула.
  • Пула. Значения опций из этого набора будут применены к клиенту, получившему в аренду IP-адрес из этого пула, если запрашиваемая клиентом опция отсутствует в наборе зарезервированного адреса или резерва интерфейса для этого клиента, или клиент не имеет резервирования или резерва на интерфейсе.
  • Интерфейса. Передаются клиентам, получившим IP-адреса в аренду в одном из пулов, подключившихся к данному интерфейсу, если значения запрашиваемой опции отсутствует в наборе зарезервированного адреса, в самом пуле и резерве интерфейса.
  • Всего сервера. Передаются клиентам, получившем IP-адреса в аренду на данном сервере, если значение запрашиваемой опции отсутствовало во всех выше перечисленных наборах. По сути, это значения опций по умолчанию.

Если значение какой-либо из запрошенных опций отсутствует во всех наборах, то клиенту не передается никакого значения этой опции. Исключение составляют две опции:

  • "Address Time" – значение передается всегда, без запроса клиента. Если значение этой опции не определено ни в одном из наборов, то клиенту передается значение 120 (аренда адреса = 2 минуты).
  • "Subnet Mask" – значение передается всегда, без запроса клиента. Значение этой опции определяется сервером автоматически и её запрещено определять в наборах опций при конфигурации. Значение маски подсети для клиента всегда передается равное маске подсети интерфейса, к которой подключился пул, аренду IP-адреса из которого получил клиент.

Сводную таблицу конфигурационных опций протокола DHCP можно получить по адресу: http://www.iana.org/assignments/bootp-dhcp-parameters

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

  • "OPTION_NAME" -  название опции (см. сводную таблицу). При указании названия опции, если в названии присутствуют пробелы, то их следует при вводе заменить на знак "подчеркивание" ( _ ). Название опции не чувстивительно к регистру символов.
  • "OPTION_VALUE" – значение опции. Формат ввода значения опции зависит от ее предназначения и разделяется DHCP-сервером на три категории (формата):
    • Символьная. Строка символов, как, например, для опции "Bootfile-Name". Если значение этой опции содержит пробелы, то при вводе значение опции следует заключить в кавычки.
    • Двоичная. Одно или несколько десятичных чисел. Если по смыслу опции необходимо задать несколько чисел, то при вводе их необходимо разделить запятыми. Пример таких опций: "Address Time", "Time Offset".
    • IP-адрес. Одно или несколько значений, задаваемых в виде IP-адреса. Примером такой опции может служить "Router" (шлюз по умолчанию). Если значение такой опции должно состоять из нескольких IP-адресов, то при вводе следует разделить их запятыми.

ВНИМАНИЕ

Не все опции могут быть включены во все наборы. Кроме "Subnet Mask", о которой говорилось ранее, в допустимом наборе есть опции, которые можно задавать только для определенных случаев. Если для указанного набора данная опция неприменима, сервер сообщит о недопустимости применения данной опции для данного набора.

ERR: This option cannot contain in the given division

Кроме того, существует ряд служебных опций, которые включены в сводную таблицу, но на самом деле не являются конфигурационными параметрами, а выполняют служебную роль. Список служебных опций DHCP-сервера:

  • Subnet Mask.
  • Address Request.
  • Overload.
  • DHCP Msg Type.
  • DHCP Server Id.
  • Parameter List.
  • DHCP Message.
  • DHCP Max Msg Size.
  • Client Id.

При попытке добавить одну из этих опций для любого набора, сервер сообщит об ошибке.

ERR: This option cannot contain in the given division

Время аренды (Address Time) 

Любая аренда IP-адреса выдается клиентам на время, определенное опцией "Address Time". Если клиент, которому данная аренда была предоставлена, не подтвердит продление аренды за время "Address Time", сервер аннулирует данную аренду. Значение этого времени может быть установлено и самим клиентом, но не более максимального значения. За максимальное значение этого времени принимается то, которое установлено в опции "Address Time" одного из наборов, к которому относится данный клиент. Если у сервера не определена такая опция ни в одном из наборов, то значение максимального времени принимается равным 120 секундам. В случае, если клиент не запрашивает какого-либо значения этого параметра, то сервер выдает аренду на максимальное время, определяемое так, как было описано выше.

Клиент, получивший аренду, периодически подтверждает ее. Периодичность обычно равна половине "Address Time". В ответ на подтверждение продления аренды клиентом, сервер подтверждает для клиента конфигурационные параметры аренды (option). Таким образом, если в течение срока аренды в конфигурации сервера поменялись состав или значения опций, к которому относится данный клиент, то клиент об этом «узнает» только в моменты подтверждений продления аренды.

Если по истечении времени аренды клиент ни разу не подтвердил ее, пул аннулирует эту аренду. Если этот клиент не имел зарезервированного адреса в пуле, то пул, отметит IP-адрес этой аренды как "условно свободный". При выводе состояний пулов (dhcpd show scope *) это состояние обозначается как "<OBIND>". При наличии свободных адресов, пул не будет предоставлять "<OBIND>" адреса для новых клиентов. Если в течение одних суток с момента аннулирования аренды, данный клиент вновь запросит аренду, то сервер предоставит ему тот же самый IP-адрес, что и был у него во время не продленной им аренды.

Одновременно пул записывает параметры аннулированной аренды в специальную базу данных своего интерфейса (boundhistory).

Информация об аннулированных арендах хранится в этой базе данных 24 часа и выводится в порядке времени хранения записей в ней. По истечении 24 часов запись автоматически уничтожается, а связанный с ним адрес из соответствующего пула переводится в состояние обычного свободного адреса.

Сервер будет повторно использовать условно свободные адреса для других клиентов, если у всех пулов, которые подходят этим клиентам, закончились свободные адреса. При этом сервер в первую очередь будет использовать самые "старые" записи в "boundhistory" интерфейса клиента. Сервер также аннулирует аренду клиента по запросу самим клиентом завершения им использования данного адреса.

Примеры

В данном примере успешно создан пул с именем "MSOFT" с разрешенным интерфейсом "eth0". После создания пул автоматически подключился к интерфейсу "eth0" к подсети 192.168.177.12.

dhcpd add scope MSOFT eth0  192.168.177.20 192.168.177.22
[eth0] <192.168.177.12> (MSOFT): 192.168.177.20-192.168.177.22   Scope attached
OK

Создан пул под названием "new" с разрешением подключаться к любому интерфейсу. Пул был успешно создан, но не смог подобрать интерфейса для подключения, т.к. ни один из интерфейсов не имеет подсети, в которую бы полностью помещался диапазон адресов этого пула.

dhcpd add scope new * 10.12.12.30 10.12.12.50
WRN: Scope created, but not attached.

Данная команда резервирует IP-адрес таким образом, что если на интерфейс, к которому подключен пул "PHONES", поступит запрос DHCP от клиента ID:01:00:04:35:00:22:23, то сервер обязательно выдаст ему IP-адрес 9.1.1.170. При этом резервируемый IP-адрес обязан быть из диапазона пула, но на него не действует правило исключений пула. Т.е. даже если бы у пула было задано исключение (например: "dhcpd scope PHONES add exclude 9.1.1.165 9.1.1.175"), к которому принадлежит зарезервированный адрес, сервер все равно создаст такое резервирование.

dhcpd scope PHONES add reservation ID:01:00:04:35:00:22:23 9.1.1.170
OK

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

dhcpd scope other add reservation ID:01:00:04:35:00:22:23 192.168.177.10
[eth0] <192.168.177.12> (OTHER): 192.168.177.10-192.168.177.19  Reservation for "ID:01:00:04:35:00:22:23" already exists in scope PHONES with IP=9.1.1.170
ERR: Reservation's IP is out of scope's range

Ситуация ниже показывает, что после удаления резервирования, сервер аннулировал аренду клиентом "ID:01:00:05:90:02:1F:C8" IP-адреса "9.1.1.200" в пуле "PHONES", т.к. класс клиента не удовлетворяет фильтру классов пула "PHONES". Спустя некоторое время этот клиент получил в аренду другой адрес из пула "OTHER".

dhcpd scope phones delete
       reservation ID:01:00:05:90:02:1F:C8
OK
dhcpd show scope *
>SCOPES:
(MSOFT)         192.168.177.20  - 192.168.177.22  [eth0] ATTACHED [eth0] <192.168.177.12>/255.255.255.0
 <CLIENT CLASS IDs>: "IW_BRI_GATEWAY" "MSFT 5.0"
 <CLIENT> ID:01:00:C0:DF:10:AF:69 "MSFT 5.0"      'wad     ' 192.168.177.20  <BOUND> since 01/01/2003 01:01:08
 <FREE RANGE>   192.168.177.21  - 192.168.177.22   =2

(NEW)           10.12.12.30     - 10.12.12.50     [*]

(OTHER)         192.168.177.10  - 192.168.177.19  [eth0] ATTACHED [eth0] <192.168.177.12>/255.255.255.0
 <CLIENT> ID:01:00:05:90:02:1F:C8 ""              '        ' 192.168.177.10  <BOUND> since 01/01/2003 01:16:36
 <FREE RANGE>   192.168.177.11  - 192.168.177.11   =1
 <FREE RANGE>   192.168.177.13  - 192.168.177.19   =7

(PHONES)        9.1.1.151       - 9.1.1.200       [*] ATTACHED [eth0] <9.1.1.100>/255.255.255.0
 <CLIENT CLASS IDs>: "IW_IP_PHONE"
 <CLIENT> ID:01:00:04:35:00:22:24 "IW_IP_PHONE"   'Stas    ' 9.1.1.151  <BOUND> since 01/01/2003 01:01:47
 <FREE RANGE>   9.1.1.152       - 9.1.1.169        =18
 <RESERV> ID:01:00:04:35:00:22:23 "IW_IP_PHONE"   'Andrew  ' 9.1.1.170  <BOUND> since 01/01/2003 01:01:37
 <FREE RANGE>   9.1.1.171       - 9.1.1.200        =30
 <OPTION>       Router  9.1.1.3
 <OPTION>       H323_GK_ADDRESS 195.38.45.84

OK

Рассмотрим другую ситуацию, где для клиента "ID:01:00:04:35:00:22:23" удаление связанного с ним резервирования не привело к аннулированию аренды занимаемого им IP-адреса "9.1.1.170", так как этот клиент удовлетворяет всем правилам пула.

dhcpd scope phones delete
          reservation ID:01:00:04:35:00:22:23
OK
dhcpd show scope phones
>SCOPES:
(PHONES)        9.1.1.151       - 9.1.1.200       [*] ATTACHED [eth0] <9.1.1.100>/255.255.255.0
 <CLIENT CLASS IDs>: "IW_IP_PHONE"
 <CLIENT> ID:01:00:04:35:00:22:24 "IW_IP_PHONE"   'Stas    ' 9.1.1.151       <BOUND>    since 01/01/2003 01:01:47
 <FREE RANGE>   9.1.1.152       - 9.1.1.169        =18
 <CLIENT> ID:01:00:04:35:00:22:23 "IW_IP_PHONE"   'Andrew  ' 9.1.1.170       <BOUND>    since 01/01/2003 01:01:37
 <FREE RANGE>   9.1.1.171       - 9.1.1.200        =30
 <OPTION>       Router  9.1.1.3
 <OPTION>       H323_GK_ADDRESS 195.38.45.84

OK

Рассмотрим пример: требуется заблокировать использование интерфейса "eth0" DHCP-сервером. После применения команды "dhcpd show interface *" становится видно, что к интерфейсу "eth0" подключились три пула: "phones", "other" и "msoft". При этом "phones" подключился к подсети "9.1.1.100/255.255.255.0", а остальные к "192.168.177.12/255.255.255.0". 

dhcpd show interface *
>INTERFACES
[eth0] UP <SUBNET> 9.1.1.100/255.255.255.0
        <SCOPE> (PHONES) 9.1.1.151 - 9.1.1.200 <SUBNET> 192.168.177.12/255.255.255.0
        <SCOPE> (OTHER) 192.168.177.10 - 192.168.177.19
        <SCOPE> (MSOFT) 192.168.177.20 - 192.168.177.22
OK

Блокируем использование интерфейса "eth0" DHCP-сервером.

dhcpd lock interface eth0 
[eth0] <9.1.1.100> (PHONES): 9.1.1.151-9.1.1.200   Scope detached
[eth0] <192.168.177.12> (OTHER): 192.168.177.10-192.168.177.19   Scope detached
[eth0] <192.168.177.12> (MSOFT): 192.168.177.20-192.168.177.22   Scope detached
OK

После блокировки вновь посмотрим состояние интерфейсов сервера DHCP. Видно, что теперь интерфейс "eth0" заблокирован, при этом от него отключились все пулы.

dhcpd show interface *
>INTERFACES
[eth0] UP LOCKED 
<SUBNET> 9.1.1.100/255.255.255.0 
<SUBNET> 192.168.177.12/255.255.255.0
OK

Создим пул адресов, из которых DHCP-сервер будет выделять IP-адреса в аренду клиентам, прямой доступ к которым имеет данный DRA. 

dhcpd add scope VIRTUAL_TEST vvv1 192.168.188.20 192.168.188.50
dhcpd show interface vvv1
>VIRTUAL INTERFACES
[vvv1] 192.168.177.81:* UP
 <SUBNET> 192.168.188.1/255.255.255.0
        <SCOPE> (VIRTUAL_TEST) 192.168.188.20 - 192.168.188.50
dhcpd show scope virtual_test
>SCOPES:
(VIRTUAL_TEST) 192.168.188.20 - 192.168.188.50 [vvv1] ATTACHED [vvv1] <192.168.188.1>/255.255.255.0 <FREE RANGE> 192.168.188.20 - 192.168.188.50   =31

Ниже приведён пример списка опций, запрошенных клиентом.

dhcpd interface * show client *
>INTERFACES CLIENTS
--------- [eth0] ---------
(IPHONES) <CLIENT> ID:01:00:04:35:00:22:24 "IW_IP_PHONE" 'Unknown node' 192.168.0.101 <BOUND> since 25/04/2005 11:32:57
SUPPLIED OPTIONS:
#1       .  .  .  .  . DF Subnet Mask               255.255.255.0
#2       .  .  .  .  .  . Time Offset               <not supplied>
#3       .  .  S  .  .  . Router                    192.168.0.1
#7       .  .  .  .  .  . Log Server                <not supplied>
#42      .  .  S  .  .  . NTP Servers               192.168.0.1
#230     .  .  S  .  .  . H323 GK ADDRESS           192.168.0.1
#231     . IR  .  .  .  . H323 LOGIN ALIAS          IWPhone/V. Pupkin/101
#232     .  .  .  .  .  . H323 GK ID                <not supplied>