Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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

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

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

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

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

Система при получении параметра проверяет нужно ли использовать внешние выражения (При включении выражений система отключает шаблон по умолчанию для распознавания коммутаторов). 

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

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

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

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


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

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

Cisco

  • 3550

Code Block
languagebash
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

  • Edge-Core ES-3528M

  • Huawei S2318TP-EI

Code Block
languagebash
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;
  • Edge-Core ES-3526XA V2

  • Edge-Core ES-3510MA

  • Huawei s2326tp-ei (Версия прошивки: s2300ei-v100r006c05.cc)

Code Block
languagebash
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;
  • Edge-Core ESC3510-28T

запрос:

Code Block
languagebash
DHCP-Relay-Circuit-Id = 0x0004020c0119
DHCP-Relay-Remote-Id = 0x0006cc37ab8fafbc

Расшифровка

Code Block
languagebash
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

  • GePON NTE-2 и NTE-RG

Code Block
languagebash
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

  • S2326TP-EI

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

Code Block
languagebash
Agent-Remote-Id = 0x000604bd70f9cd11
Agent-Circuit-Id = 0x00040fa00018

Настройка

Code Block
languagebash
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

  • OLT BDCOM 3310

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

Code Block
languagebash
$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

Code Block
languagebash
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';

Code Block
languagebash
$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

  • Foxgate-s-6224-s2

Code Block
languagebash
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;
  • D-Link DGS-1100-10

Code Block
languagebash
 DHCP-Relay-Circuit-Id = 0x01040b710005
 DHCP-Relay-Remote-Id = 0x0103313233

Выражение:

Code Block
languagebash
DHCP-Relay-Circuit-Id:0x01040b710005:;DHCP-Relay-Remote-Id:0x0103313233:


Code Block
languagebash
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;
  • Dlink DES-3200-26 для Hw A1,B1 Firmware Version1.28.009 , HW C1 Firmware Version 4.00.24 DGS-3120-24SC hw a2 Firmware VersionBuild 2.00.010
Code Block
languagebash
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;
  • D-link DES3028

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

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

Парсер:

Code Block
languagebash
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

Настройка:

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

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

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

Выражение:

Code Block
languagebash
$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

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

формата airtel

Code Block
languagebash
$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)

Code Block
languagebash
$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

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

Code Block
languagebash
$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';


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

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


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

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

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


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

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

Code Block
languagebash
$conf{NAS_PORT_AUTH}=1;