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

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

ecorouter(config)#dhcp-server 8

ecorouter(config-dhcp-server)#

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

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

Для создания пула используется команда контекстного режима 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 relay приходит пакет DHCP Discover на L3 интерфейс EcoRouter c IP-адресом 10.0.0.1/24, который в свою очередь ретранслировал этот 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.

Настройка RADIUS-группы

У пользователей есть возможность получить IP настройки от удалённого RADIUS сервера. Функционал более известен под названием DHCP-RADIUS-Proxy.

При получении DHCP Discovery пакета от абонента (пользователя), будет сформирован RADIUS request с информацией по сессии. Ожидается получить RADIUS Reply с атрибутами для ipv4 настроек абонента. Framed-IP-Address — где указан конкретный адрес или Framed-Pool — с именем пула, из которого необходимо выделить адрес. Если получен Access-Accept, то будет продолжен процесс DORA c полученными параметрами. В случае с Access-Reject – процесс DORA будет остановлен.

При использовании атрибута Framed-Pool в маршрутизаторе должен быть сконфигурирован IP пул с идентичным именем.

При использовании на RADIUS сервере атрибута Framed-Pool совместно с Framed-IP-Address для работы функционала DHCP-RADIUS-Proxy будет использован атрибут Framed-IP-Address.

Помимо передачи IP адреса абонента с RADIUS сервера, есть возможность передачи информации о маске подсети и дефолтного шлюза, для этого используйте стандартные атрибуты RADIUS сервера Framed-IP-Netmask и Framed-Route.

Например: Framed-Route = 0.0.0.0 10.0.0.1 1 Framed-IP-Netmask = 255.255.0.0

Обратите внимание, что для передачи информации о шлюзе по умолчанию, наличие записи 0.0.0.0 в строке атрибута Framed-Route является обязательным!

Для применения RADIUS-группы следует ввести команду контекстного режима external radius <NAME>, где NAME — имя сконфигурированной RADIUS-группы.

Все остальные опции для передачи абонентам (DNS, TFTP, NTP …) настраиваются аналогично пулам.

Приведём пример настройки DHCP сервера и RADIUS группы на BRAS интерфейсе маршрутизатора при использовании атрибута Framed-IP-Address

!
radius-group test
mode active-standby
radius-server 20.0.0.2 secret pass1234 priority 10
!
subscriber-aaa test
authentication radius test
!
dhcp-server 1
external radius test
ntp 8.8.8.8
dns 8.8.8.8
!
interface bmi.1
connect port te0 service-instance test
dhcp-server 1
subscriber-map test
session-trigger ip
ip address 10.0.0.1/16
!
interface radius
connect port te1 service-instance test
ip address 20.0.0.1/16
!

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

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

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

ecorouter(config)#dhcp-server 8

ecorouter(config-dhcp-server)#

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

Таблица — Команды режима настройки DHCP-сервера

ПараметрОписание
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 proy 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 test
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