Содержание |
Данная команда задаёт командный язык 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 выполняет команды только после своего запуска.
|
Протокол 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-адреса клиентам. Пулы хранятся в конфигурационной базе данных сервера и идентифицируются в ней своим именем, определенным администратором сервера при создании этого пула.
|
Конфигурационные параметры (options) – это параметры, которые клиенты могут запрашивать у сервера для более точной настройки хоста. К таким параметрам относятся, например, "Address Time" (время аренды), "Router" (шлюзы по умолчанию), "NTP Servers" и т.п. Значения этих параметров сервер передает клиентам только, если клиент включил этот параметр в список запрашиваемых и только если серверу известно значение этого параметра. Набор и значения параметров (options) определяется при конфигурировании DHCP-сервера. Наборы опций могут быть определены для:
Если значение какой-либо из запрошенных опций отсутствует во всех наборах, то клиенту не передается никакого значения этой опции. Исключение составляют две опции:
Сводную таблицу конфигурационных опций протокола DHCP можно получить по адресу: http://www.iana.org/assignments/bootp-dhcp-parameters
Для определения набора опций у сервера DHCP существует ряд команд для каждого из них (см. подраздел выше). У этих команд есть параметры, формат ввода которых одинаков для всех этих команд:
Не все опции могут быть включены во все наборы. Кроме "Subnet Mask", о которой говорилось ранее, в допустимом наборе есть опции, которые можно задавать только для определенных случаев. Если для указанного набора данная опция неприменима, сервер сообщит о недопустимости применения данной опции для данного набора.
|
Кроме того, существует ряд служебных опций, которые включены в сводную таблицу, но на самом деле не являются конфигурационными параметрами, а выполняют служебную роль. Список служебных опций DHCP-сервера:
При попытке добавить одну из этих опций для любого набора, сервер сообщит об ошибке.
ERR: This option cannot contain in the given division |
Любая аренда 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.
| |||
Создан пул под названием "new" с разрешением подключаться к любому интерфейсу. Пул был успешно создан, но не смог подобрать интерфейса для подключения, т.к. ни один из интерфейсов не имеет подсети, в которую бы полностью помещался диапазон адресов этого пула.
| |||
Данная команда резервирует 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"), к которому принадлежит зарезервированный адрес, сервер все равно создаст такое резервирование.
Если при попытке зарезервировать IP-адрес обнаружится, что для клиента уже существует резервирование в каком-либо другом пуле, подключенном к данному интерфейсу, то сервер не создаст резервирования и сообщит об ошибке.
| |||
Ситуация ниже показывает, что после удаления резервирования, сервер аннулировал аренду клиентом "ID:01:00:05:90:02:1F:C8" IP-адреса "9.1.1.200" в пуле "PHONES", т.к. класс клиента не удовлетворяет фильтру классов пула "PHONES". Спустя некоторое время этот клиент получил в аренду другой адрес из пула "OTHER".
Рассмотрим другую ситуацию, где для клиента "ID:01:00:04:35:00:22:23" удаление связанного с ним резервирования не привело к аннулированию аренды занимаемого им IP-адреса "9.1.1.170", так как этот клиент удовлетворяет всем правилам пула.
| |||
Рассмотрим пример: требуется заблокировать использование интерфейса "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".
Блокируем использование интерфейса "eth0" DHCP-сервером.
После блокировки вновь посмотрим состояние интерфейсов сервера DHCP. Видно, что теперь интерфейс "eth0" заблокирован, при этом от него отключились все пулы.
| |||
Создим пул адресов, из которых DHCP-сервер будет выделять IP-адреса в аренду клиентам, прямой доступ к которым имеет данный DRA.
| |||
Ниже приведён пример списка опций, запрошенных клиентом.
|