Logo

EcoRouter

EcoNAT

EcoQOE

EcoBypass

English

  • Release Notes
  • Dynamic Host Configuration Protocol EcoRouter Documentation / Dynamic Host Configuration Protocol

    Протокол динамической настройки адресации узлов сети, позволяющий устройствам внутри сети динамически получать IP-настройки: IP-адрес для устройства, адрес шлюза по умолчанию, адреса DNS-серверов и пр. Для автоматической конфигурации компьютер-клиент на этапе конфигурации сетевого устройства обращается к DHCP-серверу и получает от него нужные параметры. Протокол DHCP принадлежит семейству BOOTP (Bootstrap) протоколов и является своего рода надстройкой над своими предшественниками.

    DHCP-сервер — сервер, выдающий параметры настройки TCP/IP.

    DHCP-клиент — тот, кто запрашивает настройки TCP/IP.

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

    IP-адрес выделяется клиенту на определенное время (время аренды). Временные параметры аренды определяются настройками сервера DHCP.

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

    EcoRouter поддерживает 2 режима ретрансляции: DHCP-relay и DHCP-relay-proxy. В таблице ниже приведены особенности этих режимов.

    Действие или событиеДействие EcoRouter в режиме DHCP-relayДействие EcoRouter в режиме DHCP-relay-proxy
    Клиент послал широковещательное сообщение DISCOVEREcoRouter перенаправляет широковещательное (multicast) сообщение DISCOVEREcoRouter перехватывает широковещательное сообщение DISCOVER, вносит в таблицу DHCP mac-адрес и VLAN клиента, после чего перенаправляет сообщение DISCOVER в виде unicast
    DHCP-серверы послали сообщения OFFEREcoRouter перенаправляет сообщения OFFER от всех ответивших DHCP-серверов клиенту

    EcoRouter подменяет в сообщении OFFER от первого ответившего DHCP-сервера клиенту адрес ответившего сервера своим адресом, добавляет в таблицу информацию о выданном ip-адресе и времени начала аренды, а остальные сообщения OFFER игнорирует

    Клиент послал сообщение REQUESTEcoRouter перенаправляет широковещательное сообщение REQUEST EcoRouter подменяет адрес клиента на собственный и перенаправляет сообщение REQUEST выбранному клиентом DHCP-серверу
    DHCP-сервер послал сообщения ACK на mac-адрес компьютера, указанного в сообщении REQUESTEcoRouter перенаправляет сообщение ACK клиентуEcoRouter перенаправляет сообщение ACK клиенту
    Наступил момент для запроса обновления аренды адреса (RENEWING) (определяется настройками DHCP-сервера)EcoRouter перенаправляет DHCP-серверу сообщение REQUEST от клиента с просьбой продлить срок аренды EcoRouter самостоятельно направляет DHCP-серверу сообщение REQUEST с просьбой продлить срок аренды. EcoRouter также хранит информацию о времени последнего получения запроса обновления аренды адреса от клиента и времени получения последнего пакета подтверждения от сервера

    Наступил момент для запроса обновления конфигурации (REBINDING) (определяется настройками DHCP-сервера)

    EcoRouter перенаправляет широковещательное сообщение REQUEST с текущим сетевым адресом клиентаEcoRouter самостоятельно направляет широковещательное сообщение REQUEST с текущим собственным сетевым адресом

    Если опция 82 включена, то в режиме DHCP-relay ее параметры добавляются в запрос REQUEST клиента.

    Список команд

    КомандаОписание
    ecorouter(config)#dhcp-profile VALUE
    Создание DHCP-профиля, где VALUE - любое численное значение
    ecorouter(config-dhcp)#description LINE
    Описание созданного профиля, где LINE - любое значение. Необязательная команда
    ecorouter(config-dhcp)#mode proxy
    Включение режима работы proxy для ретранслирования запросов к серверу. Задание режима работы обязательно
    ecorouter(config-dhcp)#mode relay
    Включение режима работы relay для ретранслирования запросов к серверу. Задание режима работы обязательно
    ecorouter(config-dhcp)#server IP-address
    Указание IP-адреса DHCP-сервера. Обязательная команда
    ecorouter(config-dhcp)#server IP-address lease VALUE
    Указание адреса сервера с возможным временем использования адреса от него в секундах. Значение по умолчанию 3600. Работает только для режима proxy
    ecorouter(config-dhcp)#information-option circuit-id LINE
    Опция передачи дополнительной информации серверу. Подробнее о параметрах смотри раздел 3. Необязательная команда
    ecorouter(config-dhcp)#information-option install
    Принудительная установка информационной опции. Необязательная команда
    ecorouter(config-dhcp)#information-option remote-id LINE
    Опция передачи информации с mac-адресом клиента, который отправил запрос. Необязательная команда
    ecorouter(config-dhcp)#information-option rewrite
    Перезапись информационной опции. Если circuit-id и remote-id не будут заданы на маршрутизаторе, то опция будет просто удалена из пакета. Необязательная команда
    ecorouter(config-if)#dhcp-profile VALUE
    Команда привязки созданного профиля к интерфейсу, где VALUE номер созданного профиля

    Базовая настройка DHCP-ретранслятора

    Шаг 1. Создание интерфейса для привязки профиля DHCP-ретранслятора и назначение ip-адреса.

    ecorouter(config)#interface dhcp1ecorouter(config-if)#ip add 10.10.10.10/30

    Шаг 2. Создание DHCP-профиля.

    ecorouter(config)#dhcp-profile 0

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

    Шаг 3. Указание адреса DHCP-сервера.

    ecorouter(config-dhcp)#server 170.200.10.10

    В одном профиле может быть указано до 8 серверов.

    Шаг 4. Указание режима работы ретранслятора.

    ecorouter(config-dhcp)#mode relay

    Настройка разных режимов не различается. Выбор режима работы зависит от производительности модели оборудования и решаемых задач.

    Шаг 5. Указание параметров опции 82.

    ecorouter(config-dhcp)#information-option circuit-id Router: %{port}/ client: %{cmac}/%{svlan}.%{cvlan}
    ecorouter(config-dhcp)#information-option remote-id Router: %{hname}/%{vr}
    ПараметрОписание
    port
    номер порта, откуда запрос пришел
    cmac
    mac-адрес клиентского оборудования
    svlan
    номер сервисного VLAN'a
    cvlan
    номер VLAN'a клиента
    hname
    hostname маршрутизатора, который отправляет пакет на DHCP-сервер
    vr
    идентификатор виртуального маршрутизатора

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

    Вместо такой записи можно использовать произвольную строку, например:

    ecorouter(config-dhcp)#information-option circuit-id randomstring

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

    Можно указывать и параметры, и произвольную строку совместно, например:

    ecorouter(config-dhcp)#information-option circuit-id Router: %{port}/ client: %{cmac}/%{svlan}
    ecorouter(config-dhcp)#information-option remote-id randomstring

    Задавать remote-id возможно только при задании circuit-id.

    Шаг 6. Привязка созданного профиля к интерфейсу.

    ecorouter(config)# interface dhcp1 
    ecorouter(config-if)#dhcp-profile 0

    Настройка DHCP-сервера


    Для настройки DHCP-сервера необходимо в режиме конфигурации ввести команду dhcp-server <NUMBER>, где NUMBER – номер сервера в системе маршрутизатора. При этом изменится приглашение командной строки.


    ecorouter(config)#dhcp-server 8
    ecorouter(config-dhcp-server)#

    Настройки могут раздаваться DHCP-сервером в двух режимах: статическом и динамическом. Для динамической конфигурации устройств в сети на DHCP-сервере используется концепция пулов, в которых содержатся настройки для множества конечных устройств. При использовании данной конфигурации, клиент получает первый свободный IP-адрес из пула. Если используется статическая запись, то клиент получит IP-настройки только в случае совпадения определенных характеристик, которые позволяют однозначно его идентифицировать.

    Настройка динамического режима

    Для создания пула используется команда контекстного режима ip pool <NAME> <IP addresses> , где NAME – имя пула, а IP addressess – список IP-адресов. Можно задать диапазон адресов с использованием символов дефиса и запятой ('-' и ',') в качестве разделителей. Как только устройства начнут запрашивать конфигурацию у сервера, то им будут выделены указанные IP-адреса.

    Теперь следует указать как и какие именно пулы будут использоваться DHCP-сервером. У каждого пула есть собственный базовый набор свойств, это его имя, маска подсети, приоритет и DHCP-опция 82.

    Правила выдачи IP-настроек для конечных устройств.

    1. Если клиент находится в сети, непосредственно подключенной к DHCP-серверу (в одном широковещательном домене), то поле giaddr в пакете DHCP Discover будет пустым. При таких условиях DHCP-сервер из множества пулов находит самый приоритетный из соответствующих IP-подсети, сконфигурированной на интерфейсе (куда пришел DHCP discover). Если на интерфейсе присутствует secondary IP-адрес, то проверка пула на соответствие по secondary адресу будет проводиться только в том случае, если основной пул уже был исчерпан. Обратите внимание, что если сконфигурирована DHCP-опция 82 на L2/L3 устройствах, то на приеме она должна совпасть с настройками опции на сервере.
    2. Если клиент находится в удаленной сети (в другом широковещательном сегменте), то поле giaddr в пакете DHCP Discover будет содержать адрес DHCP-ретранслятора. При таких условиях DHCP-сервер из множества сконфигурированных пулов находит самый приоритетный, соответствующий IP-подсети DHCP-ретранслятора (но не адреса источника DHCP-сообщения!). Обратите внимание, что если сконфигурирована DHCP-опция 82 на L2/L3 устройствах, то на приеме она должна совпасть с настройками опции на сервере.
    3. Статические правила имеют приоритет над динамическими (пулами). Поэтому при совпадении:
    • MAC-адреса источника (в заголовке BOOTP а не Ethernet),
    • опции Client ID
    • или опции 82 в пакете DHCP discover, -

    которые позволяют однозначно идентифицировать клиента, IP-настройки будут выданы без проверки подсетей на интерфейсах. Обратите внимание, что если сконфигурирована DHCP-опция 82 на L2/L3 устройствах, то на приеме она должна совпасть с настройками опции на сервере.

    Исходя из этих правил в конфигурацию DHCP-сервера вводятся следующие параметры пулов.

    1) Имя – это имя ранее созданных IP-пулов, да их может быть несколько в конфигурации DHCP-сервера.

    2) Маска – этот параметр совместно с IP-адресами из пула, будет указывать нам - из какого пула следует выдать настройки для конечного устройства и какую маску подсети им передать в этих настройках в качестве DHCP-опции.

    3) Приоритет – Этот свойство определяет порядок обработки всех сконфигурированных пулов в сервере при приеме DHCP discover пакета от оконечных устройств. Приоритет пула как при работе с ACL или route-map задается с помощью определенного номера последовательности (пула). Чем ниже номер тем выше приоритет. Напомним, что у статических правил приоритет всегда выше чем у пулов.

    Все эти свойства являются ключевыми параметрами для выбора правильного пула для выдачи динамических настроек.

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

    pool <NAME><Priority SEQ> , где NAME – имя пула, Priority SEQ – номер пула, определяющий его приоритет. Чем ниже номер тем выше приоритет.

    При вводе вышеуказанной команды произойдет переход в режим конфигурации пула.

    ecorouter(config-dhcp-server-pool)#

    Свойства и опции для динамической настройки клиентов с помощью пулов конфигурируются в этом режиме. Доступные для настройки параметры приведены в таблице ниже.

    ПараметрОписание
    mask <X.X.X.X>

    Маска подсети в 4-х октетном формате. Можно ввести длину маски в сокращенном десятичном формате. Например, 16 для маски 255.255.0.0

    lease <TIME>Время аренды адреса в секундах
    information-option <circuit-id | remote-id> <STRING>

    Опция 82 в формате строки. Где circuit-id ассоциируется с клиентом, а remote-id c L2/L3 сетевыми устройствами на пути до DHCP сервера

    gateway <X.X.X.X>

    Шлюз по умолчанию

    Для удаления или изменения настроек можно воспользоваться стандартными вариантами команды no.

    Пример:

    Приходит пакет DHCP Discover на L3 интерфейс EcoRouter c IP-адресом 10.0.0.1/24 от DHCP relay, который в свою очередь ретранслировал этот DHCP Discover из сети 172.16.0.0/16 с L3 интерфейса 172.16.0.1/16. При приеме DHCP-сервер обнаружит в поле giaddr адрес 172.16.0.1 – на него сервер и будет ориентироваться при поиске нужного пула для выдачи всех IP-настроек. Допустим на сервере в этот момент присутствует три пула с разными именами “A”, “B” и “C”,  где:

    • пул  A c номером 10 и адресами из сети 192.168.0.0 с маской 16,  без опции 82,
    • пул  B c номером 20  и адресами из сети 172.0.0.0 с маской 8, без опции 82,
    • пул  C c номером 30 и адресами из сети 172.16.0.0 с маской 16, без опции 82.

    Два пула “B” и “C” соответствуют адресу 172.16.0.1, но т. к. приоритет у пула B больше (статических правил нет а у пула “C” номер 30) и опции 82 не сконфигурировано на сети, то будет использоваться пул B.

    Настройка статического режима

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

    Для настройки статической привязки следует ввести команду контекстного режима static ip <A.B.C.D, где <A.B.C.D> - IP-адрес, выдаваемый клиенту.

    После ввода этой команды произойдет переход в режим конфигурации статической записи:

    (config-dhcp-server-static)#

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

    • опции 82,
    • полям Source MAC (не в заголовке Ethernet) в заголовке DHCP
    • или опции Client-ID.

    Обратите внимание, что можно использовать Client-ID и Source MAC одновременно. Таким образом к базовому набору свойств для статической записи, помимо IP-адреса добавляются: опция 82, опция Client ID и Source MAC.

    Все остальные опции настраиваются аналогично пулам. Доступные для настройки параметры приведены в таблице ниже.

    ПараметрОписание
    chaddr <XXXX.XXXX.XXXX>Настройка поля CHADDR. XXXX.XXXX.XXXX - MAC-адрес клиента в HEX формате.
    client-id mac <XXXX.XXXX.XXXX>Настройка поля Source MAC. XXXX.XXXX.XXXX - MAC-адрес клиента в HEX формате.
    mask <X.X.X.X>

    Маска подсети в 4-х октетном формате. Можно ввести длину маски в сокращенном десятичном формате. Например, 16 для маски 255.255.0.0

    lease <TIME>Время аренды адреса в секундах
    information-option <circuit-id | remote-id> <STRING>

    Опция 82 в формате строки. Где circuit-id ассоциируется с клиентом, а remote-id c L2/L3 сетевыми устройствами на пути до DHCP сервера

    gateway <X.X.X.X>

    Шлюз по умолчанию

    Для удаления или изменения настроек можно воспользоваться стандартными вариантами команды no.

    Глобальная настройка

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

    Для настройки DHCP-сервера необходимо в режиме конфигурации ввести команду dhcp-server <NUMBER>, где NUMBER – номер сервера в системе маршрутизатора. При этом изменится приглашение командной строки.


    ecorouter(config)#dhcp-server 8
    ecorouter(config-dhcp-server)#

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

    ПараметрОписание
    lease <TIME>Время аренды адреса в секундах
    gateway <X.X.X.X>

    Шлюз по умолчанию

    Это не относится к базовым свойствам пулов или статических записей! Имена пулов, маски, приоритеты, опции 82 - уникальны в рамках своих пулов. IP-адрес, client MAC, опции 82 и client ID - уникальны в рамках своих статических записей.

    Привязка к интерфейсу

    После настройки сервера необходимо указать, на каком интерфейсе маршрутизатор будет принимать пакеты DHCP Discover и отвечать на них предложением с IP-настройками. Привязка происходит стандартным способом – в режиме конфигурации соответствующего интерфейса указывается нужный сервер. При помощи команды dhcp-server <NUMBER> , где NUMBER номер заранее сконфигурированного сервера.

    Пример конфигурации

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


    ip pool A 192.168.0.10,192.168.0.2-192.168.0.8, 192.168.0.12-192.168.0.255
    ip pool B 172.16.0.0-172.16.255.255
    ip pool C 172.16.0.1-172.16.0.255,172.16.1.100-172.16.1.200

    dhcp-server 100
      lease 300
      static ip 192.168.0.200
        chaddr 0123.4567.89ab
        lease 3600
        gateway 192.168.0.1
      pool A 10
        chaddr cdef.0123.4567
        gateway 192.168.0.1
      pool B 20
        mask 8
        gateway 172.16.0.1
      pool C 30
        mask 16
        gateway 172.16.0.1

    interface test
      dhcp-server 100

    Команды просмотра состояния DHCP

    Команда show dhcp-profile выводит список всех существующих профилей DHCP и основные их настройки:

    ecorouter#show 
    dhcp-profile

    DHCP profile 0 is in relay mode 
    Relay information option (82) is on  
    Circuit-ID: randomstring
    DHCP profile 2 is in proxy mode 
    Relay information option (82) is on  
    Circuit-ID: 78  
    Server 1.1.1.1  
    Server 4.4.4.4  
    Server 4.4.4.5  
    Server 4.4.4.6  
    Server 4.4.4.7
    DHCP profile 3 is in relay mode 
    Relay information option (82) is on  
    Circuit-ID: Router: %{hname}, client: %{cmac}/%{svlan}.%{cvlan}

    Для просмотра определенного профиля та же команда даётся с номером профиля, который нужно посмотреть.

    show dhcp-profile 0
    DHCP profile 0 is in relay mode  
    Relay information option (82) is off


    Команда show interface dhcp clients <NAME> работает только для DHCP-relay-proxy, где <NAME> - имя интерфейса, к которому привязан DHCP-профиль.

    Данной командой выводится на экран таблица, содержащая список всех DHCP-клиентов. В таблице содержатся записи с выданными IP-адресами, mac-адресами клиентов, адрес DHCP-сервера, выдавшего настройку, время подтверждения, время, на которое адрес был выдан.

    ecorouter#sh interface dhcp clients demux.0
    IP Address MAC Address DHCP Server ACK Time Lease Time
    ---------------------------------------------------------------------

    192.168.1.3 c403.130f.0000 20.0.0.1 296 86400

    Команда show dhcp-server clients <NAME>, где <NAME> - имя интерфейса, к которому привязан DHCP-профиль. Данной командой выводится на экран таблица, содержащая список всех DHCP-клиентов для данного сервера. В таблице содержатся записи с выданными IP-адресами, mac-адресами клиентов, время подтверждения, время, на которое адрес был выдан.


    ecorouter#show dhcp-server clients bmi.1
    Total DHCP clients count: 16
    IP Address MAC Address ACK Time Lease Time
    ----------------------------------------------------
    10.210.10.31 0c87.2c42.9d59 27 300
    10.210.10.62 0017.c8af.6216 15 300
    10.210.10.41 00ec.ef08.1b30 180 300
    10.210.10.46 00e8.2cf5.5450 169 300
    10.210.10.79 205a.3a48.971f 17 300
    10.210.10.15 02ce.7be1.c72e 73 300
    10.210.10.32 f110.002f.1237 235 300
    10.210.10.7 011d.5cb3.5b2b 180 300
    10.210.10.99 008c.fd68.2001 172 300
    10.210.10.47 0318.d6a1.7eb1 140 300
    10.210.10.10 0400.23e1.c666 117 300
    10.210.10.113 20e2.bace.f5eb 176 300
    10.210.10.12 28d5.4779.0f3e 180 300
    10.210.10.81 2c56.dc76.6c9b 271 300
    10.210.10.115 2243.26ab.e15a 44 300
    10.210.10.118 2c59.e5d7.c280 172 300