Предназначен для работы в связке с RADIUS-процессором. При успешной авторизиции или старте сессии InetDhcpHelperProcessor запоминает сессию по ключу, который создается из шаблона dhcp.key.pattern, указанного в конфиге. В шаблоне могут быть указаны следующие параметры:
- deviceId - устройство, к которому привязана сессия, т.е. NAS, с которого идет RADIUS-аккаунтинг,
- remoteId - агентское устройство, обычно коммутатор с которого пришел DHCP-relay-запрос на NAS,
- circuitId - порт или VLAN, в зависимости от указанного типа поиска,
- mac - MAC-адрес, для данной схемы он должен быть в RADIUS-атрибуте Calling-Station-Id.
При получении DHCP-запроса по указанному dhcp.key.pattern извлекаются данные из DHCP-пакета, т.е. по giaddr или IP-адресу, от которого запроса идет поиск устройства deviceId, аналогично InetDhcpProcessor из пакета извлекаются agentRemoteId и circuitId, по agentRemoteId идет поиск агентского устройства remoteId, и по circuitId - порта или VLAN, MAC-адрес извлекается из соответсвующего поля DHCP-пакета.
По этому ключу идет поиск среди запомненных RADIUS-сессий и выдача соответствующего ответа c IP-адресом из сессии.
Т.е. задача настроить так, чтобы из RADIUS-пакета и DHCP-пакета извлекались одни и те же данные (устройство, агентское устройство, порт/VLAN, MAC-адрес). Для этого в обработчике процессора протокола происходит извлечение из RADIUS-пакета DHCP-опций remoteId и circuitId.
Работа процессора зависит от параметра radius.servSearchMode:
- при поиске по логину (не рекомендуется, устарел, не удобен для связки с DHCP), в логине пользователя должны содержаться разделёнными двоеточием субопции DHCP.82 remoteId и circuitId, в номере звонящего - строка с HEX MAC-адреса. IP-адрес запоминается по ключу код устройства + опции + MAC-адрес;
- при остальных видах поиска из DHCP-запроса извлекаются идентификатор агентского устройства и номер порта или VLAN, аналогично InetDhcpProcessor. IP-адрес запоминается по ключу код устройства + код агентского устройства + номер интерфейса/VLAN + MAC.
Во всех случаях в RADIUS-атрибуте Calling-Station-Id должен быть проставлен MAC-адрес, чтобы при перезагрузке Access-сервера данные загрузились из сессий.
# Параметр привязки IP-адреса (сессии) к DHCP dhcp.key.pattern=$deviceId:$remoteId:$circuitId:$mac # Если по какой-то причине невозможно узнать из RADIUS-запроса агентское устройство или номер интерфейса/VLAN, то привязку можно сократить до кода устройства + MAC: #dhcp.key.pattern=$deviceId:$mac
Процессор загружает список устройств-коммутаторов, начиная с корневого узла. Типы устройств-коммутаторов можно отфильтровать в переменной конфигурации корневого узла dhcp.relay.deviceTypeIds через запятую. Алгоритм поиска устройства при получении запроса идентичен ru.bitel.bgbilling.modules.inet.dhcp.InetDhcpProcessor.
Пример пакетов для обработчика ISGProtocolHandler:
Пример конфигурации для таких пакетов: