Дерево страниц

Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

...

Блок кода
languageruby
linenumbersfalse
dhcp.ipCategories=4

При превышении числа одновременных сессий сервиса над установленным в свойстве сервиса генерируется ошибка авторизации. В этом случае штатно ошибке авторизации DISCOVER-запросы будут игнорироваться, а на все REQUEST-запросы будет высылаться ответ DHCP_NAK. Для предотвращения нагрузки на DHCP-сервер постоянной обработкой запросов возможно определение пула фиктивных адресов, выдаваемых при ошибках авторизации. Пул определяется переменной конфигурации устройства dhcp.disable.ipCategories=<cat_codes>, где <cat_codes> - id коды категорий ресурсов IP адресов через запятую. Например:

...

При превышении количества сессий сервиса над ограничением в его свойствах при включенном pool.error выдаются несколько адресов из этого пула, после чего DHCP-запросы игнорируются. Это сделано для невозможности исчерпания пула фиктивных адресов отправкой большого количества DHCP-запросов с разными MAC-адресами. Количество сессий сверх ограничения, для которых могут быть выданы фиктивные адреса задаётся переменной конфигурации dhcp.additionalUnauthorizedSessionCount.

Так же можно в случае если выдачи фиктивного адреса создавать сессии на одном общем специальном сервисе. 

Блок кода
languageruby
linenumbersfalse
#код сервиса, на котором создается сессия с фиктивным адресом. 
dhcp.disable.servId=1

Эту опцию можно использовать в схемах, когда клиента подключают в какой-то новый порт изначально,  он получает фиктивный адрес, для него создается сессия на специальном сервисе.  Потом он заходит в личный кабинет и через дополнительные действия создает сервис , скрип находи его сессия на фиктивном договоре ( например по ip) , берет с нее информацию ( порт, mac и т.п) и создает уже нормальный сервис. 

При смене абонентом устройства идет новый запрос DHCP-Discover, но может быть ситуация, когда старая сессия еще не закрыта по таймауту (пример - только что было продление адреса и абонент сменил устройство). В этом случае будет считаться что у абонента уже есть одна сессия и что IP-адрес этой сессии еще занят. Для того, чтобы на DHCP-Discover происходило закрытие активных сессий на сервисе, нужно указать dhcp.connection.closeOnNew=1.

Если необходимо, чтобы адрес выдавался независимо от баланса/статуса/состояния, т.е. всегда, как при положительном баланса балансе и открытом статусе договора, нужно указать параметр dhcp.disable.mode=1 или 2. При значении 1 InetAccess будет выдавать адрес всегда так, как если авторизация прошла удачноуспешно. Однако при необходимости переключить сессию из состояния отключена в подключена или наоборот будет выдан NAK, сессия завершится и создастся новая, при этом вызывая в обработчике активации сервисов onAccountingStop и onAccountingStart. При значении 2 при необходимости переключить состояние сессия не завершается (но connectionModify вызывается во всех трех случаях).

Блок кода
languageruby
dhcp.disable.mode=2, если выдали и забыли, и при изменении баланса/статуса ничего не делаем;
dhcp.disable.mode=1, если при изменении баланса/статуса нужно чтобы вызвались onAccountingStop/onAccountingStart;
dhcp.disable.mode=0 - по умолчанию.
# Режим выдачи адреса при неудачной авторизации. 0 (по умолчанию) - выдает адрес согласно параметрам dhcp.disable.*,
# 1 - выдает адрес как при удачной авторизации (при изменении состояния выдается NAK, срабатывает onAccountingStop, выдает ACK, срабатывает onAccountingStart), 
# 2 - выдает адрес как при удачной авторизации (при изменении состояния продолжает выдавать адрес).
dhcp.disable.mode=0

Якорь
dhcp_options
dhcp_options
Помимо IP-адреса в ответе DHCP-запроса могут передаваться различные опции. Их можно указать как в IP-ресурсе, так и конфигурации устройства. При указании в IP-ресурсе полей Роутер, Маска и DNS, значения, при выдаче адреса из этого ресурса соответственно попадут в опции gate, subnetMask и dns. Также в конфигурации IP-ресурса можно указать дополнительные опции с помощью параметров dhcp.option.<option_name>=<option_value>.

...