Jump to content
Калькуляторы

Проблема Cisco ASR 1002 COA + RADIUS не работает CoA

Привет всем !! Прошу помочь в решении проблемы настройки 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]

Share this post


Link to post
Share on other sites

А как можно посмотреть 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 by m1ster

Share this post


Link to post
Share on other sites

Всего два вида идентификации через соа если нет портала. Это слать номер аккаунтинговой сессии или IP адрес в связке с vrf.

У вас видимо IP, только почему-то нулевой ?

 

Я не использовал radpwtst, подсказать не могу.

Если урезанная возьмите сорцы радиуса, скомпилируйте и будет вам свежая.

 

Посмотрел, вы используете радиатор в качестве радиуса, посему и команду такую не помню, сидим на фрирадиусе )

Компилируйте нужную версию своей radpwtst, и кидайте сюда команду с ключами которую запускаете.

 

Если не смогете, возьмите от фрирадиуса radclient и генерите им, все работает.

Edited by rus-p

Share this post


Link to post
Share on other sites

Вооо вот у меня она передает номер аккаунтинговой сесси, т.е должна передавать :)!! Но судя по этим ошибкам 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 и генерите им, все работает.

 

Ага понял !! попробую !!

Share this post


Link to post
Share on other sites

Если вас не затруднит подскажите плз, какой атрибут в радиусе отвечает за номер сессии ??

Я так понял Радиус не все что нужно передает !!! какого-то атрибута не хватает чтоли....

 

Acct-Session-Id (44)

Его посылку на ваш биллинг, с которого посылаете coa, вы должны включить на asr.

Потом глянуть значение этого атрибута для сессии и ключом передать команде.

 

Это не радиус передает, это ваша команда radpwtst формирует пакет с атрибутами и передает его на NAS.

Share this post


Link to post
Share on other sites

Привет всем !! Прошу помочь в решении проблемы настройки 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 адрес который был назначен клиенту (пользователю).

Всё работает

Share this post


Link to post
Share on other sites

Мои СоА пакеты:

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

Share this post


Link to post
Share on other sites

Мои СоА пакеты:

...

 

Не подскажешь насчёт CoA Account-Logon ?

Моя кошка получает данный пакет и сразу отвечает СоА-АСК, без аутентификации пользователь ?

Подробности в тут http://forum.nag.ru/forum/index.php?showtopic=45688&st=0.

Share this post


Link to post
Share on other sites
Моя кошка получает данный пакет и сразу отвечает СоА-АСК, без аутентификации пользователь ?

 

Наверное потому, что сессия уже аутентифицирована?

Share this post


Link to post
Share on other sites
Моя кошка получает данный пакет и сразу отвечает СоА-АСК, без аутентификации пользователь ?

 

Наверное потому, что сессия уже аутентифицирована?

Сам склоняюсь к тому же но думал, что что для 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 страниц в Инете, зачем сессию обрывать ?...

Share this post


Link to post
Share on other sites

Account-Logoff нужен чтоб обрывать сессию со стороны RADIUS, в случае если абонент не заплатил за следующий месяц например.

Share this post


Link to post
Share on other sites

В том месте где я использую СоА 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

Share this post


Link to post
Share on other sites

Попробовал всё то же

 

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 ?

Share this post


Link to post
Share on other sites

Наступил на другие грабли, т.к. у меня пользователь до момента регистрации на портале уже находится в состоянии 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, вроде и не отрубает, но в деталях сессии висит.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this