Опция 82 Dynamix HPNA Master

Модуль управления DHCP сервером
urix24
Сообщения: 19
Зарегистрирован: Ср июл 25, 2018 9:00 am

Re: Опция 82 Dynamix HPNA Master

Сообщение urix24 »

Завел коммутатор как сервер доступа на демо:
101 zyxel_lab с маком 5c:f4:ab:c6:db:de
Добавил его как сервер доступа в опции 82 абону zyxel_82

Проделал тесты на своем локальном биллинге. Те же настройки, сервер доступа - коммутатор с маком 5c:f4:ab:c6:db:de
тип сервера доступа - dhcp DCHP Freeradius in dhcp mode
Порт - 24, VLAN ID - 1100

Код: Выделить всё

DHCP-Option82 = 0x01040018044c02065cf4abc6dbde
0x0104     0018     044c     0206    5cf4abc6dbde
          Порт      VLAN                MAC-коммутатора
Изменил выражение:

Код: Выделить всё

$conf{AUTH_EXPR}='DHCP-Option82:0x[0-9a-f]{6}([0-9a-f]{2})([0-9a-f]{4})[0-9a-f]{4}([0-9a-f]{12}):PORT,VLAN,NAS_MAC;';
Дебаг выражения:

Код: Выделить всё

: DHCP-Option82, 0x[0-9a-f]{6}([0-9a-f]{2})([0-9a-f]{4})[0-9a-f]{4}([0-9a-f]{12}), 0x01040018044c02065cf4abc6dbde/0x01040018044c02065cf4abc6dbde
PORT / 18
VLAN / 044c
NAS_MAC / 5cf4abc6dbde
Админка - Отчет - Интернет - последнее подключение:

Код: Выделить всё

GUEST_MODE	00:1b:fc:cb:7f:86	NAS_MAC: 5c:f4:ab:c6:db:de PORT: 24 VLAN: 1100 MAC: 00:1b:fc:cb:7f:86NEG_FILTER IPOE_LOGIN_NOT_EXIST NAS_MAC: 5c:f4:ab:	zyxel_lab/
accel_1/
Filter-Id = "IPOE_LOGIN_NOT_EXIST"

~AsmodeuS~
Site Admin
Сообщения: 5746
Зарегистрирован: Пт янв 28, 2005 3:11 pm
Контактная информация:

Re: Опция 82 Dynamix HPNA Master

Сообщение ~AsmodeuS~ »

на демо все выдало

проблема была в том что есть много абонентов не привязаных и елис они без маков они попадают под условия

urix24
Сообщения: 19
Зарегистрирован: Ср июл 25, 2018 9:00 am

Re: Опция 82 Dynamix HPNA Master

Сообщение urix24 »

Да, все верно, заработало на локальном биллинге.
~AsmodeuS~ предоставил SQL запрос, который помог разобраться:
SELECT
u.uid,
u.id AS user_name,
n.id AS nas_id,
u.company_id,
u.disable AS user_disable,
u.bill_id,
u.credit,
internet.activate,
u.reduction,
u.ext_bill_id,
UNIX_TIMESTAMP(u.expire) AS account_expire,
UNIX_TIMESTAMP(internet.expire) AS internet_expire,
internet.tp_id,
internet.disable AS internet_disable,
IF(internet.ip>0, INET_NTOA(internet.ip), 0) AS ip,
internet.cid,
internet.logins,
internet.filter_id,
INET_NTOA(internet.netmask) AS netmask,

internet.speed AS user_speed,
internet.id AS service_id,
u.disable

FROM internet_main internet
INNER JOIN users u ON (u.uid=internet.uid)
LEFT JOIN nas n ON (internet.nas_id=n.id)
WHERE ((n.mac='5c:f4:ab:c6:db:de' OR n.mac IS null)
AND (internet.cid='00:1b:fc:cb:7f:86' OR internet.cid='')
AND (internet.vlan='1100' OR internet.vlan='')
AND (internet.port='24' OR internet.port=''));

Сейчас выдает лишь 1-го абонента, удовлетворяющего требованиям. Если есть абоненты не привязанные к макам, портам, вланам, коммутаторам они также попадают под OR Null в запросе.

nginx
Сообщения: 6
Зарегистрирован: Ср май 12, 2021 9:52 am

Re: Опция 82 Dynamix HPNA Master

Сообщение nginx »

