Dynamic Host Configuration Protocol EcoRouter Documentation / Dynamic Host Configuration Protocol
- Список команд
- Базовая настройка DHCP-ретранслятора
- Настройка DHCP-сервера
- Настройка динамического режима
- Настройка статического режима
- Глобальная настройка
- Привязка к интерфейсу
- Пример конфигурации
- Команды просмотра состояния DHCP
Протокол динамической настройки адресации узлов сети, позволяющий устройствам внутри сети динамически получать 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 |
---|---|---|
Клиент послал широковещательное сообщение DISCOVER | EcoRouter перенаправляет широковещательное (multicast) сообщение DISCOVER | EcoRouter перехватывает широковещательное сообщение DISCOVER, вносит в таблицу DHCP mac-адрес и VLAN клиента, после чего перенаправляет сообщение DISCOVER в виде unicast |
DHCP-серверы послали сообщения OFFER | EcoRouter перенаправляет сообщения OFFER от всех ответивших DHCP-серверов клиенту | EcoRouter подменяет в сообщении OFFER от первого ответившего DHCP-сервера клиенту адрес ответившего сервера своим адресом, добавляет в таблицу информацию о выданном ip-адресе и времени начала аренды, а остальные сообщения OFFER игнорирует |
Клиент послал сообщение REQUEST | EcoRouter перенаправляет широковещательное сообщение REQUEST | EcoRouter подменяет адрес клиента на собственный и перенаправляет сообщение REQUEST выбранному клиентом DHCP-серверу |
DHCP-сервер послал сообщения ACK на mac-адрес компьютера, указанного в сообщении REQUEST | EcoRouter перенаправляет сообщение 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-настроек для конечных устройств.
- Если клиент находится в сети, непосредственно подключенной к DHCP-серверу (в одном широковещательном домене), то поле giaddr в пакете DHCP Discover будет пустым. При таких условиях DHCP-сервер из множества пулов находит самый приоритетный из соответствующих IP-подсети, сконфигурированной на интерфейсе (куда пришел DHCP discover). Если на интерфейсе присутствует secondary IP-адрес, то проверка пула на соответствие по secondary адресу будет проводиться только в том случае, если основной пул уже был исчерпан. Обратите внимание, что если сконфигурирована DHCP-опция 82 на L2/L3 устройствах, то на приеме она должна совпасть с настройками опции на сервере.
- Если клиент находится в удаленной сети (в другом широковещательном сегменте), то поле giaddr в пакете DHCP Discover будет содержать адрес DHCP-ретранслятора. При таких условиях DHCP-сервер из множества сконфигурированных пулов находит самый приоритетный, соответствующий IP-подсети DHCP-ретранслятора (но не адреса источника DHCP-сообщения!). Обратите внимание, что если сконфигурирована DHCP-опция 82 на L2/L3 устройствах, то на приеме она должна совпасть с настройками опции на сервере.
- Статические правила имеют приоритет над динамическими (пулами). Поэтому при совпадении:
- 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