Содержание

Выражения

Включаются в параметре $conf{AUTH_EXPR}.

Так как производители оборудования (коммутаторов) не всегда придерживаются стандартов при формирование запросов DHCP Option 82 в системе была создана возможность задать регулярное выражение для получения нужных параметров из DHCP запроса . Использовать дополнительные выражения для получения корректных данных с запросов от коммутаторов в которых параметры опции 82 отличаются от стандартных.

формат выражения через точку с запятой:

радиус_пара:условия:переменные[:hex2ansii];условия:переменные….

радиус_пара радиус пара запроса
условия
переменные переменные результата VLAN PORT NAS_MAC MAC MAC_DEC (если мак не нужно преобразовывать в шестнадцатеричный из десятеричного) PORT_DEC (если не нужно преобразовывать порт из десятеричного в шестнадцатеричный формата)
hex2ansii если указан єтот параметр система перед вычислением нужных переменных преобразует строку с шестнадцатеричного формата в текстовый

Система при получении параметра проверяет нужно ли использовать внешние выражения (При включении выражений система отключает шаблон по умолчанию для распознавания коммутаторов.).
Eсли да, начинает проходить по списку указанных шаблонов.
При попадании в параметры система подставляет выбранные VLAN PORT NAS_MAC MAC MAC_DEC (если мак не нужно преобразовывать в десятичный форма из шестнадцатеричного) PORT_DEC (если не нужно преобразовывать порт из десятеричного шестнадцатеричного формата) в DHCP-Agent-Circuit-Id и DHCP-Agent-Remote-Id. Параметры подставляются по последнему успешному в списке совпадению.

Если используются разные коммутаторы в сети максимально рекомендовано писать точные выражения с использованием ^ $


Дальше уже идут стандартные процедуры работы с DHCP.

NAS_MAC MAC адрес сервера доступа
NAS_MAC_HEX MAC адрес сервера доступа в виде ASCII закодированного в HEX
PORT Порт в шестнадцатеричном формате конвертируется в десятеричный при обработке
PORT_MULTI Порт в шестнадцатеричном формате без конвертации
DEC_PORT порт в десятеричном формате
VLAN VLAN в шестнадцатиричном формате
VLAN_DEC VLAN в десятеричном формате
SERVER_VLAN Серверный VLAN в десятеричном формате
AGENT_REMOTE_ID
CIRCUIT_ID
LOGIN Логин абонента

Примеры Выражений

Версия билинга не ниже 0.75.25

Cisco

Agent-Circuit-Id:0x0004([0-9a-f]{4})[0-9a-f]{2}([0-9a-f]{2}):VLAN,PORT;Agent-Remote-Id:([0-9a-f:]{16})$:NAS_MAC:hex2ansii

Edge-Core

DHCP-Relay-Agent-Information:0x(01)(04)([0-9a-f]{4})\d{2}([0-9a-f]{2})(02)(06)([0-9a-f]{12}):ID,SIZE,VLAN,PORT,ID,SIZE,NAS_MAC;
DHCP-Relay-Agent-Information:0x(01)(06)[0-9a-f]{4}([0-9a-f]{4})\d{2}([0-9a-f]{2})(02)(08)[0-9a-f]{4}([0-9a-f]{12}):ID,SIZE,VLAN,PORT,ID,SIZE,NAS_MAC;

запрос:

DHCP-Relay-Circuit-Id = 0x0004020c0119
DHCP-Relay-Remote-Id = 0x0006cc37ab8fafbc

Расшифровка

DHCP-Relay-Circuit-Id:0x0004([0-9a-f]{4})[0-9a-f]{2}([0-9a-f]{2}):VLAN,PORT;DHCP-Relay-Remote-Id:0x0006([0-9a-f]{12}):NAS_MAC

Eltex

DHCP-Relay-Agent-Information:0x(01)(0b)[0-9a-f]{4}([0-9a-f]{4})[0-9a-f]{10}([0-9a-f]{4})(02)(0b)[0-9a-f]{10}([0-9a-f]{12}):ID,SIZE,VLAN,PORT,ID,SIZE,NAS_MAC;

Huawei

Пример запроса

Agent-Remote-Id = 0x000604bd70f9cd11
Agent-Circuit-Id = 0x00040fa00018

Настройка

Agent-Remote-Id:0x0006([0-9a-f]{12}):NAS_MAC;Agent-Circuit-Id:0x0004([0-9a-f]{4})00([0-9a-f]{2}):VLAN,PORT

Bdcom

Настройка Option 82 Type: cm-type (Use cm-type option 82 format)
при использовании DHCP-Relay-Agent-Information

$conf{AUTH_EXPR}='DHCP-Relay-Agent-Information:0x01060004([0-9a-f]{4})\d{2}([0-9a-f]{2})02080006([0-9a-f]{12}):VLAN,PORT,NAS_MAC;DHCP-Relay-Agent-Information:0x0105([0-9a-f]{4})\d{2}([0-9a-f]{4})\d{4}([0-9a-f]{12}):VLAN,PORT_DEC,NAS_MAC;';

при использовании DHCP-Relay-Circuit-Id или Agent-Circuit-Id

DHCP-Relay-Circuit-Id:0x([0-9a-f]{4})00([0-9a-f]{4}):VLAN,PORT_DEC;DHCP-Relay-Remote-Id:0x([0-9a-f]{12}):NAS_MAC

Использование схемы hn-type (Use cisco option 82 format) при данной аутентификации абоненты появляются в мониторинге на сервере DHCP

$conf{DHCP_O82_BDCOM_TYPE}='hn-type';