Добрый день, у меня та же проблема Filter-Id = "IPOE_LOGIN_NOT_EXIST", можете поделится опытом как вы это решили?
Вон логи радиуса:

[perl] = ok
(160) } # Auth-Type Perl = ok
(160) # Executing section post-auth from file /usr/local/freeradius/etc/raddb/sites-enabled/abills_default
(160) post-auth {
(160) perl: $RAD_REQUEST{'User-Name'} = &request:User-Name -> 'c4:ad:34:c7:b0:2d'
(160) perl: $RAD_REQUEST{'User-Password'} = &request:User-Password -> '??N??????<??????K?ˡ=?k%/?=/?Z??'
(160) perl: $RAD_REQUEST{'NAS-IP-Address'} = &request:NAS-IP-Address -> '10.10.1.1'
(160) perl: $RAD_REQUEST{'NAS-Port'} = &request:NAS-Port -> '880'
(160) perl: $RAD_REQUEST{'Filter-Id'} = &request:Filter-Id -> 'IPOE_LOGIN_NOT_EXIST'
(160) perl: $RAD_REQUEST{'Session-Timeout'} = &request:Session-Timeout -> '604800'
(160) perl: $RAD_REQUEST{'Called-Station-Id'} = &request:Called-Station-Id -> 'enp2s0'
(160) perl: $RAD_REQUEST{'Calling-Station-Id'} = &request:Calling-Station-Id -> 'c4:ad:34:c7:b0:2d'
(160) perl: $RAD_REQUEST{'NAS-Identifier'} = &request:NAS-Identifier -> 'nas02'
(160) perl: $RAD_REQUEST{'NAS-Port-Type'} = &request:NAS-Port-Type -> 'Ethernet'
(160) perl: $RAD_REQUEST{'Event-Timestamp'} = &request:Event-Timestamp -> 'May 12 2021 09:54:02 UTC'
(160) perl: $RAD_REQUEST{'NAS-Port-Id'} = &request:NAS-Port-Id -> 'ipoe0'
(160) perl: $RAD_REQUEST{'DHCP-Option82'} = &request:DHCP-Option82 -> '0x010600010002010102061c877918e014'
(160) perl: $RAD_REQUEST{'Acct-Interim-Interval'} = &request:Acct-Interim-Interval -> '300'
(160) perl: $RAD_REPLY{'User-Name'} = &reply:User-Name -> 'c4:ad:34:c7:b0:2d'
(160) perl: $RAD_REPLY{'User-Password'} = &reply:User-Password -> '??N??????<??????K?ˡ=?k%/?=/?Z??'
(160) perl: $RAD_REPLY{'NAS-IP-Address'} = &reply:NAS-IP-Address -> '10.10.1.1'
(160) perl: $RAD_REPLY{'NAS-Port'} = &reply:NAS-Port -> '880'
(160) perl: $RAD_REPLY{'Filter-Id'} = &reply:Filter-Id -> 'IPOE_LOGIN_NOT_EXIST'
(160) perl: $RAD_REPLY{'Session-Timeout'} = &reply:Session-Timeout -> '604800'
(160) perl: $RAD_REPLY{'Called-Station-Id'} = &reply:Called-Station-Id -> 'enp2s0'
(160) perl: $RAD_REPLY{'Calling-Station-Id'} = &reply:Calling-Station-Id -> 'c4:ad:34:c7:b0:2d'
(160) perl: $RAD_REPLY{'NAS-Identifier'} = &reply:NAS-Identifier -> 'nas02'
(160) perl: $RAD_REPLY{'NAS-Port-Type'} = &reply:NAS-Port-Type -> 'Ethernet'
(160) perl: $RAD_REPLY{'Event-Timestamp'} = &reply:Event-Timestamp -> 'May 12 2021 09:54:02 UTC'
(160) perl: $RAD_REPLY{'NAS-Port-Id'} = &reply:NAS-Port-Id -> 'ipoe0'
(160) perl: $RAD_REPLY{'DHCP-Option82'} = &reply:DHCP-Option82 -> '0x010600010002010102061c877918e014'
(160) perl: $RAD_REPLY{'Acct-Interim-Interval'} = &reply:Acct-Interim-Interval -> '300'
(160) perl: $RAD_CHECK{'Auth-Type'} = &control:Auth-Type -> 'Perl'
(160) perl: $RAD_CONFIG{'Auth-Type'} = &control:Auth-Type -> 'Perl'
(160) perl: &request:Session-Timeout = $RAD_REQUEST{'Session-Timeout'} -> '604800'
(160) perl: &request:NAS-Port-Id = $RAD_REQUEST{'NAS-Port-Id'} -> 'ipoe0'
(160) perl: &request:User-Name = $RAD_REQUEST{'User-Name'} -> 'c4:ad:34:c7:b0:2d'
(160) perl: &request:NAS-Port-Type = $RAD_REQUEST{'NAS-Port-Type'} -> 'Ethernet'
(160) perl: &request:Filter-Id = $RAD_REQUEST{'Filter-Id'} -> 'IPOE_LOGIN_NOT_EXIST'
(160) perl: &request:Called-Station-Id = $RAD_REQUEST{'Called-Station-Id'} -> 'enp2s0'
(160) perl: &request:NAS-IP-Address = $RAD_REQUEST{'NAS-IP-Address'} -> '10.10.1.1'
(160) perl: &request:User-Password = $RAD_REQUEST{'User-Password'} -> '??N??????<??????K?ˡ=?k%/?=/?Z??'
(160) perl: &request:Event-Timestamp = $RAD_REQUEST{'Event-Timestamp'} -> 'May 12 2021 09:54:02 UTC'
(160) perl: &request:NAS-Identifier = $RAD_REQUEST{'NAS-Identifier'} -> 'nas02'
(160) perl: &request:DHCP-Option82 = $RAD_REQUEST{'DHCP-Option82'} -> '0x010600010002010102061c877918e014'
(160) perl: &request:Acct-Interim-Interval = $RAD_REQUEST{'Acct-Interim-Interval'} -> '300'
(160) perl: &request:NAS-Port = $RAD_REQUEST{'NAS-Port'} -> '880'
(160) perl: &request:Calling-Station-Id = $RAD_REQUEST{'Calling-Station-Id'} -> 'c4:ad:34:c7:b0:2d'
(160) perl: &reply:Session-Timeout = $RAD_REPLY{'Session-Timeout'} -> '604800'
(160) perl: &reply:NAS-Port-Id = $RAD_REPLY{'NAS-Port-Id'} -> 'ipoe0'
(160) perl: &reply:User-Name = $RAD_REPLY{'User-Name'} -> 'c4:ad:34:c7:b0:2d'
(160) perl: &reply:NAS-Port-Type = $RAD_REPLY{'NAS-Port-Type'} -> 'Ethernet'
(160) perl: &reply:Filter-Id = $RAD_REPLY{'Filter-Id'} -> 'IPOE_LOGIN_NOT_EXIST'
(160) perl: &reply:Called-Station-Id = $RAD_REPLY{'Called-Station-Id'} -> 'enp2s0'
(160) perl: &reply:NAS-IP-Address = $RAD_REPLY{'NAS-IP-Address'} -> '10.10.1.1'
(160) perl: &reply:User-Password = $RAD_REPLY{'User-Password'} -> '??N??????<??????K?ˡ=?k%/?=/?Z??'
(160) perl: &reply:Event-Timestamp = $RAD_REPLY{'Event-Timestamp'} -> 'May 12 2021 09:54:02 UTC'
(160) perl: &reply:NAS-Identifier = $RAD_REPLY{'NAS-Identifier'} -> 'nas02'
(160) perl: &reply:DHCP-Option82 = $RAD_REPLY{'DHCP-Option82'} -> '0x010600010002010102061c877918e014'
(160) perl: &reply:Acct-Interim-Interval = $RAD_REPLY{'Acct-Interim-Interval'} -> '300'
(160) perl: &reply:NAS-Port = $RAD_REPLY{'NAS-Port'} -> '880'
(160) perl: &reply:Calling-Station-Id = $RAD_REPLY{'Calling-Station-Id'} -> 'c4:ad:34:c7:b0:2d'
(160) perl: &control:Auth-Type = $RAD_CHECK{'Auth-Type'} -> 'Perl'
(160) [perl] = ok
(160) } # post-auth = ok
(160) Sent Access-Accept Id 1 from 10.10.1.2:1812 to 10.10.1.1:52004 length 0
(160) Session-Timeout = 604800
(160) NAS-Port-Id = "ipoe0"
(160) User-Name = "c4:ad:34:c7:b0:2d"
(160) NAS-Port-Type = Ethernet
(160) Filter-Id = "IPOE_LOGIN_NOT_EXIST"
(160) Called-Station-Id = "enp2s0"
(160) NAS-IP-Address = 10.10.1.1
(160) User-Password = "\272\373N\216\264\247\230\237\023<\232\337\377\202\303\342K\200ˡ=\360k%/\002=/\016Z\222\303"
(160) Event-Timestamp = "May 12 2021 09:54:02 UTC"
(160) NAS-Identifier = "nas02"
(160) DHCP-Option82 = 0x010600010002010102061c877918e014
(160) Acct-Interim-Interval = 300
(160) NAS-Port = 880
(160) Calling-Station-Id = "c4:ad:34:c7:b0:2d"
(160) Finished request
Waking up in 0.4 seconds.
(157) Cleaning up request packet ID 1 with timestamp +545
Waking up in 2.5 seconds.

