...
Когда приходит DHCP-запрос, из него извлекается поле giaddr (Relay-IP). Осуществляется поиск устройства-релея сначала по совпадению этого поля с адресом устройства в биллинге. Затем, если поиск был отрицательным - осуществляется поиск по совпадению IP-адреса, с которого пришёл DHCP-запрос с IP-адресом устройства.
Для обработки DHCP-RENEW-запросов без опции DHCP Option 82 в конфигурации корневого устройства необходимо указать:
Блок кода | ||||
---|---|---|---|---|
| ||||
# Нужно ли обрабатывать RENEW-запросы без Option 82 (требуется перезапуск InetAccess)
# 0 - нет (по умолчанию), 1 - да (рекомендуется)
dhcp.renew=1 |
Если по каким-то причинам клиентские устройства (например, NetGear JWNR2000) в DHCP-REQUEST посылают xid, отличный от DHCP-DISCOVER, можно убрать привязку к xid-запросам, прописав в конфигурации устройства-коммутратора/типа устройства/конфигурации модулякорневого устройства:
Блок кода | ||||
---|---|---|---|---|
| ||||
# Привязка к xid DHCP-запросов (требуется перезапуск InetAccess)
# 0 - выкл., 1 (по умолчанию) - вкл.
dhcp.xid=0 |
...
Возможные значения названий опций и их значений перечислены в таблице.
Название опции | Значение в виде | В DHCP пакете |
leaseTime | Число в секундах. | Опция 51, срок аренды IP-адреса |
timeOffset | Число в секундах. | Опция 2. |
gate | Строка с IP-адресом в виде NNN.NNN.NNN.NNN. | Опция 3, маршрутизатор |
serverIdentifier | Строка с IP-адресом в виде NNN.NNN.NNN.NNN. | Опция 54, идентификатор DHCP-сервера |
dns | Строка с одним или несколькими адресами вида NNN.NNN.NNN.NNN, разделённых запятой. | Опция 6, DNS-сервера |
domainName | Строка. | Опция 15, домен |
subnetMask | Строка с IP-адресом в виде NNN.NNN.NNN.NNN. | Опция 1, маска подсети |
renewalTime | Число в секундах. | Опция 58, время, после которого DHCP-клиент должен перейти в RENEW |
rebindingTime | Число в секундах. | Опция 59, время, после которого DHCP-клиент должен перейти в REBIND |
Также можно добавить опцию с помощью ее кода/типа и указания значения в формате HEX, например, dhcp.option.43=68656c6c6f.
...
Блок кода | ||||
---|---|---|---|---|
| ||||
# На сколько действует выданный OFFER (не может быть больше 60 секунд) dhcp.offer.timeout=25 # промежуток времени в секундах, за которой пришло указанное кол-во DISCOVER dhcp.ban.checkTimeout=120 # кол-во DISCOVER, которое пришло за указанный промежуток времени dhcp.ban.discoverCount=10 # время в секундах, на которое перестаем отвечать на DISCOVER-запросы dhcp.ban.timeout=1800 |
При необходимости можно сбросить бан с помощью командной строки:
Блок кода | ||
---|---|---|
| ||
./access.sh dhcpBanRemove |
Действие при получении DHCP-Discover при наличии активной сессии
...
В большинстве случаев подойдет значение dhcp.connection.checkDuplicate=90.
Дополнительные параметры
В некоторых случаях возможна ситуация, когда запросы с неизвестных биллингу relay-агентов нужно игнорировать (т.к. в случае RENEW-запроса и dhcp.renew=1 биллинг будет отвечать NAK). Для этого в конфигурации корневого устройства укажите:
Блок кода | ||||
---|---|---|---|---|
| ||||
# Нужно ли игнорировать все запросы с неизвестным giaddr (требуется перезапуск InetAccess)
# 0 - нет (по умолчанию), 1 - да
dhcp.skipUnknownDevices=1 |
При поиске relay-агента сначала происходит поиск по giaddr, затем, если устройство еще не найден - поиск по source IP-адресу DHCP-пакета. Если данный дополнительный поиск необходимо отключить, укажите в конфигурации корневого устройства:
Блок кода | ||||
---|---|---|---|---|
| ||||
# Поиск по IP-адресу дополнительно к поиску по giaddr (требуется перезапуск InetAccess)
# 0 - нет, 1 - да (по умолчанию)
dhcp.findDeviceBySocketAddress=0
|
Если Вы не хотите указывать в дереве устройств все relay-агенты, а производить поиск только по agentRemoteId, то в конфигурации корневого устройства вы можете указать ID устройства, к которому будут привязываться DHCP-пакеты, вместо поиска по giaddr:
Блок кода | ||||
---|---|---|---|---|
| ||||
# Привязка всех DHCP-пакетов к устройству, вместо поиска по giaddr (требуется перезапуск InetAccess)
dhcp.overrideRelayDeviceId= |