AF
Asterisk Forum
обсуждения телефонии, VoIP и IP-PBX
12разделов
5 423тем
34 385сообщений
← К списку тем

SER/OpenSER + radius

OpenSER 11 сообщений -
#1

Добрый день!

Вопрос не об asterisk'е, но надеюсь кто-нибудь да знает...
Интересует связка SER (или его производные) + radius, а именно digest authentication.
Может кто-нибудь ткнет носом в существующие проекты, которые можно пощупать?
Имеется биллинг чем-то отдоленно напоминающий биллинг из комплекта gnugk (делался с оглядкой на него).
С H323-клиентами (GnuGK, OpenPhone, MERA MVTS) никаких проблем нет, а с SIP не работает. ;(
В случае с SIP не передается пароль (только MD5-хэш), соответственно не хватает аттрибутов для связки H323-radius.
Это логично, хочется понять как настроить radius?

В качестве radius-сервера используется freeradius.

_________________
Maksim Timofejev
#2

модуль Radius, radiusclient-ng и http://www.kamailio.net/ тебе помогут. Единственное радиус может не понять твой digest запрос, тут уж кури радиус сервер. А так нет ничего невозможного. У нас это работает.
#3

А БД пользователей где хранится? Надеюсь на SQL-сервере, а не в users/etc?
Вообще-то буду рад примерам несколько более развернутым, чем у OpenSER'а...
Может есть ссылки на open-проекты?

_________________
Maksim Timofejev
#4

В Оракле храняться. Просто когда я все это настраивал я сделал свою задачу, те кто за радиус отвечал свою задачу. И все работает. Конкретных примеров не дам, ибо очень у нас все специфично. Радиус сам не раз патченный под наши задачи. Совет такой сделать так как на сайте, и курить радиус до полного просветления.
#5

В соседней ветке (про биллинги) писал, что столкнулся со следующей проблемой:
При подключении OpenSER к FreeRADIUS (2.1.1) получаю это:

Код:
rad_recv: Access-Request packet from host 192.168.102.3 port 40438, id=221, length=252
User-Name = "tma@realm"
Digest-Attributes = "\n\005tma"
Digest-Attributes = "\001\nrealm"
Digest-Attributes = "\002*4919a559371dcf3469748a4e19d18aa3f38f8fcc"
Digest-Attributes = "\004\030sip:192.168.102.3:5061"
Digest-Attributes = "\003\nREGISTER"
Digest-Response = "185bf4620df28f6aa6752b18f241c186"
Service-Type = Sip-Session
Sip-Uri-User = "tma"
Cisco-AVPair = "call-id=NDY3MWM2ZTVjMjZlYTA5YjFkNzA1OGRlODFiOGQyYmQ."
NAS-Port = 5060
NAS-IP-Address = 192.168.102.3
+- entering group authorize {...}
++[preprocess] returns ok
[digest] Adding Auth-Type = DIGEST
++[digest] returns ok
[suffix] Looking up realm "realm" for User-Name = "tma@realm"
[suffix] No such realm "realm"


Мне кажется, что неправильный dictionary. Может дасть кто-нибудь точно правильный?

_________________
Maksim Timofejev
#6

на сайте проека kamailio были словари прописаны
#7

А ссылочки нет? Старые на openser все мертвые, да и почему-то их несколько вариантов было.
Какой-то словарь даже есть в самом FreeRADIUS'е, но с ним вообще атрибуты не разбираются...

_________________
Maksim Timofejev
#9

О, спасибо.
Почему-то никак не мог найти. Crying or Very sad

Added after 27 minutes:

Ну проско "класс".
Как буд-то и вовсе нет словаря:

Код:
rad_recv: Access-Request packet from host 192.168.102.3 port 55738, id=226, length=252
User-Name = "tma@realm"
Digest-Attributes = 0x0a05746d61
Digest-Attributes = 0x010a766f69702e7a6574
Digest-Attributes = 0x022a34393164376637626333646261313133373335626630633331666464303862333839623161383734
Digest-Attributes = 0x04187369703a3139322e3136382e3130322e333a35303631
Digest-Attributes = 0x030a5245474953544552
Digest-Response = "074b63fcfc6421cfc951a2881252aa4d"
Service-Type = Sip-Session
Sip-Uri-User = "tma"
Cisco-AVPair = "call-id=YjZiYWJiY2ZlZTEyN2E0NWNiMjMxNDY5ODdmYzI4YTE."
NAS-Port = 5060
NAS-IP-Address = 192.168.102.3
+- entering group authorize {...}
++[preprocess] returns ok
++[auth_log] returns ok
[digest] Adding Auth-Type = DIGEST
++[digest] returns ok
[suffix] Looking up realm "realm" for User-Name = "tma@realm"
[suffix] No such realm "realm"


Ошибиться в настройках самого FreeRADIUS'а уж никак нельзя -- модуль digist просто не настраивается вообще!
В оргининальном словаре есть такое:
ATTRIBUTE Digest-Attributes 207 octets # stupid format
Если прописать:
ATTRIBUTE Digest-Attributes 207 string # stupid format
То атрибуты разбираются:
Код:

User-Name = "tma@realm"
Digest-Attributes = "\n\005tma"
Digest-Attributes = "\001\nrealm"
Digest-Attributes = "\002*491d81160ac417bbc974e9cb82c27b4f916898f1"
Digest-Attributes = "\004\030sip:192.168.102.3:5061"
Digest-Attributes = "\003\nREGISTER"
Digest-Response = "46e9fd8ba30df38323e3c5539ed9048c"
Service-Type = Sip-Session
Sip-Uri-User = "tma"
Cisco-AVPair = "call-id=MTBjZmRiN2RlMWFiOGFlNTRiMmFiNzI4NTQ4ZDE1NmU."
NAS-Port = 5060
NAS-IP-Address = 192.168.102.3


Проблема именно с под-атрибутами (файл: draft-sterman-aaa-sip-00.txt):
Код:
The String field is 3 or more octets and contains one or
[H low. The fields are transmitted from left to right.

0 1 2
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
| Sub-Type | Sub-Length | Sub-Value...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

Sub-Type

Subattribute type. Meanings of the following defined
types can be found in section 2.3

1 Realm
2 Nonce
3 Method
4 URI
5 QOP
6 Algorithm
7 Body-Digest
8 CNonce
9 Nonce-Count
10 User-Name

Sub-Length

>= 3

Sub-Value

Subattribute-specific value


Ничего не понимаю. ;(

_________________
Maksim Timofejev
#10

Добрый день!

Проблему с разбором атрибутов решил. Оказалось, что нужно вернуть пароль и digest модуль сам все разберет.
Но т.к. возвращать пароль наобум нельзя, я думаю, то пришлось писать свой разбор атрибутов на pgplsql (у меня PostgreSQL).

Но, возник новый вопрос -- какие нужно возвращать атрибуты в случае с SIP-сессией?
Сейчас freeradius получает от SQL-сервера следующие атрибуты:
Код:

h323-return-code=0
h323-credit-amount=2137.15
h323-currency=RUB
h323-billing-model=2
h323-ivr-in=terminal-alias:^$


Что нужно вернуть для SIP-сервера?
Заранее спасибо!

Added after 3 hours 42 minutes:

Вопрос снимается.
Вроде бы со всем разобрался...
Остались вопросы уже по yate в данном конкретном случае.

_________________
Maksim Timofejev
#11

И с Yate проблемы решились. Wink
Всем спасибо за помощь...

_________________
Maksim Timofejev