urix24
Сообщения: 19
Зарегистрирован: Ср июл 25, 2018 9:00 am

Re: Опция 82 Dynamix HPNA Master

Сообщение urix24 »

У меня проблема была в том, что были пустые значения портов в биллинге. (тестировал заведение абонентов с пустыми полями опции 82)
выше есть даже Sql запрос логики работы биллинга - аутентификации.
Если аутентификация по набору параметров, то биллинг считает, что пустые поля также подходят. Если подходит больше 1-ой учетки , то вылетает ошибка IPOE_LOGIN_NOT_EXIST

nginx
Сообщения: 6
Зарегистрирован: Ср май 12, 2021 9:52 am

Re: Опция 82 Dynamix HPNA Master

Сообщение nginx »

Я когда вставляю mac клиента в CID тогда все вяжется и выдается ip, если убираю mac, тогда accel-ipoe в логах выдает: error: ipoe0: no free IPv4 address и не выдает клиенту ip, в чем может быть проблема, куда копать?

urix24
Сообщения: 19
Зарегистрирован: Ср июл 25, 2018 9:00 am

Re: Опция 82 Dynamix HPNA Master

Сообщение urix24 »

Если CID убираете, то на основании чего аутентификация проходит ? Проходит ли она вообще ?
Что радиус говорит ?

