Всем привет!Такой вопрос: мне надо запустить авторизацию из IVR-скрипта.
Делаю так:............
proc act_Authorization { } {
log -s INFO "act_Authorization"
aaa authorize aaa bbb ccc ddd leg_incomingrequiredversion 2.0
initset TopFSM(any_state,ev_disconnected) "act_Cleanup same_state"
set TopFSM(CALL_INIT,ev_setup_indication) "act_Setup GETDEST"
set TopFSM(GETDEST,ev_collectdigits_done) "act_GotDest PLACECALL"
#set TopFSM(PLACECALL,ev_setup_done) "act_CallSetupDone AUTHORIZATION"
set TopFSM(PLACECALL,ev_any_event) "act_Authorization WAITAUTHOR"
set TopFSM(WAITAUTHOR,ev_any_event) "act_Authordone CALLACTIVE"
...........
На консоли циски вижу:
Dec 19 08:50:48.345: %IVR-6-APP_INFO: act_Authorization
Dec 19 08:50:48.345: //-1//TCL2:HN285A1CF8:/tcl_AuthorizeCmd: Authorize start failedНастройки aaa такие:
aaa authentication login default local group radius_1
aaa authentication ppp default group radius_1
aaa authorization network default group radius_1
aaa session-id commonВ чем может быть дело? Почему циска не может запустить авторизацию?
test aaa group radius_1 user pass new-code
нормально работает.Буду очень благодарен за помощь.
С уважением, Дима.
Попробуйте добавить, если нет, то определени radius-server.
radius-server vsa send accounting
radius-server vsa send authentication
gw-accounting aaa
Посмотрите по deb voip ivr all, deb radius all.
>Попробуйте добавить, если нет, то определени radius-server.
>radius-server vsa send accounting
>radius-server vsa send authentication
>gw-accounting aaa
>Посмотрите по deb voip ivr all, deb radius all.Спасибо за ответ, но этот этап я уже прошел. Оказывается, дело было просто в настройках ааа. Но теперь у меня возникла следующая проблема - я не могу получить в своем IVR-скрипте, атрибут радиуса h323-credit-time, который возвращает радиус сервер при запросе на авторизацию. Сам радиус сервер этот атрибут отдает циске совершенно точно, это видно из debug radius.
Вот процедура из скрипта, которая вызывается по событию ev_authorize_done:proc act_Authordone { } {
log -s INFO "act_Authordone"
set status [infotag get evt_status]
global sessiontimeout
if { $status == "ao_000" } {
if { [infotag get aaa_avpair_exists h323-credit-time] } {
set sessiontimeout [infotag get aaa_avpair h323-credit-time]
} else {
log -s INFO "Not h323-credit-time"
}
log -s INFO "SESSIONTIMEOUT $sessiontimeout"
timer start leg_timer 1 leg_incoming
} else {
log -s INFO "Authorization fail"
call close
}
}Вот процедура, которая запускает авторизацию на радиусе из скрипта. Она у меня запускается по событию ev_setup_done:
proc act_Authorization { } {
log -s INFO "act_Authorization"
aaa authorize aaa bbb ccc ddd leg_incoming
}
Настройки aaa следующие:aaa new-model
!
!
aaa group server radius radius_1
server 192.168.210.42 auth-port 1812 acct-port 1813
authorization reply accept myattrlist
!
aaa authentication login default local
aaa authentication login h323 group radius_1
aaa authorization exec default local
aaa authorization exec h323 group radius_1
!
radius-server attribute list myattrlist
!
Буду очень благодарен за помощь в решении этого недоразумения.С уважением, Дима.
>>Попробуйте добавить, если нет, то определени radius-server.
>>radius-server vsa send accounting
>>radius-server vsa send authentication
>>gw-accounting aaa
>>Посмотрите по deb voip ivr all, deb radius all.
>
>Спасибо за ответ, но этот этап я уже прошел. Оказывается, дело было
>просто в настройках ааа. Но теперь у меня возникла следующая проблема
>- я не могу получить в своем IVR-скрипте, атрибут радиуса h323-credit-time,
>который возвращает радиус сервер при запросе на авторизацию. Сам радиус сервер
>этот атрибут отдает циске совершенно точно, это видно из debug radius.
>
>Вот процедура из скрипта, которая вызывается по событию ev_authorize_done:
>
>proc act_Authordone { } {
> log -s INFO "act_Authordone"
> set status [infotag get evt_status]
> global sessiontimeout
> if { $status == "ao_000" } {
> if { [infotag get aaa_avpair_exists h323-credit-time]
>} {
> set sessiontimeout [infotag
>get aaa_avpair h323-credit-time]
> } else {
> log -s INFO
>"Not h323-credit-time"
> }
> log -s INFO "SESSIONTIMEOUT $sessiontimeout"
> timer start leg_timer 1 leg_incoming
> } else {
> log -s INFO "Authorization fail"
>
> call close
> }
>}
>
>Вот процедура, которая запускает авторизацию на радиусе из скрипта. Она у меня
>запускается по событию ev_setup_done:
>
>proc act_Authorization { } {
> log -s INFO "act_Authorization"
> aaa authorize aaa bbb ccc ddd leg_incoming
>}
>
>
>Настройки aaa следующие:
>
>aaa new-model
>!
>!
>aaa group server radius radius_1
> server 192.168.210.42 auth-port 1812 acct-port 1813
> authorization reply accept myattrlist
>!
>aaa authentication login default local
>aaa authentication login h323 group radius_1
>aaa authorization exec default local
>aaa authorization exec h323 group radius_1
>
>
>!
>radius-server attribute list myattrlist
>!
>
>
>Буду очень благодарен за помощь в решении этого недоразумения.
>
>С уважением, Дима.Подозреваю всему виной вот эта строчка
radius-server attribute list myattrlist
Она у Вас не описывает ни одного атрибута, соответственно циска не принимает ни одного атрибута от радиуса.
Либо уберите authorization reply accept myattrlist, либо добавте атрибуты которые хотите получать от радиуса.
>>>Попробуйте добавить, если нет, то определени radius-server.
>>>radius-server vsa send accounting
>>>radius-server vsa send authentication
>>>gw-accounting aaa
>>>Посмотрите по deb voip ivr all, deb radius all.
>>
>>Спасибо за ответ, но этот этап я уже прошел. Оказывается, дело было
>>просто в настройках ааа. Но теперь у меня возникла следующая проблема
>>- я не могу получить в своем IVR-скрипте, атрибут радиуса h323-credit-time,
>>который возвращает радиус сервер при запросе на авторизацию. Сам радиус сервер
>>этот атрибут отдает циске совершенно точно, это видно из debug radius.
>>
>>Вот процедура из скрипта, которая вызывается по событию ev_authorize_done:
>>
>>proc act_Authordone { } {
>> log -s INFO "act_Authordone"
>> set status [infotag get evt_status]
>> global sessiontimeout
>> if { $status == "ao_000" } {
>> if { [infotag get aaa_avpair_exists h323-credit-time]
>>} {
>> set sessiontimeout [infotag
>>get aaa_avpair h323-credit-time]
>> } else {
>> log -s INFO
>>"Not h323-credit-time"
>> }
>> log -s INFO "SESSIONTIMEOUT $sessiontimeout"
>> timer start leg_timer 1 leg_incoming
>> } else {
>> log -s INFO "Authorization fail"
>>
>> call close
>> }
>>}
>>
>>Вот процедура, которая запускает авторизацию на радиусе из скрипта. Она у меня
>>запускается по событию ev_setup_done:
>>
>>proc act_Authorization { } {
>> log -s INFO "act_Authorization"
>> aaa authorize aaa bbb ccc ddd leg_incoming
>>}
>>
>>
>>Настройки aaa следующие:
>>
>>aaa new-model
>>!
>>!
>>aaa group server radius radius_1
>> server 192.168.210.42 auth-port 1812 acct-port 1813
>> authorization reply accept myattrlist
>>!
>>aaa authentication login default local
>>aaa authentication login h323 group radius_1
>>aaa authorization exec default local
>>aaa authorization exec h323 group radius_1
>>
>>
>>!
>>radius-server attribute list myattrlist
>>!
>>
>>
>>Буду очень благодарен за помощь в решении этого недоразумения.
>>
>>С уважением, Дима.
>
>Подозреваю всему виной вот эта строчка
>
>radius-server attribute list myattrlist
>
>Она у Вас не описывает ни одного атрибута, соответственно циска не принимает
>ни одного атрибута от радиуса.
>
>Либо уберите authorization reply accept myattrlist, либо добавте атрибуты которые хотите получать
>от радиуса.Когда нет строчки radius-server attribute list myattrlist, то выдается что-то вроде RADIUS ATTR PARSE ERROR (точно не помню, а воспроизвести не могу, так как сейчас я не на рабочем месте) и звонок отбивается по Authorization fail. Когда добавляю строчки
radius-server attribute list myattrlist
attribute 102
(кажется синтаксис тут такой, но опять же не помню точно), то это никак не меняет дело.102 - номер аттрибута радиуса h323-credit-time.
В чем может быть загвоздка - никак не пойму. Третий день бьюсь с этим уже :-(.
С уважением, Дима.
Извиняюсь, в предыдущем сообщении написал "Когда нет строчки radius-server attribute list myattrlist", а имел в виду "Когда нет строчки authorization reply accept myattrlist".Прошу прощения за опечатку.
Все же попробуйте эти 2 строчки убрать. И еще debug radius authentication что показывает?
>Все же попробуйте эти 2 строчки убрать. И еще debug radius authentication
>что показывает?
!
aaa group server radius radius_1
server 192.168.210.42 auth-port 1812 acct-port 1813
!
aaa authentication login default local
aaa authentication login h323 group radius_1
aaa authorization exec default local
aaa authorization exec h323 group radius_1
!
gw-accounting aaa
!
radius-server host 192.168.210.42 auth-port 1812 acct-port 1813 key 7 021201481F
radius-server vsa send accounting
radius-server vsa send authentication
После того как убрал те строки, вот что выдает debug
Radius protocol debugging is on
Radius packet protocol (authentication) debugging is on
debug voip application script is ON (filter is OFF)
Dec 21 08:56:43.154: RADIUS: Vendor, Cisco [26] 10
Dec 21 08:56:43.154: RADIUS: h323-credit-time [102] 4 "30"
Dec 21 08:56:43.154: RADIUS(00000031): Received from id 1645/16
Dec 21 08:56:43.154: RADIUS/DECODE: parse VSA parts error
Dec 21 08:56:43.154: RADIUS/DECODE: convert VSA string; FAIL
Dec 21 08:56:43.154: RADIUS/DECODE: decoder; FAIL
Dec 21 08:56:43.154: RADIUS/DECODE: attribute h323-credit-time; FAIL
Dec 21 08:56:43.154: RADIUS/DECODE: cisco VSA type 102; FAIL
Dec 21 08:56:43.154: RADIUS/DECODE: VSA; FAIL
Dec 21 08:56:43.154: RADIUS/DECODE: decoder; FAIL
Dec 21 08:56:43.154: RADIUS/DECODE: attribute Vendor-Specific; FAIL
Dec 21 08:56:43.154: RADIUS/DECODE: parse response op decode; FAIL
Dec 21 08:56:43.154: RADIUS/DECODE: parse response; FAIL
Dec 21 08:56:43.154: %IVR-6-APP_INFO: act_Authordone
Dec 21 08:56:43.154: %IVR-6-APP_INFO: Authorization fail
>Все же попробуйте эти 2 строчки убрать. И еще debug radius authentication
>что показывает?После того как пишу
aaa group server radius radius_1
server 192.168.210.42 auth-port 1812 acct-port 1813
authorization reply accept myattrlist!
radius-server attribute list myattrlist
attribute 102
!Те же дебаги выдают:
Dec 21 09:04:11.978: RADIUS: Vendor, Cisco [26] 10
Dec 21 09:04:11.978: RADIUS: h323-credit-time [102] 4 "30"
Dec 21 09:04:11.982: RADIUS(00000033): Received from id 1645/17
Dec 21 09:04:11.982: RADIUS: attribute 26 rejected
Dec 21 09:04:11.982: %IVR-6-APP_INFO: act_Authordone
Dec 21 09:04:11.982: %IVR-6-APP_INFO: Not h323-credit-time
---- эту строку выдает мой скрипт, в этом месте:
proc act_Authordone { } {
log -s INFO "act_Authordone"
set status [infotag get evt_status]
global sessiontimeout
if { $status == "ao_000" } {
if { [infotag get aaa_avpair_exists h323-credit-time] } {
set sessiontimeout [infotag get aaa_avpair h323-credit-time] }
else {
log -s INFO "Not h323-credit-time" }
log -s INFO "SESSIONTIMEOUT $sessiontimeout"
timer start leg_timer 1 leg_incoming }
else {
log -s INFO "Authorization fail" call close }
}
>radius-server attribute list myattrlist
> attribute 102
>!
>
>Те же дебаги выдают:
>
>Dec 21 09:04:11.982: RADIUS: attribute 26 rejectedгм... кх...кх... а Вы не хотите добавить attribute 26, ведь это же и есть Cisco VSA, в нем и сидит этот credit-time, а 102 атрибут лишний..) это не то.
да, кстати, а что за софт? циска я так подозреваю серии AS5300 или 5400?
извиняюсь, не заметил, скорее всего и добавление атрибута 26 Вас не спасет.) что то у Вас с VSA не то. Вы на радиус правильный словарь заливали?
>извиняюсь, не заметил, скорее всего и добавление атрибута 26 Вас не спасет.)
>что то у Вас с VSA не то. Вы на радиус
>правильный словарь заливали?
Словарь правильный, так как циска же в debug radius показывает, что видит в ответе радиуса атрибут h323-credit-time, то есть радиус-сервер правильно подставляет его номер в своем ответе....
>>извиняюсь, не заметил, скорее всего и добавление атрибута 26 Вас не спасет.)
>>что то у Вас с VSA не то. Вы на радиус
>>правильный словарь заливали?
>
>
>Словарь правильный, так как циска же в debug radius показывает, что видит
>в ответе радиуса атрибут h323-credit-time, то есть радиус-сервер правильно подставляет его
>номер в своем ответе....
Все, победил я его. Оказывается, радиус сервер должен присылать отрибут в виле h323-credit-time="h323-credit-time=30", тогда циска его хватает.Большое спасибо за помощь! Очень благодарен за участие. Без вас я бы еще неделю проковырялся бы, пока нашел бы эту фигню....
Спасибо!
>>>извиняюсь, не заметил, скорее всего и добавление атрибута 26 Вас не спасет.)
>>>что то у Вас с VSA не то. Вы на радиус
>>>правильный словарь заливали?
>>
>>
>>Словарь правильный, так как циска же в debug radius показывает, что видит
>>в ответе радиуса атрибут h323-credit-time, то есть радиус-сервер правильно подставляет его
>>номер в своем ответе....
>
>
>Все, победил я его. Оказывается, радиус сервер должен присылать отрибут в виле
>h323-credit-time="h323-credit-time=30", тогда циска его хватает.
>
>Большое спасибо за помощь! Очень благодарен за участие. Без вас я бы
>еще неделю проковырялся бы, пока нашел бы эту фигню....
>
>Спасибо!
Да не зачто, я щас тоже обратил внимание дебаг вот так должен показыватьDec 21 14:05:56.714 MSK: RADIUS: Vendor, Cisco [26] 30
Dec 21 14:05:56.714 MSK: RADIUS: Cisco AVpair [1] 24 "h323-credit-time=86400"
^^^^^^^^^^^^^^^^^^^^^^^^А у Вас было просто "30"
А те две строчки можно убрать, не нужны они, если только хотите ограничить прием циской специфичных атрибутов.)
Удачи!
>>>>извиняюсь, не заметил, скорее всего и добавление атрибута 26 Вас не спасет.)
>>>>что то у Вас с VSA не то. Вы на радиус
>>>>правильный словарь заливали?
>>>
>>>
>>>Словарь правильный, так как циска же в debug radius показывает, что видит
>>>в ответе радиуса атрибут h323-credit-time, то есть радиус-сервер правильно подставляет его
>>>номер в своем ответе....
>>
>>
>>Все, победил я его. Оказывается, радиус сервер должен присылать отрибут в виле
>>h323-credit-time="h323-credit-time=30", тогда циска его хватает.
>>
>>Большое спасибо за помощь! Очень благодарен за участие. Без вас я бы
>>еще неделю проковырялся бы, пока нашел бы эту фигню....
>>
>>Спасибо!
>
>
>Да не зачто, я щас тоже обратил внимание дебаг вот так должен
>показывать
>
>Dec 21 14:05:56.714 MSK: RADIUS: Vendor, Cisco
> [26] 30
>Dec 21 14:05:56.714 MSK: RADIUS: Cisco AVpair
> [1] 24 "h323-credit-time=86400"
>^^^^^^^^^^^^^^^^^^^^^^^^
>
>А у Вас было просто "30"
>А те две строчки можно убрать, не нужны они, если только хотите
>ограничить прием циской специфичных атрибутов.)
>Удачи!
Да, то что myattrlist - это не то, я уже понял. Уберу теперь это все.Еще раз спасибо!
>да, кстати, а что за софт? циска я так подозреваю серии AS5300
>или 5400?Циска в данном случае 3825 с иосом IP to IP gateway. Но точно то же самое пробовал на AS5350 - точно также IVR-скрипт не принимает атрибуты радиуса.
Сделал так:
radius-server attribute list myattrlist
attribute 26После этого стало снова
Dec 21 11:06:45.857: RADIUS: Vendor, Cisco [26] 10
Dec 21 11:06:45.857: RADIUS: h323-credit-time [102] 4 "30"
Dec 21 11:06:45.857: RADIUS(0000003E): Received from id 1645/22
Dec 21 11:06:45.857: RADIUS/DECODE: parse VSA parts error
Dec 21 11:06:45.857: RADIUS/DECODE: convert VSA string; FAIL
Dec 21 11:06:45.857: RADIUS/DECODE: decoder; FAIL
Dec 21 11:06:45.857: RADIUS/DECODE: attribute h323-credit-time; FAIL
Dec 21 11:06:45.861: RADIUS/DECODE: cisco VSA type 102; FAIL
Dec 21 11:06:45.861: RADIUS/DECODE: VSA; FAIL
Dec 21 11:06:45.861: RADIUS/DECODE: decoder; FAIL
Dec 21 11:06:45.861: RADIUS/DECODE: attribute Vendor-Specific; FAIL
Dec 21 11:06:45.861: RADIUS/DECODE: parse response op decode; FAIL
Dec 21 11:06:45.861: RADIUS/DECODE: parse response; FAIL
Dec 21 11:06:45.861: %IVR-6-APP_INFO: act_Authordone
Dec 21 11:06:45.861: %IVR-6-APP_INFO: Authorization failИ вот так такая же фигня:
radius-server attribute list myattrlist
attribute 26,102
!
Dec 21 11:08:06.119: RADIUS: Vendor, Cisco [26] 10
Dec 21 11:08:06.119: RADIUS: h323-credit-time [102] 4 "30"
Dec 21 11:08:06.123: RADIUS(00000040): Received from id 1645/23
Dec 21 11:08:06.123: RADIUS/DECODE: parse VSA parts error
Dec 21 11:08:06.123: RADIUS/DECODE: convert VSA string; FAIL
Dec 21 11:08:06.123: RADIUS/DECODE: decoder; FAIL
Dec 21 11:08:06.123: RADIUS/DECODE: attribute h323-credit-time; FAIL
Dec 21 11:08:06.123: RADIUS/DECODE: cisco VSA type 102; FAIL
Dec 21 11:08:06.123: RADIUS/DECODE: VSA; FAIL
Dec 21 11:08:06.123: RADIUS/DECODE: decoder; FAIL
Dec 21 11:08:06.123: RADIUS/DECODE: attribute Vendor-Specific; FAIL
Dec 21 11:08:06.123: RADIUS/DECODE: parse response op decode; FAIL
Dec 21 11:08:06.123: RADIUS/DECODE: parse response; FAIL
Dec 21 11:08:06.123: %IVR-6-APP_INFO: act_Authordone
Dec 21 11:08:06.123: %IVR-6-APP_INFO: Authorization fail
Я уже грешным делом думаю, что может в ответе радиуса самого что-то не так. Я сам писал модуль к freeradius, который отвечает на эти запросы. Может там кроме строки нужно еще вставить что-то типа "30 s" или "30 sek" или еще что-то?