Versions Compared

Key

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

Table of Contents


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

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

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

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

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

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

Если да - начинает проходить по списку указанных шаблонов. 
При попадании в параметры система подставляет выбранные VLAN PORT NAS_MAC MAC MAC_DEC (если мак
increment_port

Прибавить единицу к номеру порта. Нужно для коммутаторов H3C, они передают номер порта на единицу меньший (0 вместо 1, 6 вместо 7, ...).

Тестировалось на модели H3C S5100-26C (Software Version 3.10, Release 2203P08).

Не работает вместе с hex2ansii.

Не работает с параметром PORT_MULTI.

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

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

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

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

NAS_
NAS_MAC

MAC адрес сервера доступа. Если парсер находит данную переменную в формате xxxxxxxxxxxx приводи её в вид xx:xx:xx:xx:xx:xx

. Так же некоторые устройства могут передавать просто идентификаторы не связанные MAC, их также можно вносить в параметр NAS_MAC  и снавнивать с полем MAC  настроек сервера доступа.

Например:


NAS-Identifier:(.+):NAS_MAC


Где NAS-Identifier = "Router1"


NAS_MAC_HEXMAC адрес сервера доступа в виде ASCII закодированного в HEX
PORTПорт в шестнадцатеричном формате конвертируется в десятеричный при обработке
PORT_MULTIПорт в шестнадцатеричном формате без конвертации
PORT_DEC_PORTПорт в десятеричном формате
VLANVLAN в шестнадцатиричном формате
VLAN_DECVLAN в десятеричном формате
SERVER_VLANСерверный VLAN в десятеричном формате
AGENT_REMOTE_ID
CIRCUIT_ID
LOGINЛогин абонента
USER_MACЕсли парсер находит данную переменную приводи её в вид xx:xx:xx:xx:xx:xx



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

Версия билинга не ниже 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-3528MHuawei 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 Blockcode
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

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

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 типы опций

  • hn-type - Настройка авторизации по ONU + VLAN в опции Agent-Remote-Id передаётся MAC ONU (Клиентская приставка)

  • cm-type - Настройка авторизации по ONU + VLAN в опции Agent-Remote-Id передаётся MAC OLT (Главная станция)

Настройка 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-Remote-Id:0x([0-9a-f]{12}):USER_MAC;Agent-Circuit-Id:0x([0-9a-f]{4})00([0-9a-f]{4}):VLAN,PORT_DEC;';

Agent-Remote-Id - Мак ONU (USER_MAC)
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
  • DGS-1100-06ME
Code Block
languagebash
titleПример
 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$conf{AUTH_EXPR} .= "Accel-Agent-Remote-Id:0x0006([0-9a-f]{4})\d{2}12}):NAS_MAC;Accel-Agent-Circuit-Id:0x0004([0-9a-f]{2})(02)(084})([0-9a-f]{124}):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
  • des-3028

  • des-1210-28
  • dgs-3120

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

Code Block
languagebash
ADSL-Agent-Circuit-Id = 0x0004 0105 00 0a
ADSL0x00040105000a
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]{2}([0-9a-f]{42})$: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';  

VSOLUTION

ZTE

Обработка

Формат Telecom Italia

Code Blocklanguagebash
  • VSOL-1600D4
  • VSOL-1600D8
  • VSOL-1600D16
Code Block
$conf{AUTH_EXPR}='Agent-Circuit-Id:^0x([0-9a-f\.]+) pon (\d+\/\d+\/\d+\/\d+)\W(\d+):NAS_MAC{4})([a-f0-9]{4}[a-f0-9]{4})([0-9a-f]{12})$:VLAN,PORT_DEC,VLAN_DEC:hex2ansii;';

формата airtel

Code Block
USER_MAC;Agent-Remote-Id:0x([0-9a-f]{12})$:NAS_MAC;';

Accel-ipoe

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

Code Block
languagebash
$conf{MX80_O82AUTH_EXPR}='';
 
# Alcatel OmniStack OS-LS-6224
$conf{AUTH_EXPR} .= 'ADSLAccel-Agent-CircuitRemote-Id:(\d{1,4})\x3a(\d+\/\d+\/\d+\/\d+\/\d+)$:VLAN_DEC,PORT_DEC:hex2ansii;';

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

Code Block
languagebash
^0x0006([0-9a-f]{12}):NAS_MAC;Accel-Agent-Circuit-Id:0x0004([0-9a-f]{4})01([0-9a-f]{2})$:VLAN,PORT';
 