nginx
Сообщения: 6
Зарегистрирован: Ср май 12, 2021 9:52 am

Re: Опция 82 Dynamix HPNA Master

Сообщение nginx »

Если убираю cid то аутентификация не проходит, кидал логи радиуса выше

urix24
Сообщения: 19
Зарегистрирован: Ср июл 25, 2018 9:00 am

Re: Опция 82 Dynamix HPNA Master

Сообщение urix24 »

Вижу, что 82 опция передается DHCP-Option82 = $RAD_REPLY{'DHCP-Option82'} -> '0x010600010002010102061c877918e014'

Она правильно разбирается regexp -ми ?
Можно глянуть в Отчёт>Интернет+>Последнее подключение
Что там биллинг пишет ? разбирает ли, то что нужно в Текст сообщения: port, vlan ?

Если правильно разбирает нужно проверить - есть ли такой абонент стакими параметрами 82 опции, если есть, возможно есть абонент с пустыми полями 82 опции.

nginx
Сообщения: 6
Зарегистрирован: Ср май 12, 2021 9:52 am

Re: Опция 82 Dynamix HPNA Master

Сообщение nginx »

Да, все попытки подключится видно в биллинге, это лог при попытке овторизоватся(cid пустой)
LOG_INFO GUEST_MODE c4:ad:34:c7:b0:2d USER MAC 'c4:ad:34:c7:b0:2d' NEG_FILTER IPOE_LOGIN_NOT_EXIST CID: c4:ad:34:c7:b0:2d GT: 0.01172


это лог когда я вставляю мак в поле cid
LOG_INFO AUTH test2 USER MAC 'c4:ad:34:c7:b0:2d' CID: c4:ad:34:c7:b0:2d GT: 0.09149

urix24
Сообщения: 19
Зарегистрирован: Ср июл 25, 2018 9:00 am

Re: Опция 82 Dynamix HPNA Master

Сообщение urix24 »

В сообщении биллинга нет никаких параметров по 82 опции.
В config.pl
настроена аутентификация с разбором 82 опции ?

Например так:
$conf{AUTH_PARAMS}=1; аутентификация по набору параметров

