NAS-Port и NAS-Port-Id

Radius related questions
boco
Posts: 7
Joined: 22 Dec 2014, 07:46

NAS-Port и NAS-Port-Id

Post by boco » 25 Mar 2015, 10:59

Дмитрий,

скажите, я правильно понимаю, что для PPP на этапе отправки Access Request параметры NAS-Port и NAS-Port-Id не определены? Судя по коду, для заполнения unit_idx вызывается функция connect_ppp_channel(), которая, в свою очередь, вызывается из ppp_auth_succeeded().

Проблема в том, что модуль Dialup BGBilling'а ожидает совпадающий NAS-Port в Access и Account запросах, иначе не стартует сессию. =(

Пример:
[2015-03-25 14:13:31]: info: : send [RADIUS(1) Access-Request id=1 <User-Name "5"> <NAS-Identifier "accel-ppp"> <NAS
-IP-Address 81.30.199.200> <NAS-Port 4294967295> <NAS-Port-Id ""> <NAS-Port-Type Virtual> <Service-Type Framed-User>
<Framed-Protocol PPP> <Calling-Station-Id "e8:40:f2:b2:18:b7"> <Called-Station-Id "eth1.807:00:07:e9:02:09:aa"> <CHAP
-Challenge > <CHAP-Password >]
...
[2015-03-25 14:13:32]: info: ppp0: send [RADIUS(1) Accounting-Request id=1 <User-Name "5"> <NAS-Identifier "accel-ppp"> <NAS-IP-Address 81.30.199.200> <NAS-Port 0> <NAS-Port-Id "ppp0"> <NAS-Port-Type Virtual> <Service-Type Framed-User> <Framed-Protocol PPP> <Calling-Station-Id "e8:40:f2:b2:18:b7"> <Called-Station-Id "eth1.807:00:07:e9:02:09:aa"> <Acct-Status-Type Start> <Acct-Authentic RADIUS> <Acct-Session-Id "026f217fdb05277c"> <Acct-Session-Time 0> <Acct-Input-Octets 0> <Acct-Output-Octets 0> <Acct-Input-Packets 0> <Acct-Output-Packets 0> <Acct-Input-Gigawords 0> <Acct-Output-Gigawords 0> <Framed-IP-Address 81.30.199.245>]

Dmitry
Администратор
Posts: 954
Joined: 09 Oct 2014, 10:06

Re: NAS-Port и NAS-Port-Id

Post by Dmitry » 25 Mar 2015, 13:37

а если вообще нет этого атрибута ?

boco
Posts: 7
Joined: 22 Dec 2014, 07:46

Re: NAS-Port и NAS-Port-Id

Post by boco » 25 Mar 2015, 17:08

разработчик (цитирую по памяти): "NAS-Port является ключевым полем при поиске сессии"

Собственно вопрос простой - это я криворук или так by design? А если второе, то по какому атрибуту bgb может связать auth и acct? Из общего я вижу только User-Name и Calling-Station-Id, однако в нашем случае это не уникальные ключи, и даже их комбинация не уникальна =(

User avatar
Абрамчук Вадим
Posts: 75
Joined: 21 Oct 2014, 20:15

Re: NAS-Port и NAS-Port-Id

Post by Абрамчук Вадим » 25 Mar 2015, 21:03

1) Auth и Acct и не должны быть связаны. Это by design у протокола RADIUS.
2) Если сильно хочется - accel-ppp умеет назначать и передавать Acct-Session-Id во время Auth. Да, это нарушение протокола. Но это удобный костыль для некоторых биллингов.

boco
Posts: 7
Joined: 22 Dec 2014, 07:46

Re: NAS-Port и NAS-Port-Id

Post by boco » 26 Mar 2015, 02:16

Абрамчук Вадим wrote:Если сильно хочется - accel-ppp умеет назначать и передавать Acct-Session-Id во время Auth.
Как?

Dmitry
Администратор
Posts: 954
Joined: 09 Oct 2014, 10:06

Re: NAS-Port и NAS-Port-Id

Post by Dmitry » 26 Mar 2015, 07:12

[radius]
sid_in_auth=1

хм, в документации забыл его описать...

boco
Posts: 7
Joined: 22 Dec 2014, 07:46

Re: NAS-Port и NAS-Port-Id

Post by boco » 26 Mar 2015, 09:27

Спасибо! Осталось реализовать нужный функционал в биллинге =)

dendalf
Posts: 1
Joined: 26 Mar 2015, 13:35

Re: NAS-Port и NAS-Port-Id

Post by dendalf » 26 Mar 2015, 13:37

Абрамчук Вадим wrote:1) Auth и Acct и не должны быть связаны. Это by design у протокола RADIUS.
2) Если сильно хочется - accel-ppp умеет назначать и передавать Acct-Session-Id во время Auth. Да, это нарушение протокола. Но это удобный костыль для некоторых биллингов.
Почему нарушение протокола ?
https://tools.ietf.org/html/rfc2866#section-5.5
This attribute is a unique Accounting ID to make it easy to match
start and stop records in a log file. The start and stop records
for a given session MUST have the same Acct-Session-Id. An
Accounting-Request packet MUST have an Acct-Session-Id. An
Access-Request packet MAY have an Acct-Session-Id; if it does,
then the NAS MUST use the same Acct-Session-Id in the Accounting-
Request packets for that session.
Протокол не исключает этого варианта.

Тут кстати идет речь о старом модуле BGBilling, который не поддерживает Acct-Session-Id. Новый поддерживает и связка Auth и Acct там необязательна(хотя ее отсутствие в общем случае может привести к проблемам в некоторых случаях).

User avatar
Абрамчук Вадим
Posts: 75
Joined: 21 Oct 2014, 20:15

Re: NAS-Port и NAS-Port-Id

Post by Абрамчук Вадим » 26 Mar 2015, 16:38

Может быть. Значит, я ошибся.

brodayga
Posts: 95
Joined: 23 Oct 2014, 06:13

Re: NAS-Port и NAS-Port-Id

Post by brodayga » 07 Apr 2015, 16:32

на днях поставил последнюю версии accel и обнаружил что

Code: Select all

info: : send [RADIUS(1) Access-Request id=1
.....
<NAS-Port 4294967295> <NAS-Port-Id ""> 
.....
]
вместо привычных (не очень старая версия accel-ppp version faf40d498c6f519ea24e4063c2e64b8e9581cbbb)

Code: Select all

 info: ppp0: send [RADIUS(1) Access-Request id=1
.....
 <NAS-Port 0> <NAS-Port-Id "ppp0">
.....
Билинг Access и accounting запросы связывает по NAS-Port. В итоге не считает сессию поднявшейся, т.к. в авторизации NAS-Port 4294967295 ,а в старт пакете приходит уже NAS-Port 0

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest