Настройка BGBilling с RedBack SmartEdge (PPPOE)

Материал из BiTel WiKi

Перейти к: навигация, поиск

Конфиг RedBack. Допустим, абоненты у нас авторизуются в контексте ABON.

context ABON
! 
 no ip domain-lookup
!
# Интерфейс, к которому "биндятся" абоненты
 interface PPP multibind lastresort
  ip unnumbered loop1
  pim sparse-mode passive
!
# Интерфейс, который используется для общения с Radius-сервером
 interface loop0 loopback
  ip address 172.16.19.3/32
   ip source-address radius 
!
 interface loop1 loopback
  ip address 172.16.19.4/32
 no logging console
!
# Access-листы для разделения трафика на локальный и внешний
 policy access-list ABON-IN
  seq 10 permit ip any 194.XX.18.0 0.0.1.255 class LOCAL
  seq 20 permit ip any 193.XX.88.0 0.0.3.255 class LOCAL
  seq 30 permit ip any any class INET
!
 policy access-list ABON-OUT
  seq 10 permit ip 194.XX.18.0 0.0.1.255 any class LOCAL
  seq 20 permit ip 193.XX.88.0 0.0.3.255 any class LOCAL
  seq 30 permit ip any any class INET
!
# Access-лист для абонентов, подключенных через Reject-To-Accept
 policy access-list NOAUTH
  seq 10 permit tcp any host 194.165.18.10 eq www class CLS-NORMAL
  seq 11 permit tcp any host 194.165.18.10 eq 8081 class CLS-NORMAL
  seq 20 permit tcp any host 194.165.18.3 eq www class CLS-NORMAL
  seq 30 permit udp any host 194.165.18.6 eq domain class CLS-NORMAL
  seq 40 permit tcp any any eq www class CLS-REDIRECT
  seq 50 permit ip any any class CLS-DROP
!
# Профиль HTTP-редиректа для перенаправления отключенных по балансу абонентов на страницу с ошибкой.
# ЧТобы в консоли ввести символ '?' - нажать ESC
 http-redirect profile NOAUTH
  url "http://billing.provider.ru/bgbilling/pubexecuter?module=dialup&action=RejectToAccept&mid=1"
!
 aaa authentication administrator local  
 aaa authentication administrator maximum sessions 1
 aaa authentication subscriber radius  
 aaa accounting subscriber radius
 aaa maximum subscriber active 2000
 radius accounting server 194.XX.18.10 encrypted-key F74636C614XXXXXX
 radius coa server 194.XX.18.10 encrypted-key 3DE489C93CDE23A40C98234BC8XXXXXX port 3799
!
 radius server 194.165.18.10 encrypted-key F74636C614XXXXXX
 # Содержимое атрибута Nas-Ip-Address
 radius attribute nas-ip-address interface loop0
 # Это необходимо для того, чтобы RedBack отправлял разные Nas-Port для каждой сессии. Иначе биллинг будет обрабатывать сессии некорректно
 radius attribute nas-port format session-info
 # Содержимое атрибута Nas-IP-Address
 radius attribute nas-identifier RedBack
 
 # Параметры для абонента по умолчанию. Могут переписываться через Radius-атрибуты.
 subscriber default
   qos policy policing DEFAULT-IN
   qos policy metering DEFAULT-OUT
   dns primary 194.165.18.6
!
 ip route 0.0.0.0/0 context local
 
# Полиси для абонентов. Параметры Rate и Burst переписываются через Radius-атрибуты
 
qos policy DEFAULT-IN policing 
 ip access-group ABON-IN ABON
  class LOCAL
   rate 100000 burst 12500000
  class INET
   rate 100000 burst 12500000
 rate-calculation exclude layer-2-overhead
!
qos policy DEFAULT-OUT metering 
 ip access-group ABON-OUT ABON
  class LOCAL
   rate 100000 burst 12500000
  class INET
   rate 100000 burst 12500000
 rate-calculation exclude layer-2-overhead
 
# Конфиг порта
port ethernet 2/2
 no shutdown
 medium-type copper
 encapsulation dot1q
# Включаем PPPOE-сервер в 100-м вилане
 dot1q pvc 100 encapsulation pppoe 
  bind authentication pap chap context ABON maximum 2000


Конфиг Nas'а в биллинге:

# Атрибуты для задания скорости соединения
attrset.2.title=1M
attrset.2.attributes=Dynamic-QoS-Param=police-class-rate INET rate-absolute 1000;Dynamic-QoS-Param=police-class-burst INET 125000;Dynamic-QoS-Param=meter-class-rate INET rate-absolute 1000;Dynamic-QoS-Param=meter-class-burst INET 125000;
 
attrset.3.title=2M
attrset.3.attributes=Dynamic-QoS-Param=police-class-rate INET rate-absolute 2000;Dynamic-QoS-Param=police-class-burst INET 250000;Dynamic-QoS-Param=meter-class-rate INET rate-absolute 2000;Dynamic-QoS-Param=meter-class-burst INET 250000;
 
# Пулы задаем отдельно для RedBack
nas.pools.global=194.XX.19.1-194.XX.19.254;
#числовые коды услуг времени, трафика входящего и исходящего
nas.port_time.default.*=3
nas.port_traffic.default.*=1:COLLECTOR;2:COLLECTOR;8:COLLECTOR;9:COLLECTOR
callback.support=0
#принудительный разрыв соединений на границе месяца
month.break=1
#интервал между посылками на проверку либо сброс соединения в секундах
nas.inspector.sleep_time=60
#максимальное число попыток сброса соединения
nas.inspector.kill.max_messages=5
netflow.receive.from=194.XX.18.1
 
# Настройка CoA/PoD
nas.inspector.class=bitel.billing.server.processor.PoDNASConnectionInspector
#на какой порт слать PoD/CoA запросы
nas.inspector.radius.port=3799
#на какой хост слать (если не указан - берется IP адреса NASа)
nas.inspector.radius.host=172.16.19.3
#секрет для подписи пакетов (если не указан - берется секрет NASа)
nas.inspector.radius.secret=XXXXXXXXXX
#какие атрибуты добавлять в PoD/CoA запрос из сессии, если пустой параметр - высылаются все атрибуты
nas.inspector.radius.attributes=Acct-Session-Id;
#опции, относящиеся только к CoA пакетам
#таймаут ожидания ответа в секундах ответа между попытками отправки пакета СoA
nas.inspector.coa.timeout=5
#количество попыток отправить пакет CoA
nas.inspector.coa.retries=2
#количество потоков отправки CoA пакетов
nas.inspector.coa.threads=4
coa.log=1
drop.sleep.timeout=3600

Скрипт предобработки Nas'а в биллинге Вынос MAC адреса из поля Mac-Addr в Calling-Station-Id:

import bitel.billing.server.radius.*;
 
attributes = request.getVendorAttributes( 2352, 145 );
 
for( it = attributes.iterator(); it.hasNext(); )
{
	ra = (RadiusAttribute)it.next();
    value = ra.getStringValue();
	if( value != null){
		value = value.replace("-", ".");
		value = value.substring(0,2) + value.substring(3,8) + value.substring(9,14)+ value.substring(15);
		request.setStringAttribute( RadiusStandartAttributes.Calling_Station_Id, value );
	}
}
Личные инструменты