Разбор DHCP-Option82 на соответствие нужных значений, это для примера просто(свой regexp нужен):
$conf{AUTH_EXPR}='DHCP-Option82:^0x0106[0-9a-f]{12}0206([0-9a-f]{12})$:PORT_MULTI;';

nginx
Сообщения: 6
Зарегистрирован: Ср май 12, 2021 9:52 am

Re: Опция 82 Dynamix HPNA Master

Сообщение nginx »

вроде не настроена, expr олта есть, выводит в логи порт и влан, accel пишет no free IPv4 address,
уже вывод такой -
LOG_INFO GUEST_MODE c4:ad:34:c7:b0:2d NAS_MAC: 02:06:1c:87:79:18 PORT: 1 VLAN: 2 MAC: c4:ad:34:c7:b0:2d NEG_FILTER IPOE_LOGIN_NOT_EXIST CID: c4:ad:34:c7:b0 02:06:1c:87:79:18
nas02/

urix24
Сообщения: 19
Зарегистрирован: Ср июл 25, 2018 9:00 am

Re: Опция 82 Dynamix HPNA Master

Сообщение urix24 »

Есть еще опция в config.pl
$conf{AUTH_EXPR_DEBUG}=4;
Выводит в /tmp/dhcphosts_expr
лог разбора 82 опции

urix24
Сообщения: 19
Зарегистрирован: Ср июл 25, 2018 9:00 am

Re: Опция 82 Dynamix HPNA Master

Сообщение urix24 »

получается неправильно сейчас regexp настроен.
Если прописать в учетке сейчас port 1, vlan 2 аутентификация должна пройти.
Нужно правильно regexp настроить под разбор реальных значений.

nginx
Сообщения: 6
Зарегистрирован: Ср май 12, 2021 9:52 am

Re: Опция 82 Dynamix HPNA Master

Сообщение nginx »

прописал в конфиг, создался файл в нем такие логи
Calling-Station-Id, ([0-9a0-f]{4})([0-9a0-f]{6}), c4:ad:34:c7:b0:2d/c4:ad:34:c7:b0:2d
VLAN / c4:a
/ d:34:c

: Calling-Station-Id, ([0-9a0-f]{4})([0-9a0-f]{6}), c4:ad:34:c7:b0:2d/c4:ad:34:c7:b0:2d
VLAN / c4:a
/ d:34:c

: Calling-Station-Id, ([0-9a0-f]{4})([0-9a0-f]{6}), c4:ad:34:c7:b0:2d/c4:ad:34:c7:b0:2d
VLAN / c4:a
/ d:34:c

: Calling-Station-Id, ([0-9a0-f]{4})([0-9a0-f]{6}), c4:ad:34:c7:b0:2d/c4:ad:34:c7:b0:2d
VLAN / c4:a
/ d:34:c

: DHCP-Option82, ([0-9a0-f]{4})([0-9a0-f]{6}), 0x010600010002010102061c877918e014/0x010600010002010102061c877918e014
VLAN / 0x01
/ 060001

: DHCP-Option82, ([0-9a0-f]{4})([0-9a0-f]{6}), 0x010600010002010102061c877918e014/0x010600010002010102061c877918e014
VLAN / 0x01
/ 060001

: DHCP-Option82, ([0-9a0-f]{4})([0-9a0-f]{6}), 0x010600010002010102061c877918e014/0x010600010002010102061c877918e014
VLAN / 0x01
/ 060001

: DHCP-Option82, ([0-9a0-f]{4})([0-9a0-f]{6}), 0x010600010002010102061c877918e014/0x010600010002010102061c877918e014
VLAN / 0x01
/ 060001

: DHCP-Option82, ([0-9a0-f]{4})([0-9a0-f]{6}), 0x010600010002010102061c877918e014/0x010600010002010102061c877918e014
VLAN / 0x01
/ 060001

: DHCP-Option82, ([0-9a0-f]{4})([0-9a0-f]{6}), 0x010600010002010102061c877918e014/0x010600010002010102061c877918e014
VLAN / 0x01
/ 060001

: DHCP-Option82, ([0-9a0-f]{4})([0-9a0-f]{6}), 0x010600010002010102061c877918e014/0x010600010002010102061c877918e014
VLAN / 0x01
/ 060001

: DHCP-Option82, ([0-9a0-f]{4})([0-9a0-f]{6}), 0x010600010002010102061c877918e014/0x010600010002010102061c877918e014
VLAN / 0x01
/ 060001

Ответить