Вопрос не об asterisk'е, но надеюсь кто-нибудь да знает...
Интересует связка SER (или его производные) + radius, а именно digest authentication.
Может кто-нибудь ткнет носом в существующие проекты, которые можно пощупать?
Имеется биллинг чем-то отдоленно напоминающий биллинг из комплекта gnugk (делался с оглядкой на него).
С H323-клиентами (GnuGK, OpenPhone, MERA MVTS) никаких проблем нет, а с SIP не работает. ;(
В случае с SIP не передается пароль (только MD5-хэш), соответственно не хватает аттрибутов для связки H323-radius.
Это логично, хочется понять как настроить radius?
В качестве radius-сервера используется freeradius.
_________________
Maksim Timofejev
Вообще-то буду рад примерам несколько более развернутым, чем у OpenSER'а...
Может есть ссылки на open-проекты?
_________________
Maksim Timofejev
При подключении 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
Какой-то словарь даже есть в самом FreeRADIUS'е, но с ним вообще атрибуты не разбираются...
_________________
Maksim Timofejev
_________________
"Фантазия важнее знания.", Альберт Эйнштейн
Почему-то никак не мог найти.
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
Проблему с разбором атрибутов решил. Оказалось, что нужно вернуть пароль и 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
Всем спасибо за помощь...
_________________
Maksim Timofejev