Добрый день! Имеем проблему с назначением адресов из описанного в конфиге пула, не назначается адрес из pool_1 (пул с белыми адресами), а назначается из pools.global (пул с серыми адресами). Если в конфигурации тарифа в самом НАСе указать Framed-Pool=pool_1 - то при подключении PPPoE получаем ошибку 720. Если убрать эту опцию - назначится адрес из pools.global
Конфиг NAS`a (ASR 1002)
Код:
#Для автозакрытия соединений "висящих" более часа при наличии активных соединений на этом же NASе
drop.sleep.timeout=7200
#числовые коды услуг времени, трафика входящего и исходящего
nas.port_time.default.*=526
#nas.port_traffic.default.*=520:RADIN;522:RADIN;524:RADIN;521:RADOUT;523:RADOUT;525:RADOUT
nas.port_traffic.default.*=520:COLLECTOR;521:COLLECTOR;522:COLLECTOR;523:COLLECTOR;524:COLLECTOR;525:COLLECTOR;526:COLLECTOR;527:COLLECTOR
#разрешение активировать все типы карточек на этом NASе
card.activate.service=0
#поддержка CallBack (1-включите)
callback.support=0
#принудительный разрыв соединений на границе месяца
#month.break=0
#интервал между посылками на проверку либо сброс соедиенения
nas.inspector.sleep_time=60
#максимальное число попыток сброса соединения
nas.inspector.kill.max_messages=5
#порт приема для netflow потока
#номер порта
collector.capture.flow.port.1=2007
#тип слушателя - netflow
collector.capture.flow.port.1.type=netflow
netflow.receive.from=2.2.2.2
#
ipn.module.id=37
ipn.source.id=4
nas.inspector.class=bitel.billing.server.processor.PoDNASConnectionInspector
nas.inspector.pod.host=2.2.2.2
nas.inspector.pod.port=1700
nas.inspector.pod.secret=2456
#перечисление атрибутов, необходимых в PoD пакете, если пустое - высылаются все атрибуты
#nas.inspector.pod.attributes=User-Name;Framed-IP-Address;NAS-Identifier;Calling-Station-Id
nas.inspector.pod.attributes=Acct-Session-Id
radius.attributes=Service-Type;Framed-Protocol;Framed-IP-Address;Framed-IP-Netmask;Framed-Routing;Filter-Id;Framed-MTU;Framed-Compression;Login-IP-Host;Login-Service;Login-TCP-Port;Old-Password;Reply-Message;Callback-Number;Callback-Id;Expiration;Framed-Route;Framed-IPX-Network;State;Class;Session-Timeout;Idle-Timeout;Termination-Action;NAS-Identifier;Proxy-State;Framed-Pool;Cisco-Service-Info;cisco-avpair;cisco-SSG-Service-Info;Cisco-SSG-Account-Info;Acct-Status-Type
attrset.32.title=SIMPLE
attrset.32.attributes=Framed-Pool=pool_1;Framed-IP-Address;Framed-IP-Netmask=255.255.255.255;Service-Type=Framed-User;Framed-Protocol=PPP;Cisco-SSG-Service-Info=QU;;1024000;;128000;;D;;1024000;;128000;
pools.pool_1=1.1.1.1-1.1.1.254
Скрипт предобработки этого наса
Код:
import bitel.billing.server.radius.*;
import ru.bitel.bgbilling.kernel.network.radius.*;
prefix = "client-mac-address";
length = prefix.length();
attributes = request.getAttributes( Vendors.CISCO, CiscoVendor.Cisco_AVPair );
if( attributes != null )
for( it = attributes.iterator(); it.hasNext(); )
{
ra = (RadiusAttribute)it.next();
value = ra.getValue();
if( value.startsWith( prefix ) )
{
request.setStringAttribute( -1, RadiusStandartAttributes.Calling_Station_Id, value.substring( length + 1 ) );
}
}
acctSessionId = request.getStringAttribute(RadiusStandartAttributes.Acct_Session_Id);
if( acctSessionId != null && acctSessionId.startsWith( "0" ) )
{
request.setStringAttribute( RadiusStandartAttributes.Acct_Session_Id, acctSessionId.replaceFirst( "^[0-9/]++_", "" ) );
}
Общая конфигурация модуля
Код:
#вендоры - производители оборудования и их коды
vendors=9=Cisco;2011=Huawei;2021=Unix PPP;529=Lucent;6618=Quintum;529=Ascend;311=Microsoft;12341=MPD;14988=Mikrotik;1111=linuxWiFi;
#активные и приостановленные статусы договора
contract.status.active.codes=0
contract.status.suspend.codes=3,4
#минимальная и максимальная длина пароля
password.length.min=3
password.length.max=8
#длина автоматически генерируемого пароля
password.length.auto=8
#допустимые в пароле символы
password.chars=1234567890qwertyuiopasdfghjklzxcvbnm
#сколько лет отображать в просмотре сессий через web
showyears=5
#XSL для печати и отправки на почту сессий
xslt.1=dialup_login_sessions.xsl
reportTitle.1=Отчет по сессиям DialUp
#XSL для печати и отправки на почту наработки по логинам
xslt.2=dialup_login_amount.xsl
reportTitle.2=Отчет по наработке на логины DialUp
#коды услуг, не затрагиваемых при перерасчете, например, если услуга используется для занесения наработки скриптом
#service.recalc.ignore=
#в просмотре сессий в на Web странице кол-во выводимых на странице сессий
#show.sessions.on.page=25
#пункты Web - меню
#Просмотр сессий DialUp
web.menuItem1=Сессии
#Наработка по логинам DialUp
web.menuItem2=Наработка
#Смена пароля на логины DialUp
web.menuItem3=none
#Учётные периоды
web.menuItem4=none
#Управление динамическим ДНС
web.menuItem5=none
web.menuItem6=Покупка тарифных планов
#граница некарточных логинов
top.nocard.login=99999999
#адрес и порт управления RADIUS сервера для возможности завершения сессий в мониторе модуля
#адрес должен совпадать с адресом где стоит RADIUS сервер, порт с admin.port из radius.properties
radius.manage=192.168.0.79:1955
############### опции RADIUS сервера #######################
#1 - проверять наличие в договоре всех требуемых услуг при авторизации, иначе ошибка авторизации "Service deny"
check.service=0
#код модуля "карточки", 0 - модуль "карточки" не используется
card.module.id=0
#количество одновременных сессий, разрешенных карточным логинам
#card.login.session.count=1
#глобальный пул адресов
pools.global=10.100.100.0-10.100.255.255
#разрешение пользователям без определенной группы REALM ов использовать группу default
realmgr.default=default
#частота отправки Update пакетов
#realm.default=tr64;WISPr-Bandwidth-Max-Down=64000;ChilliSpot-Max-Output-Octets=limit
#удалять из Accept пакета атрибуты Framed-Pool в случае, если адрес был успешно выдан адрес RADIUS сервером
drop.framed.pool.attr=0
#Атрибуты радиуса доступные в списке атрибутов в редактировании логина
#Наборы атрибутов, доступные при редактировании логина
radius.attributes=Framed-IP-Address;mpd-rule;cisco-SSG-Service-Info
#radius.attributes=Service-Type;Framed-Protocol;Framed-IP-Address;Framed-IP-Netmask;Framed-Routing;Filter-Id;Framed-MTU;Framed-Compression;Login-IP-Host;Login-Service;Login-TCP-Port;Old-Password;Reply-Message;Callback-Number;Callback-Id;Expiration;Framed-Route;Framed-IPX-Network;State;Class;Session-Timeout;Idle-Timeout;Termination-Action;NAS-Identifier;Proxy-State;Framed-Pool;Cisco-Service-Info;cisco-avpair;cisco-SSG-Service-Info;Cisco-SSG-Account-Info;Acct-Status-Type;mpd-rule
#nas.inspector.radius.attributes=User-Name;Framed-IP-Address;Acct-Session-Id;Cisco-Service-Info
#radius.attributes=Service-Type;Framed-Protocol;Framed-IP-Address;Framed-IP-Netmask;Framed-Routing;Filter-Id;Framed-MTU;cisco-avpair;Framed-Compression;Login-IP-Host;Login-Service;Login-TCP-Port;Old-Password;Reply-Message;Callback-Number;Callback-Id;Expiration;Framed-Route;Framed-IPX-Network;State;Class;Session-Timeout;Idle-Timeout;Termination-Action;NAS-Identifier;Proxy-State;Framed-Pool;PPPD-Upstream-Speed-Limit;PPPD-Downstream-Speed-Limit;Inacl;Calling_Station_Id;mpd-rule
# *****************************************************************************
# Настройка передачи атрибутов резалке скоростей! (Begin)
## Тут много тарифов, опишу несколько
# 1 МегаБит
attrset.1.title=1M
attrset.1.attributes=Service-Type=Framed-User;Framed-Protocol=PPP;Framed-IP-Address;cisco-avpair=lcp:interface-config=rate-limit output access-group 50 1048576 131072 196608 conform-action transmit exceed-action drop;cisco-avpair=lcp:interface-config=rate-limit output 1048576 131072 196608 conform-action continue exceed-action drop;cisco-avpair=lcp:interface-config=rate-limit input 1048576 131072 196608 conform-action continue exceed-action drop;Filter-ID=5
# 8 МегаБит
attrset.2.title=8M
attrset.2.attributes=Framed-Pool=pool_1;Service-Type=Framed-User;Framed-Protocol=PPP;Framed-IP-Address;cisco-avpair=lcp:interface-config=rate-limit output access-group 50 1048576 131072 196608 conform-action transmit exceed-action drop;cisco-avpair=lcp:interface-config=rate-limit output 8388608 1048576 1572864 conform-action continue exceed-action drop;cisco-avpair=lcp:interface-config=rate-limit input 8388608 1048576 1572864 conform-action continue exceed-action drop;Filter-ID=5
#...
#...
#
# *****************************************************************************
#Cisco-AVPair=multilink:min-links=1
#игнорировать длительность соединения в Acct-Session-Time атрибуте с NASа, вычислять самостоятельно
#ignore.acct.session.time=1
#Пулы адресов определяются следующим образом:
pools.pool_1=1.1.1.1-1.1.1.254
pools.pool_2=0.0.0.0-0.0.0.255
pools.pool_3=0.0.0.0-0.0.0.255
pools.pool_4=0.0.0.0-0.0.0.255
pools.pool_5=0.0.0.0-0.0.0.255
pools.pool_6=0.0.0.0-0.0.0.255
pools.pool_7=0.0.0.0-0.0.0.255
pools.pool_8=0.0.0.0-0.0.0.255
pools.pool_9=0.0.0.0-0.0.0.255
pools.pool_10=10.100.100.0-10.100.255.255
pools.pool_11=0.0.0.0-0.0.0.255
pools.pool_12=0.0.0.0-0.0.0.255
pools.pool_13=0.0.0.0-0.0.0.255
pools.pool_14=0.0.0.0-0.0.0.255
pools.pool_15=0.0.0.0-0.0.0.255
pools.pool_16=10.94.0.0-10.94.0.255
pools.pool_17=0.0.0.0-0.0.0.255
pools.pool_18=0.0.0.0-0.0.0.255
pools.pool_19=0.0.0.0-0.0.0.255
pools.pool_20=0.0.0.0-0.0.0.255
# *****************************************************************************
#режим работы радиуса
#1 - режим UPDATE - пересчёт во время прохождения UPDATE пакетов
#2 - режим CHECKER - пересчёт по таймеру, UPDATE пакеты используются для получения информации о трафике
dialup.workmode=1
#для режима UPDATE - время в секундах после последнего UPDATE пакета, по истечении которого сессия считается неактивной
#(не учитывается в подсчёте числа одновременных соединений)
max.update.timeout=120
#сколько максимально секунд соединение в статусе wait ждёт Start пакета
max.wait.timeout=120
#время в секундах, через которое происходит пересчёт в режиме CHECKER
update.time=60
#время в секундах, через которое проверяется необходимость пересчёта в режиме CHECKER
run.sleep=3
#интервал, с которым запускается проверяльщик
killer.sleep=10
#параметры отсылальщика ошибок (в данной версии не используется)
#mailer.period=1800
#mailer.to=???
#игнорировать длительность соединения в Acct-Session-Time атрибуте с NASа, вычислять самостоятельно
#ignore.acct.session.time=1
#Авторизация абонентов с неверными параметрами сессии
# 2 - Неверный пароль логина
# 3 - Тарифные планы не найдены
# 4 - Ошибка баланса
# 14 - Логин и карта не найдены
# 21 - Превышен лимит сессий
# 33 - Договор не активен
#Доступ для пользователей с неверным паролем, неактивным тарифным планом, ошибкой баланса, запрещенным логином только до личного кабинета на пятнадцать минут
reject_to_accept.2,3,4,14,33=Framed-Pool=pool_25;Session-Timeout=900;
reject_to_accept.nas=1,5
reject_to_accept.db.write=1
#прерывать сессии с того же Calling-Station-Id, если при авторизации произошла ошибка "Превышен лимит сессий" (может быть полезно, если на NASе остаются несуществующие сессии и клиент не может переподключится)
#0 - нет проверки,
#1 - при совпадении производится попытка отключения старой сессии (например, посылка PoD пакета),
#2 - при совпадении производится попытка отключения старой сессии и завершение ее в биллинге,
#3 - при совпадении производится завершение старой сессии в биллинге.
check.duplicate.session=2
#принудительный разрыв соединений на границе месяца
month.break=1
###
report.round.before.sum=false
pool.alarm.fullness.pool1=99
Cisco ASR, конфиги и логи
Код:
show run | i radius
aaa authentication login default local group radius
aaa authentication ppp default group radius
aaa authorization network default group radius
aaa accounting network default start-stop group radius
aaa server radius dynamic-author
ip radius source-interface GigabitEthernet0/0/3.4090
no radius-server attribute 77 include-in-acct-req
no radius-server attribute 77 include-in-access-req
radius-server attribute 8 include-in-access-req
radius-server attribute 32 include-in-access-req
radius-server attribute nas-port format e UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
radius-server attribute 31 mac format unformatted
radius-server host %адрес_радиуса% auth-port 1812 acct-port 1813 key cisco
radius-server retransmit 5
radius-server timeout 2
radius-server deadtime 1
radius-server authorization default Framed-Protocol ppp
radius-server vsa send cisco-nas-port
Код:
show run | i aaa
aaa new-model
aaa authentication login default local group radius
aaa authentication ppp default group radius
aaa authorization exec default local
aaa authorization network default group radius
aaa accounting delay-start all
aaa accounting update periodic 5
aaa accounting network default start-stop group radius
aaa server radius dynamic-author
aaa session-id common
aaa policy interface-config allow-subinterface
Код:
interface Virtual-Template1
mtu 1492
ip unnumbered Loopback1
no logging event link-status
load-interval 60
peer default ip address pool pool_1
ppp authentication pap
На всякий случай указал дефолтный пул на Virtual-Template1, этот пул совпадает с выдачей адресов по Радиусу, пробовал изменять на любой другой - разницы нет.
Теперь логи ASR`a
Код:
May 25 12:55:36.360: RADIUS(000001BB): Send Access-Request to %radius_ip_address%:1812 id 1645/147, len 162
May 25 12:55:36.360: RADIUS: authenticator 95 98 88 B7 70 E4 6B 6E - F7 48 52 8B 57 11 B6 22
May 25 12:55:36.360: RADIUS: Framed-Protocol [7] 6 PPP [1]
May 25 12:55:36.360: RADIUS: User-Name [1] 7 "artem"
May 25 12:55:36.360: RADIUS: User-Password [2] 18 *
May 25 12:55:36.360: RADIUS: NAS-Port-Type [61] 6 Ethernet [15]
May 25 12:55:36.360: RADIUS: Vendor, Cisco [26] 17
May 25 12:55:36.360: RADIUS: cisco-nas-port [2] 11 "0/0/0/996"
May 25 12:55:36.360: RADIUS: NAS-Port [5] 6 433
May 25 12:55:36.360: RADIUS: NAS-Port-Id [87] 11 "0/0/0/996"
May 25 12:55:36.360: RADIUS: Vendor, Cisco [26] 41
May 25 12:55:36.360: RADIUS: Cisco AVpair [1] 35 "client-mac-address=ecf4.bb75.77fb"
May 25 12:55:36.360: RADIUS: Service-Type [6] 6 Framed [2]
May 25 12:55:36.360: RADIUS: NAS-IP-Address [4] 6 %nas_ip_addr%
May 25 12:55:36.360: RADIUS: Nas-Identifier [32] 18 "bras.ru"
May 25 12:55:36.360: RADIUS(000001BB): Sending a IPv4 Radius Packet
May 25 12:55:36.360: RADIUS(000001BB): Started 2 sec timeout
May 25 12:55:36.387: RADIUS: Received from id 1645/147 %radius_ip_address%:1812, Access-Accept, len 52
May 25 12:55:36.387: RADIUS: authenticator A4 AC 42 85 26 F2 41 56 - B5 CD 29 CC AB C3 97 CC
May 25 12:55:36.387: RADIUS: Service-Type [6] 6 Framed [2]
May 25 12:55:36.387: RADIUS: Framed-Protocol [7] 6 PPP [1]
May 25 12:55:36.387: RADIUS: Framed-IP-Address [8] 6 1.1.1.122
May 25 12:55:36.387: RADIUS: Session-Timeout [27] 6 561926
May 25 12:55:36.387: RADIUS: Framed-IP-Pool [88] 8 "pool_1"
May 25 12:55:36.387: RADIUS(000001BB): Received from id 1645/147
May 25 12:55:36.387: ppp228 PPP: Received LOGIN Response PASS
May 25 12:55:36.387: ppp228 PPP AUTHOR: Author Data Available
May 25 12:55:36.387: ppp228 PPP: Receive Attrs from[authen] Keep[LCP] MERGE
May 25 12:55:36.387: ppp228 PPP: Keep Attr: service-type 0 2 [Framed]
May 25 12:55:36.387: ppp228 PPP: Updated the attr service-type in datalist
May 25 12:55:36.388: ppp228 PPP: Keep Attr: Framed-Protocol 0 1 [PPP]
May 25 12:55:36.388: ppp228 PPP: Updated the attr Framed-Protocol in datalist
May 25 12:55:36.388: ppp228 PPP: Skip Attr: addr 0 1.1.1.122
May 25 12:55:36.388: ppp228 PPP: Keep Attr: timeout 0 561926 (0x89306)
May 25 12:55:36.388: ppp228 PPP: Updated the attr timeout in datalist
May 25 12:55:36.388: ppp228 PPP: Skip Attr: addr-pool 0 "pool_1"
May 25 12:55:36.389: ppp228 PPP: Receive Attrs from[SSS] Keep[NCPs] MERGE
May 25 12:55:36.389: ppp228 PPP: Skip Attr: service-type 0 2 [Framed]
May 25 12:55:36.389: ppp228 PPP: Skip Attr: Framed-Protocol 0 1 [PPP]
May 25 12:55:36.389: ppp228 PPP: Keep Attr: addr 0 1.1.1.122
May 25 12:55:36.389: ppp228 PPP: Updated the attr addr in datalist
May 25 12:55:36.389: ppp228 PPP: Skip Attr: timeout 0 561926 (0x89306)
May 25 12:55:36.389: ppp228 PPP: Keep Attr: addr-pool 0 "pool_1"
May 25 12:55:36.389: ppp228 PPP: Updated the attr addr-pool in datalist
May 25 12:55:36.403: AAA/BIND(000001BB): Bind i/f Virtual-Access2.1
May 25 12:55:36.403: Vi2.1 LCP AUTHOR: Process LCP Author Data
May 25 12:55:36.403: Vi2.1 LCP AUTHOR: Process Attr: service-type
May 25 12:55:36.403: Vi2.1 LCP AUTHOR: Process Attr: Framed-Protocol
May 25 12:55:36.403: Vi2.1 LCP AUTHOR: Process Attr: timeout
May 25 12:55:36.404: Vi2.1 LCP AUTHOR: Authorization succeeded
May 25 12:55:36.404: Vi2.1 PAP: O AUTH-ACK id 56 len 5
May 25 12:55:36.405: Vi2.1 PPP: Store Author Attr: addr
May 25 12:55:36.405: Vi2.1 PPP: Store Author Attr: addr-pool
May 25 12:55:36.405: Vi2.1 PPP IPCP: negotiation authorized = 1, tacacs author = 0
May 25 12:55:36.405: Vi2.1 PPP IPCP: neg is authorized, processing CP UP event
May 25 12:55:36.407: Vi2.1 PPP IPCP: neg is authorized, processing incoming CONFREQ
May 25 12:55:36.407: Vi2.1 IPCP AUTHOR: Start. Her address 0.0.0.0, we want 0.0.0.0
May 25 12:55:36.407: % IPCP AUTHOR Vi2.1: Attributes addr and addr-pool are mutually exclusive
May 25 12:55:36.407: Vi2.1 IPCP AUTHOR: Authorization denied
May 25 12:55:36.407: Vi2.1 IPCP AUTHOR: Done. Her address 0.0.0.0, we want 1.1.1.122
May 25 12:55:36.407: Vi2.1 IPCP: Address authorization failed. Closing IPCP
May 25 12:55:36.410: Vi2.1 PPP: Sending Acct Event[Down] id[1BB]
May 25 12:55:36.414: Vi2.1 PPP: Clearing AAA Unique Id = 1BB
May 25 12:55:36.428: RADIUS: Removing all radius source-int. pointing to Virtual-Access2.1
Версия софта ASR
Код:
show ver
Cisco IOS XE Software, Version 03.13.02.S - Extended Support Release
Cisco IOS Software, ASR1000 Software (PPC_LINUX_IOSD-ADVIPSERVICES-M), Version 15.4(3)S2, RELEASE SOFTWARE (fc3)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2015 by Cisco Systems, Inc.
Compiled Fri 30-Jan-15 20:14 by mcpre
Подскажите, что делать то )