# ZyXEL ES-3124
$conf{AUTH_EXPR} .= 'Agent-Circuit-Id:(;DHCP-Option82:^0x01[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}=']{2}[0-9a-f]{2}([0-9a-f]{2})([0-9a-f]{4})([0-9a-f]{16})$:PORT,VLAN,NAS_MAC';
 
# LinkSYS SPS224G4,  Alcatel OS6250LS-6224
$conf{AUTH_EXPR} .= ';DHCP-Option82:0x0101[0-9a-f]{6}([0-9a-f]{4})01([0-9a-f]{62}()[0-9a-f]{2})\d{48}([0-9a-f]{12}):VLAN,PORT,NAS_MAC';
 
# ZyXELD-Link ESDES-31241100
$conf{AUTH_EXPR} .= ';DHCP-Option82:^0x010x01[0-9a-f]{26}([0-9a-f]{4})\d{2}([0-9a-f]{2})([0-9a-f]{48})([0-9a-f]{1612})$:VLAN,PORT,VLAN,NAS_MAC';
 
# LinkSYSOLT SPS224G4,  Alcatel LS-6224
BDCOM 3310
$conf{AUTH_EXPR} .= ';DHCP-Option82:01[0-9a-f]{6}0x0105([0-9a-f]{4})01\d{2}([0-9a-f]{2})[0-9a-f]{8\d{6}([0-9a-f]{12}):VLAN,PORT_DEC,NAS_MAC';
 
# D-Link DES-1100 OLT GCOM (тестировалось на EL5610-16P)
$conf{AUTH_EXPR} .= ';DHCP-Option82:0x010x[0-9a-f]{68}([0-9a-f]{4})\d{2}([0-9a-f]{26})([0-9a-f]{12})[0-9a-f]{8}([0-9a-f]{12}):VLAN,PORT_DEC,USER_MAC,NAS_MAC';
 
# OLT BDCOM 3310


Gcom и Mikrotik

Code Block
languageperl
titlePON OLT GCOM EL-5610-8P
$conf{AUTH_EXPR} .= ';DHCP-Option82:0x0105(Agent-Remote-Id:^0x[0-9a-f]{4})\d{2}([0-9a-f]{2})\d{6}([0-9a-f]{12})$:VLAN,PORT_DEC,NAS_MAC';

# OLT GCOM (тестировалось на EL5610-16P)
$conf{AUTH_EXPR} .= ';DHCP-Option82:0x;Agent-Circuit-Id:^0x[0-9a-f]{84}([0-9a-f]{4})([0-9a-f]{6})([0-9a-f]{12})[$:VLAN,PORT_DEC,USER_MAC';


Code Block
languageperl
titlePON OLT GCOM EL-5610-16P
$conf{AUTH_EXPR} = 'Agent-Remote-Id:^0x[0-9a-f]{84}([0-9a-f]{12}):VLAN,PORT_DEC,USER_MAC,$:NAS_MAC';

Gcom и Mikrotik

perl
Code Block
language
;Agent-Circuit-Id:^0x00([0-9a-f]{4})(\d{6})([0-9a-f]{12})$:VLAN,PORT_DEC,USER_MAC$:VLAN,PORT_DEC,USER_MAC';


RAISECOM

  • OLT RAISECOM 5508GP

Конфигурация