$conf{AUTH_EXPR}='Agent-Circuit-Id:0x([0-9a-f]{4})00([0-9a-f]{4}):VLAN,PORT_DEC;';

Agent-Remote-Id - Мак ONU
Agent-Circuit-Id - VLAN, Ветка, Номер устройства в ветке

Foxgate

DHCP-Relay-Agent-Information:0x(01)(08)0006([0-9a-f]{4})\d{6}([0-9a-f]{2})(02)(06)([0-9a-f]{12}):ID,SIZE,VLAN,PORT,ID,SIZE,NAS_MAC;
 DHCP-Relay-Circuit-Id = 0x01040b710005
 DHCP-Relay-Remote-Id = 0x0103313233

Выражение:

DHCP-Relay-Circuit-Id:0x01040b710005:;DHCP-Relay-Remote-Id:0x0103313233:
DHCP-Relay-Agent-Information:0x(01)(06)0004([0-9a-f]{4})\d{2}([0-9a-f]{2})(02)(08)([0-9a-f]{12}):ID,SIZE,VLAN,PORT,ID,SIZE,NAS_MAC;
DHCP-Relay-Agent-Information:0x(01)(06)0004([0-9a-f]{4})\d{2}([0-9a-f]{2})(02)(080006)([0-9a-f]{12}):ID,SIZE,VLAN,PORT,ID,SIZE,NAS_MAC;

Пример запроса:

ADSL-Agent-Circuit-Id = 0x0004 0105 00 0a
ADSL-Agent-Remote-Id = 0x000600219191b6f1

Парсер:

ADSL-Agent-Remote-Id:0x0006([0-9a-f]{12}):NAS_MAC;ADSL-Agent-Circuit-Id:0x0004([0-9a-f]{4})([0-9a-f]{4})$:VLAN,PORT';

Alcatel-Lucent

Alcatel-Lucent OmniSwitch 6250

Настройка:

ip helper dhcp-snooping option-82 format ascii circuit-id interface vlan delimiter "."  

Пример запроса*

ADSL-Agent-Circuit-Id = 0x312f332e323631
ADSL-Agent-Remote-Id = 0x0006 00 e0 b1 d6 b6 9b  

Выражение:

$conf{MX80_O82_EXPR}='ADSL-Agent-Remote-Id:0x0006([0-9a-f]{12}):NAS_MAC;ADSL-Agent-Circuit-Id:(\d+)\.(\d+):PORT_DEC,VLAN_DEC:hex2ansii';  

ZTE

Обработка

Формат Telecom Italia

$conf{AUTH_EXPR}='Agent-Circuit-Id:([0-9a-f\.]+) pon (\d+\/\d+\/\d+\/\d+)\W(\d+):NAS_MAC,PORT_DEC,VLAN_DEC:hex2ansii;';

формата airtel

$conf{MX80_O82_EXPR}='ADSL-Agent-Circuit-Id:(\d{1,4})\x3a(\d+\/\d+\/\d+\/\d+\/\d+)$:VLAN_DEC,PORT_DEC:hex2ansii;';

Формат dsl-forum (c200)

$conf{AUTH_EXPR}='Agent-Circuit-Id:([0-9a-f\.]+) pon (\d+\/\s*\d+\/\d+\/\s*\d+)\/\d+\W(\d+):NAS_MAC,PORT_DEC,VLAN_DEC:hex2ansii;';

Accel-ipoe

Аксель передаёт обе пары в одной опции

$conf{AUTH_EXPR}='';
 
# Alcatel OS6250
$conf{AUTH_EXPR} .= 'DHCP-Option82:0x01[0-9a-f]{6}([0-9a-f]{4})[0-9a-f]{6}([0-9a-f]{2})\d{4}([0-9a-f]{12}):VLAN,PORT,NAS_MAC';
 
# ZyXEL ES-3124
$conf{AUTH_EXPR} .= ';DHCP-Option82:^0x01[0-9a-f]{2}[0-9a-f]{2}([0-9a-f]{2})([0-9a-f]{4})([0-9a-f]{16})$:PORT,VLAN,NAS_MAC';
 
# LinkSYS SPS224G4,  Alcatel LS-6224
$conf{AUTH_EXPR} .= ';DHCP-Option82:01[0-9a-f]{6}([0-9a-f]{4})01([0-9a-f]{2})[0-9a-f]{8}([0-9a-f]{12}):VLAN,PORT,NAS_MAC';
 
# D-Link DES-1100
$conf{AUTH_EXPR} .= ';DHCP-Option82:0x01[0-9a-f]{6}([0-9a-f]{4})\d{2}([0-9a-f]{2})[0-9a-f]{8}([0-9a-f]{12}):VLAN,PORT,NAS_MAC';
 
# OLT BDCOM 3310
$conf{AUTH_EXPR} .= ';DHCP-Option82:0x0105([0-9a-f]{4})\d{2}([0-9a-f]{2})\d{6}([0-9a-f]{12}):VLAN,PORT_DEC,NAS_MAC';

Авторизация по логину

$conf{AUTH_EXPR}='DHCP-Subscriber-Id:(.+):LOGIN';

Авторизация по IP

Для схем L3 введена авторизация по IP

$conf{AUTH_IP}=1;
$conf{AUTH_EXPR}='User-Name:(.+):IP';

Авторизация по коммутатору и порту

Система по мак адресу коммутатора ищет в списке серверов доступа, а потом по найденому nas_id и порту сравнивает с данными в модуле Internet+

$conf{NAS_PORT_AUTH}=1;