m1ster Posted April 20, 2011 Posted April 20, 2011 Привет всем !! Прошу помочь в решении проблемы настройки CoA+RADIUS В ASR 1002, ОС Version 12.2... Авторизация и аккаунтинг работает нормально т.е интернет у клиента есть !! Но тут появилась проблема поменять скорость клиенту на лету !! Решил попробовать сделать это через CoA. В конфиге cisco я добавил -- aaa server radius dynamic-author client IP.x.x.x server-key XXXX port 3000 auth-type any ignore session-key Но когда Радиус передает данные... в логах radius-a я вижу только COA-NACK... Пробую по принципу отключить сервис xxx1 и вместо него включить xxx2... Посмотрел дебаг на cisco -- Вижу вот такой вид... Apr 20 15:20:22.298: RADIUS: COA received from id 201 IP.x.x.x:34306, CoA Request, len 50 Apr 20 15:20:22.298: COA: IP.x.x.x request queued Apr 20 15:20:22.298: RADIUS: authenticator BA FE 30 98 7F C6 7A E6 - 21 61 7E 6F 97 49 4C B3 Apr 20 15:20:22.298: RADIUS: Vendor, Cisco [26] 14 Apr 20 15:20:22.298: RADIUS: ssg-command-code [252] 8 Apr 20 15:20:22.298: RADIUS: 0C 69 6E 74 36 34 [service-Log-Off xxx1] Apr 20 15:20:22.298: RADIUS: Vendor, Cisco [26] 16 Apr 20 15:20:22.298: RADIUS: ssg-account-info [250] 10 "S0.0.0.0" Apr 20 15:20:22.298: ++++++ CoA Attribute List ++++++ Apr 20 15:20:22.298: 3D1BEB18 0 00000009 ssg-command-code(470) 6 0C 69 6E 74 36 34 Apr 20 15:20:22.298: 3D1BEC5C 0 00000009 ssg-account-info(468) 8 S0.0.0.0 Apr 20 15:20:22.299: Apr 20 15:20:22.299: RADIUS/ENCODE(00000000):Orig. component type = Invalid Apr 20 15:20:22.299: RADIUS(00000000): sending Apr 20 15:20:22.299: RADIUS(00000000): Send CoA Nack Response to IP.x.x.x:34306 id 201, len 74 Apr 20 15:20:22.299: RADIUS: authenticator 4F 18 16 C3 0D C7 09 D7 - AF 3D 35 8F 29 B8 4C 27 Apr 20 15:20:22.299: RADIUS: Vendor, Cisco [26] 14 Apr 20 15:20:22.299: RADIUS: ssg-command-code [252] 8 Apr 20 15:20:22.299: RADIUS: 0C 69 6E 74 36 34 [service-Log-Off xxx1] Apr 20 15:20:22.299: RADIUS: Vendor, Cisco [26] 16 Apr 20 15:20:22.299: RADIUS: ssg-account-info [250] 10 "S0.0.0.0" Apr 20 15:20:22.299: RADIUS: Reply-Message [18] 18 Apr 20 15:20:22.299: RADIUS: 4E 6F 20 76 61 6C 69 64 20 53 65 73 73 69 6F 6E [ No valid Session] Apr 20 15:20:22.299: RADIUS: Dynamic-Author-Error[101] 6 Session Context Not Found [503] RADIUS: COA received from id 232 IP.x.x.x:34308, CoA Request, len 52 .Apr 20 15:38:51.613: COA: IP.x.x.x request queued .Apr 20 15:38:51.613: RADIUS: authenticator 1C 69 FA 0F 80 D4 9B 70 - 78 86 12 B6 ED 8E AF B2 .Apr 20 15:38:51.613: RADIUS: Vendor, Cisco [26] 16 .Apr 20 15:38:51.613: RADIUS: ssg-command-code [252] 10 .Apr 20 15:38:51.613: RADIUS: 0B 73 74 61 72 74 39 36 [service-Log-On xxx2] .Apr 20 15:38:51.613: RADIUS: Vendor, Cisco [26] 16 .Apr 20 15:38:51.613: RADIUS: ssg-account-info [250] 10 "S0.0.0.0" .Apr 20 15:38:51.613: ++++++ CoA Attribute List ++++++ .Apr 20 15:38:51.613: 3D1BE824 0 00000009 ssg-command-code(470) 8 0B 73 74 61 72 74 39 36 .Apr 20 15:38:51.614: 3D1BF2B0 0 00000009 ssg-account-info(468) 8 S0.0.0.0 .Apr 20 15:38:51.614: .Apr 20 15:38:51.614: RADIUS/ENCODE(00000000):Orig. component type = Invalid .Apr 20 15:38:51.614: RADIUS(00000000): sending .Apr 20 15:38:51.614: RADIUS(00000000): Send CoA Nack Response to IP.x.x.x:34308 id 232, len 76 .Apr 20 15:38:51.614: RADIUS: authenticator A6 4A CE 7A F0 5B 1A BF - D4 AE 7C 93 29 CA 77 50 .Apr 20 15:38:51.614: RADIUS: Vendor, Cisco [26] 16 .Apr 20 15:38:51.614: RADIUS: ssg-command-code [252] 10 .Apr 20 15:38:51.614: RADIUS: 0B 73 74 61 72 74 39 36 [service-Log-On xxx2] .Apr 20 15:38:51.614: RADIUS: Vendor, Cisco [26] 16 .Apr 20 15:38:51.614: RADIUS: ssg-account-info [250] 10 "S0.0.0.0" .Apr 20 15:38:51.614: RADIUS: Reply-Message [18] 18 .Apr 20 15:38:51.614: RADIUS: 4E 6F 20 76 61 6C 69 64 20 53 65 73 73 69 6F 6E [ No valid Session] .Apr 20 15:38:51.614: RADIUS: Dynamic-Author-Error[101] 6 Session Context Not Found [503]Connection closed by foreign host. Если вас не затруднит может объяснить что означают эти ошибки: RADIUS/ENCODE(00000000):Orig. component type = Invalid Dynamic-Author-Error[101] 6 Session Context Not Found [503] Вставить ник Quote
m1ster Posted April 21, 2011 Author Posted April 21, 2011 (edited) А как можно посмотреть CoA запрос ?? Т.е я знаю можно дать запрос командой radpwtst, но она у меня какая-то урезанная чтоли !! ./radpwtst Usage: radpwtst [-a ACKs] [-c code] [-d directory] [-f file] [-g group] [-h] [-i client-id] [-l async port] [-n] [-p UDP-port] [-r retries] [-s server] [-t timeout] [-u type] [-v version] [-w password] [-x] accessID Codes: Access-Request = 1 Accounting-Request = 4 Password = 7 Status-Server = 12 Types: challenge, chap, dumb, slip, ppp, arades, dbdumb, dpslip, dbppp, outbound, admin, exec, dbadmin Вот такой параметр передает Cisco-Account-Info = xxx1 Больше я не вижу !! У меня чуток радиус переделан под биллинг !! Можете подсказать какие параметры вообще для COA должны отправляться?? Почитал на этом же форуме, что надо отключить шифрование ключей радиуса, посмотрел у себя в конфиге циски... оно у меня отключено. Edited April 21, 2011 by m1ster Вставить ник Quote
rus-p Posted April 21, 2011 Posted April 21, 2011 (edited) Всего два вида идентификации через соа если нет портала. Это слать номер аккаунтинговой сессии или IP адрес в связке с vrf. У вас видимо IP, только почему-то нулевой ? Я не использовал radpwtst, подсказать не могу. Если урезанная возьмите сорцы радиуса, скомпилируйте и будет вам свежая. Посмотрел, вы используете радиатор в качестве радиуса, посему и команду такую не помню, сидим на фрирадиусе ) Компилируйте нужную версию своей radpwtst, и кидайте сюда команду с ключами которую запускаете. Если не смогете, возьмите от фрирадиуса radclient и генерите им, все работает. Edited April 21, 2011 by rus-p Вставить ник Quote
m1ster Posted April 21, 2011 Author Posted April 21, 2011 Вооо вот у меня она передает номер аккаунтинговой сесси, т.е должна передавать :)!! Но судя по этим ошибкам Dynamic-Author-Error[101] 6 Session Context Not Found [503] Номер этой сессия я не могу передать !! Вот ещё в вывод дебага включил Attr Manager и вот что он выдает ... add attr: 3D1C0978 0 0000000A reply-message(259) 16 No valid Session add attr: 3D1C0988 0 00000002 error-cause(258) 4 Session Context Not Found Если вас не затруднит подскажите плз, какой атрибут в радиусе отвечает за номер сессии ?? Я так понял Радиус не все что нужно передает !!! какого-то атрибута не хватает чтоли.... Посмотрел, вы используете радиатор в качестве радиуса, посему и команду такую не помню, сидим на фрирадиусе ) Компилируйте нужную версию своей radpwtst, и кидайте сюда команду с ключами которую запускаете. Если не смогете, возьмите от фрирадиуса radclient и генерите им, все работает. Ага понял !! попробую !! Вставить ник Quote
rus-p Posted April 21, 2011 Posted April 21, 2011 Если вас не затруднит подскажите плз, какой атрибут в радиусе отвечает за номер сессии ?? Я так понял Радиус не все что нужно передает !!! какого-то атрибута не хватает чтоли.... Acct-Session-Id (44) Его посылку на ваш биллинг, с которого посылаете coa, вы должны включить на asr. Потом глянуть значение этого атрибута для сессии и ключом передать команде. Это не радиус передает, это ваша команда radpwtst формирует пакет с атрибутами и передает его на NAS. Вставить ник Quote
tsolodov Posted April 25, 2011 Posted April 25, 2011 http://tsolodov.blogspot.com/2011/02/problem-with-coa-request-on-isg-when.html Вставить ник Quote
Dgoni_sp Posted February 11, 2012 Posted February 11, 2012 Привет всем !! Прошу помочь в решении проблемы настройки CoA+RADIUS В ASR 1002, ОС Version 12.2... Авторизация и аккаунтинг работает нормально т.е интернет у клиента есть !! Но тут появилась проблема поменять скорость клиенту на лету !! Решил попробовать сделать это через CoA. В конфиге cisco я добавил -- Была аналогичная проблема vrf не использую, при посылки CoA пакета для изменения скорости на лету получал ошибку Reply-Message = "No valid Session" Error-Cause = Session-Context-Not-Found Хотя до это 5 запросов были успешными. Код запроса Packet-Type = CoA-Request, User-Name = "poe_test1" Acct-Session-Id = "0000003C" Cisco-AVPair += "lcp:interface-config#0=no rate-limit input 256000 24000 48000 conform-action transmit exceed-action drop" Cisco-AVPair += "lcp:interface-config#0=rate-limit input 512000 24000 48000 conform-action transmit exceed-action drop" Cisco-AVPair += "lcp:interface-config#1=no rate-limit output 256000 24000 48000 conform-action transmit exceed-action drop" Cisco-AVPair += "lcp:interface-config#1=rate-limit output 512000 24000 48000 conform-action transmit exceed-action drop" Понятно что для каждой сессии свой ID, но сколько я не пытался всё равно кошка выдавала ошибку Session-Context-Not-Found. Никакие ignored server-key и session-key в cisco не помогли. В конце попробовал использовать вместо Acct-Session-Id значение Framed-IP-Address и вроде получилось. Вот окончательный вариант CoA запроса Packet-Type = CoA-Request, User-Name = "poe_test1" Framed-IP-Address = 172.10.10.19 Cisco-AVPair += "lcp:interface-config#0=no rate-limit input 256000 24000 48000 conform-action transmit exceed-action drop" Cisco-AVPair += "lcp:interface-config#0=rate-limit input 512000 24000 48000 conform-action transmit exceed-action drop" Cisco-AVPair += "lcp:interface-config#1=no rate-limit output 256000 24000 48000 conform-action transmit exceed-action drop" Cisco-AVPair += "lcp:interface-config#1=rate-limit output 512000 24000 48000 conform-action transmit exceed-action drop" где 172.10.10.19 - IP адрес который был назначен клиенту (пользователю). Всё работает Вставить ник Quote
Macro Posted February 12, 2012 Posted February 12, 2012 Мои СоА пакеты: User-Name = "user11" Cisco-Account-Info = "S10.128.2.109" Cisco-AVPair += "subscriber:command=activate-service" Cisco-Avpair += "subscriber:service-name=l4rdr" таким образом активирую сервис l4rdr для логина user11 и ИП - 10.128.2.109 Вставить ник Quote
Dgoni_sp Posted February 19, 2012 Posted February 19, 2012 Мои СоА пакеты: ... Не подскажешь насчёт CoA Account-Logon ? Моя кошка получает данный пакет и сразу отвечает СоА-АСК, без аутентификации пользователь ? Подробности в тут http://forum.nag.ru/forum/index.php?showtopic=45688&st=0. Вставить ник Quote
Дегтярев Илья Posted February 19, 2012 Posted February 19, 2012 Моя кошка получает данный пакет и сразу отвечает СоА-АСК, без аутентификации пользователь ? Наверное потому, что сессия уже аутентифицирована? Вставить ник Quote
Dgoni_sp Posted February 19, 2012 Posted February 19, 2012 Моя кошка получает данный пакет и сразу отвечает СоА-АСК, без аутентификации пользователь ? Наверное потому, что сессия уже аутентифицирована? Сам склоняюсь к тому же но думал, что что для Account-Logon железно, как правило, что при получении CoA Account-Logon циска пытается аутентифицировать пользователя. У меня следующая схема: - клиенты подключаются по PPPoE, на Virtual-Template прописанно: interface Virtual-Template1 description --- TEMPLATE for PPPoE CLIENTS --- ip address 172.10.10.1 255.255.255.0 no peer default ip address ppp authentication pap PPPoE ppp authorization PPPoE service-policy type control MY_PPPoE_RULE Без: ppp authentication pap PPPoE ppp authorization PPPoE сессия не поднимается, но те же самые процедуры указаны в правиле My_PPPoE_RULE для события session-start policy-map type control MY_PPPoE_RULE class type control always event session-start 10 authenticate aaa list PPPoE 20 authorize aaa list PPPoE password cisco identifier nas-port 30 service-policy type service name UNAUTHOR 40 service-policy type service aaa list SERVICE-LOCAL name L4REDIRECT 50 set-timer SET-TIMER 5 ! Задумка следующая, - монтажники подключают абонента, в подключении PPPoE вводят Login и Password из Акта на подключение. - циска получает запрос и отправляет Access-Request на RADIUS для аутентификации - если абонент с такими login Password есть, RADIUS отправляет Access-Accept - далее циска авторизирует абонента, отправляет Access-Request где User-Name это пот Nas-Port (для каждого абонента значение порта уникально) - т.к. абонент новый значений порта Nas в БД нет, поэтому RADIUS отправляет Access-Reject. - циска после получения Access-Reject загружает сервис UNAUTHOR, чтобы клиент сначала просто подключился (присвоился IP адрес) - далее кошка активизирует сервис L4REDIRECT, для перенаправления клиента на портал - ну и запускается таймер на 5 минут - клиент входит на портал вводит свои Login и Password, нажимает Ок. Вот тут я и хотел использовать событие Account-Logon (как положенно), чтобы сначалf аутентифицировать абонента (просто проверить что данные ведены корректно). Если всё ок, то в профиле абонента в БД вставляется значение пота NAS (т.е. портал нужен просто для связи абонента с конкретным значением порта NAS). Теперь решил, что аутентифицировать клиента, отправлять CoA-Request Accoun_logon в моём случае, как масло масленым, поэтому после ввода на портале login и Password не буду отправлять Account-Logon, просто сделаю локальную проверку на портале, если данные кверные, запросить инфу о сессии у циски, используя CoA-Request subscriber:command=account-profile-status-query, распарсить ответ и значение порта NAS занести в профиль абонента. Но вот с Account-Logoff так особо и не понял зачем он нужен. Некоторые советуют использовать PoD для завершения сессии, но вот зачем это делать... Как понимаю событие Accoun-Logoff - это когда абонента на портале нажал "Выйти", т.е. он просто выход с портала и начинает просмотр Web страниц в Инете, зачем сессию обрывать ?... Вставить ник Quote
drovorub Posted February 20, 2012 Posted February 20, 2012 Account-Logoff нужен чтоб обрывать сессию со стороны RADIUS, в случае если абонент не заплатил за следующий месяц например. Вставить ник Quote
Macro Posted February 20, 2012 Posted February 20, 2012 В том месте где я использую СоА Account-Logon делаю так: User-Name = "username" Cisco-AVPair = "subscriber:password=userpass" Cisco-AVPair = "subscriber:command=account-logon" Cisco-Account-Info = "S9.9.9.9" На циске: aaa authentication login ISG-AAA group RADIUS-SERVER aaa authorization network ISG-AAA group RADIUS-SERVER policy-map type control ISG-SESSION class type control always event account-logon 10 authenticate aaa list ISG-AAA Вставить ник Quote
Dgoni_sp Posted February 21, 2012 Posted February 21, 2012 Попробовал всё то же 00:11:31: RADIUS: COA received from id 23 192.168.186.128:32881, CoA Request, len 121 00:11:31: COA: 192.168.186.128 request queued 00:11:31: RADIUS: authenticator 81 B2 E3 BE 98 F6 1D E7 - DE 59 A9 D4 DC EC E8 E5 00:11:31: RADIUS: User-Name [1] 7 "poe02" 00:11:31: RADIUS: Vendor, Cisco [26] 33 00:11:31: RADIUS: Cisco AVpair [1] 27 "subscriber:password=poe02" 00:11:31: RADIUS: Vendor, Cisco [26] 40 00:11:31: RADIUS: Cisco AVpair [1] 34 "subscriber:command=account-logon" 00:11:31: RADIUS: Vendor, Cisco [26] 21 00:11:31: RADIUS: ssg-account-info [250] 15 "S172.10.10.10" 00:11:31: ++++++ CoA Attribute List ++++++ 00:11:31: 63FBFCFC 0 00000009 username(386) 5 poe02 00:11:31: 63FBFBC4 0 00000009 password(274) 5 <opaque value> 00:11:31: 63FBFBD4 0 00000009 ssg-account-info(418) 13 S172.10.10.10 00:11:31: 63FBFBE4 0 00000009 ssg-command-code(420) 6 01 70 6F 65 30 32 00:11:31: 00:11:31: RADIUS/ENCODE(0000000D):Orig. component type = PPoE 00:11:31: RADIUS/ENCODE: Skip encoding 0 length AAA attribute formatted-clid 00:11:31: RADIUS(0000000D): sending 00:11:31: RADIUS(0000000D): Send CoA Ack Response to 192.168.186.128:32881 id 23, len 82 00:11:31: RADIUS: authenticator 75 22 7C 5D BD 22 07 08 - DB E7 EF 53 CB 1C B8 72 00:11:31: RADIUS: Vendor, Cisco [26] 14 00:11:31: RADIUS: ssg-command-code [252] 8 00:11:31: RADIUS: 01 70 6F 65 30 32 [Account-Log-On poe02] 00:11:31: RADIUS: Vendor, Cisco [26] 27 00:11:31: RADIUS: ssg-account-info [250] 21 "$IVirtual-Access1.1" 00:11:31: RADIUS: Vendor, Cisco [26] 21 00:11:31: RADIUS: ssg-account-info [250] 15 "S172.10.10.10" Router-GW-7206VXR# Видимо люди правы, что при событии Account-logon, циска сначала смотрит на статус пользователя, если он Auth, она сразу отвечает CoA-Ack, если он в Noauth, то запрашивает начинает действовать согласно правилу с событием Account-logon Account-Logoff нужен чтоб обрывать сессию со стороны RADIUS, в случае если абонент не заплатил за следующий месяц например. Ок спасибо,т.е. это типо CoA Dissconnect ? Вставить ник Quote
Dgoni_sp Posted February 21, 2012 Posted February 21, 2012 Наступил на другие грабли, т.к. у меня пользователь до момента регистрации на портале уже находится в состоянии Auth, таймер которой запускается в правиле class type control always event session-start 10 authenticate aaa list PPPoE 20 authorize aaa list PPPoE password cisco identifier nas-port 30 service-policy type service name UNAUTHOR 40 service-policy type service aaa list SERVICE-LOCAL name L4REDIRECT 50 set-timer SET-TIMER 5 будит тупо рубить все сессии, даже если клиент успешно зарегистрировался, т.к. обычно правило для события timed-policy-expiry создают с использованием class-map с проверкой состояния, и только в случае если клиент находиться в noauth и таймер отработал, срабатывает правило ! class-map type control match-all STATUS-USER-UNAUTH match authen-status unauthenticated ! ! class type control STATUS-USER-UNAUTH event timed-policy-expiry 10 service disconnect ! Видимо придёться тупо при активации сервиса L4REDIRECT посылать с RADIUSа параметр Idle-Timeout, соответственно если клиент успешно авторизовался его убивать на циске, вот только как... пытался послать Idle-Timeout = 0, вроде и не отрубает, но в деталях сессии висит. Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.