Code Block
firmware ISCOM5508-GPSC_ROAP_2.62.1_20180904(

interface gpon-olt 1/1
transceiver ddm enable
create gpon-onu 7 sn RCMG1918554C line-profile-id 50 service-profile-id 50
switchport trunk allowed vlan 2011
switchport trunk untagged vlan remove 1
switchport mode trunk
vlan drop-untagged
ip dhcp information option circuit-id \%c-\%s/\%p/\%i

возможнs такие ключи
\%v ------svlan;
\%c ------cvlan;
\%l ------the olt host name;
\%j ------Rack number, For some devices there is no concept of racks,the value is "0";
\%k ------frame number, For some devices there is no concept of frame,the value is "0";
\%s ------Slot number;
\%y ------Sub-slot number,For some devices there is no concept of frame,the value is "0";
\%p ------ gpon port number;
\%i ------ ont number.
\%n ---- ONT S/N

interface ten-gigabitethernet 1/5
ip dhcp snooping trust

vlan 2011
ip dhcp snooping


ip dhcp snooping
ip dhcp information option


Выражение

Code Block
$conf{AUTH_EXPR} = 'Accel-Agent-Remote-Id:^0x([0-9a-f]{12})$:NAS_MAC;Accel-Agent-Circuit-Id:^(\d+)-(\d+\/\s*\d+_\d+)$:VLAN_DEC,PORT_DEC:hex2ansii;';

H3C

  • H3C S5100-26C (Software Version 3.10, Release 2203P08)
Code Block
$conf{AUTH_EXPR} = 'ADSL-Agent-Circuit-Id:^0x0004([0-9a-f]{4})00([0-9a-f]{2})$:VLAN,PORT:increment_port;ADSL-Agent-Remote-Id:^0x0006([0-9a-f]{12})$:NAS_MAC;';

Juniper

  • QFX5100
Code Block
$conf{AUTH_EXPR} = 'ADSL-Agent-Circuit-Id:^([a-z0-9./-]+)\x3a(\d+)$:PORT_MULTI,VLAN_DEC:hex2ansii;
ADSL-Agent-Remote-Id:^([0-9a-f]{2}\x3a[0-9a-f]{2}\x3a[0-9a-f]{2}\x3a[0-9a-f]{2}\x3a[0-9a-f]{2}\x3a[0-9a-f]{2})\x3a([a-z0-9./-]+)$:NAS_MAC,PORT_MULTI:hex2ansii;';


ZTE

Выражение для определения абонента по ONU

ZTE Firmware v1.*
Code Block
titleФормат Telecom Italia (ti)
$conf{AUTH_EXPR}='Agent-Circuit-Id:([0-9a-f\.]+) pon (\d+\/\d+\/\d+\/\d+)\W(\d+):NAS_MAC,PORT_DEC,VLAN_DEC:hex2ansii;';


Code Block
titleформата airtel
$conf{AUTH_EXPR}='ADSL-Agent-Circuit-Id:(\d{1,4})\x3a(\d+\/\d+\/\d+\/\d+\/\d+)$:VLAN_DEC,PORT_DEC:hex2ansii;';


Code Block
titleФормат 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;';


Code Block
titleФормат для ZTE C610 с ручной настройкой Options82
$conf{AUTH_EXPR}='Agent-Circuit-Id:^(\d\/\d\/\d+.\d+)_([0-9]+)_([0-9A-F]{12})_([0-9a-f]{4}\.[0-9a-f]{4}\.[0-9a-f]{4}):PORT_MULTI,VLAN_DEC,ONU_SN,NAS_MAC:hex2ansii;


ZTE V1.2.5P3

плата 1/1/1   GTGHK      MVR        V1.2.5P3          2017-05-16 04:34:12 6010580


Code Block
titleПример запроса
Accel-Agent-Circuit-Id = 0x346361632e306164612e373463325f30305f30302f302f312f313a33362e302e313a333138
расшифровка 4cac.0ada.74c2_00_00/0/1/1:36.0.1:318


Code Block
titleФормат telecom italia ti (c320)
$conf{AUTH_EXPR}='Accel-Agent-Circuit-Id:([0-9a-f\.]+)_00_(\d+\/\d+\/\d+\/\d+\W\d+)[\.0-9]+\W+(\d+):NAS_MAC,PORT_DEC,VLAN_DEC:hex2ansii;';


ZTE Firmware v2.*

DSL-FORUM-PON

Code Block
titleDSL-FORUM-PON
$conf{AUTH_EXPR}='DHCP-Relay-Circuit-Id:([0-9A-F]{12})\/(\d\/\d\/\d+.\d+)\/\d\/([0-9]+):MAC,PORT_DEC,VLAN_DEC:hex2ansii';


Zyxel

  • ES-2024A

В параметре настройки Option 82  прописываем


Relay-Agent-Information: 000012


12  это номер сервера доступа. Обязательно в строке должно быть 6 символов. Сгенерированные параметры Option 82 прописываем в серверах доступа  поле MAC.

В строке Agent-Circuit-Id  4 байта порт, 4 байта VLAN и 16 байт Ваша срока прописанная в параметре Relay-Agent-Information.


Code Block
titleES-2024A
$conf{AUTH_EXPR} = 'Agent-RemoteCircuit-Id:^0x([0-9a-f]{4}([0-9a-f]{12})$:NAS_MAC;Agent-Circuit-Id:^0x[0-9a-f]{4}([0-9a-f]{4})([0-9a-f]{6})([0-9
a-f]{12})$:PORT,VLAN,PORT_DEC,USERNAS_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;


Каскадная авторизация


Авторизация по очереди за несколькими параметрами:

  • IP адрес, если он передается при авторизации
  • Комутатор/Порт
  • MAC


Code Block
$conf{AUTH_IP}=1;
$conf{NAS_PORT_AUTH}=1;
$conf{NAS_SECOND_MAC_AUTH}=1;