Juniper

http://www.juniper.net/

Управление, авторизация и аккаунтинг Juniper MX-80

Возможности

Лицензии

  • S-MX80-SA-FP
  • S-MX80-SSM-FP
  • S-SA-16K

PPPoE

IPoE

Для работы в таком режиме нужно настроить DHCP сервер на MX80.

Авторизация и аккаунтинг проходит в следующем порядке.

  • Абонентское оборудование при подключении к сети запрашивает IP адрес. Биллинг исходя из параметров выбранной авторизации:

проводит авторизацию абонента. Если авторизация не прошла абоненту выдаётся профайл с редиректом на страничку авторизации и сообщение об ошибке авторизации. Если авторизация прошла успешно клиенту присваивается профайл с заданной скоростью.

Для данного типа авторизации тарифный план абонента заводиться в модуле Internet, а параметры etherenet уровня IP, PORT, SWITCH (коммутатор) в модуле IP/DHCP

Авторизация по MAC абонента

Авторизация по умолчанию

Мак абонента прописывается в сервисе Internet абонента поле CID.

Авторизация по MAC и порту коммутатора

Для включения режима авторизации Switch MAC + Switch Port нужно включить опцию.

$conf{MX80_IPOE_SWITCH_PORT}=1;

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

Для авторизации по данному методу в билинге нужно завести коммутаторы
/ Система/ Сервер доступа/

IP: IP коммутатора
Название: Название
Тип: other
тип коммутатора
Mac: Мак коммутатора

в карточке абонента добавить данные авторизации в сервисе IP/DHCP. Если данного меню не в системе установите модуль Dhcphosts

Имя хоста: Заполняется автоматически
Сети: Выбрать сеть абонента. При авторизации параметры сети педаются через радиус (Gateway, DNS, NTP)
IP: IP адрес абонента.
Если нужен авто выбор адресов оставляем полу по умолчанию (0.0.0.0), пулы динамически раздаваемых адресов заводятся через IP Pools (/ Система/ Сервер доступа/ IP POOLs/) и присваиваются серверам доступа
Сетевой адрес: Мак адрес абонента если не нужен оставляем по умолчанию. Мак адрес проверяется только если на порту больше одного абонента
Порт (1,2,5): Порт коммутатора
VLAN ID: Номер Vlan абонента
Server: Номер Vlan сервера. Указывать только при авторизации q-in-q
Комутатор: Коммутатор абонента

Q-in-Q

Авторизация абонентов проходит по Vlan Server и Vlan Client передаваемые MX80

настройка абонента проводится аналогично Авторизация по MAC и порту коммутатора. Только не надо заводить сервера доступа и отмечать их у абонентов так как они не учитываются

выражение q-in-q

запрос

        User-Name = "b870.f4b5.b6b8"
        Service-Type = Framed-User
        Chargeable-User-Identity = ""
        Acct-Session-Id = "188"
        ERX-Dhcp-Options = 0x3501013d0701b870f4b5b6b80c07646f6d732d8f8a3c084d53465420352e30370c010f03062c2e2f1f2179f92b
        ERX-Dhcp-Mac-Addr = "b870.f4b5.b6b8"
        NAS-Identifier = "gw"
        NAS-Port = 89
        NAS-Port-Id = "ae0.1073741837:2000-89"
        NAS-Port-Type = Ethernet
        ERX-Pppoe-Description = "pppoe b8:70:f4:b5:b6:b8"

Выражение

$conf{MX80_O82_EXPR}='NAS-Port-Id:\W(\d+)\-(\d+)$:SERVER_VLAN,VLAN';

Если все прописано правильно, при попытке авторизации система сообщит что это новый абонент

 Reply-Message = "USER_NOT_EXIST q2q: 2000-89 MAC: b8:70:f4:b5:b6:b8"

Настройка сервера доступа

Правка RADIUS словарей
Freebsd путь /usr/local/share/freeradius/

В словарях нужно изменить атрибуты на следующие

dictionary.erx

ATTRIBUTE     ERX-Dhcp-Options                        55      octets

dictionary.rfc4679

ATTRIBUTE     ADSL-Agent-Circuit-Id                   1       octets
ATTRIBUTE     ADSL-Agent-Remote-Id                    2       octets

ABillS

# cp Mx80.pm /usr/abills/Abills/mysql

файл настройки config.pl

включение модуля авторизации. Данные параметры должны быть прописаны после секций %AUTH = (); %ACCT = ();

$AUTH{mx80} = 'Mx80';
$ACCT{mx80} = 'Mx80';

Парамтеры

$conf{MX80_IPOE_SWITCH_PORT}=1; Авторизация по коммутатору и порту. Данные для авторизации берутся из IP (DHCP) сервиса

Настройка сервера доступа / Система/ Сервер доступа/

IP: IP адрес маршрутизатора
Название: Название
Тип: указать тип: mx80

:Управление:

IP:PORT: адрес и порт для отправки RADIUS CoA команд. (По умолчанию 3799)
xxx.xxx.xxx.xxx:3799
Пароль: пароль для отправки RADIUS и CoA пакетов

Дополнительные Радиус параметры для IPoE авторизации

  Framed-Route=0.0.0.0 0.0.0.0 31.135.96.1,
  MS-Primary-DNS-Server=10.0.0.1,
  MS-Secondary-DNS-Server=8.8.8.8,

Гостевой профайл

Гостевой профайл разрешает перенаправлять не авторизированных пользователей на страничку уведомления о состоянии счёта и причине отказа авторизации

config.pl

$conf{MX80_GUEST_POOLS_PARAMS}='POOL_ID:EXT_PARAMS'; Объявление гостевого пула адресов. Данный пул выдаётся не авторизированным абонентам которые не зарегистрированы в системе.
Параметры:
POOL_ID - Номер пула адресов в системе ABillS (заводится / Настройки / Сервер доступа/ IP Pools )
EXT_PARAMS - Дополнительные радиус параметры для данного пула. Система предоставляет возможность заводить на каждый Vlan свой гостевой пул. Правила пулов разделяются точкой с запятой (;).

Пример:
$conf{MX80_GUEST_POOLS_PARAMS}='3:ERX-Primary-Dns = 192.168.1.1,Framed-IP-Netmask=255.255.224.0;';
$conf{MX80_DEFAULT_GUEST_PROFILE}='NOAUTH'; Гостевой профайл по умолчанию. Если не указан явно будет использоватся NOAUTH
$conf{MX80_O82_EXPR}='Название опции:регулярное выражение:переменные;…';Определение параметров опции 82
$conf{MX80_PROFILE_PREFIX}='svc'; Префикс профайла соединения
по умолчанию 'svc'
$conf{PROFILES}='WRONG_PASS:profile_wrong_pass;'; Определение разных профайлов для разных ошибок авторизации
Параметры:

WRONG_PASS - Неправильный правильный пароль для туннельных соединений (PPPoE)
NEG_DEPOSIT - Отрицательный баланс на счету
AUTH_ERROR - Другая ошибка авторизации
NOT_REGISTER - Учётная запись с такими параметрами не зарегистрирована
NOT_ALLOW_SERVICE - Использование услугу запрещено
DISABLE - Пользователь отключен

Пример
$conf{PROFILES}='WRONG_PASS:profile_wrong_pass;
NEG_DEPOSIT:profile_neg_deposit;
AUTH_ERROR:profile_other_error;
NOT_REGISTER:profile_not_register;
NOT_ALLOW_SERVICE:profile_not_allow_service;
DISABLE:profile_disable';

Пример config.pl Возможность использовать разные профайлы для разных ошибок подключения

#MX80-PPPoE
$conf{MX80_IPOE_PROFILES}='
WRONG_PASS:svc-guest-pppoe(svc-filter-in-wrongpassword);
NEG_DEPOSIT:svc-guest-pppoe(svc-filter-in-nomoney);
AUTH_ERROR:svc-guest-pppoe(svc-filter-in-unknownerror);
USER_NOT_EXIST:svc-guest-pppoe(svc-filter-in-notregister);
NOT_ALLOW_SERVICE:svc-guest-pppoe(svc-filter-in-notallowservice);
DISABLE:svc-guest-pppoe(svc-filter-in-disable);
WRONG_PORT:svc-guest-pppoe(svc-filter-in-wrongport);
WRONG_CID:svc-guest-pppoe(svc-filter-in-wrongcid);
'; 

Пример настройки MX80

dynamic-profiles svc-guest-pppoe
interfaces {
    pp0 {
        unit "$junos-interface-unit" {
            family inet {
                filter {
                    input guest-filter-in;
                }
            }
        }
    }
}

Выражения для определения параметров Option 82

$conf{MX80_O82_EXPR}='Название опции:регулярное выражение:переменные;…';

Пример:
для коммутаторов Foxgate

Agent-Remote-Id = 0x70726f626e696b2e6c6f63616c
ADSL-Agent-Circuit-Id = "Vlan202+Ethernet1/5"

config.pl

$conf{MX80_O82_EXPR}='ADSL-Agent-Circuit-Id:Vlan(\d+)\+Ethernet\d\/(\d+):VLAN,PORT;ADSL-Agent-Remote-Id:0x([a-f0-9]{12}):MAC';

Пример:
Edge-core ES-3528(M)
Edge-core ES-3510M

$conf{MX80_O82_EXPR}='ADSL-Agent-Circuit-Id:[a-f0-9]{10}([a-f0-9]{2}):PORT;ADSL-Agent-Remote-Id:0x0006([a-f0-9]{12}):MAC';


Alcatel LS6224
EdgeCore 3528M

$conf{MX80_O82_EXPR}='ADSL-Agent-Circuit-Id:\d{4}(\d{4})\d{2}(\d{2}):VLAN,PORT;ADSL-Agent-Remote-Id:0x0006([a-f0-9]{12}):MAC';

Переключение шейпера в зависимости от времени суток

На границе интервалов нужно запускать программу контроля скорости

/usr/abills/libexec/billd mx80_change_profile

Программа автоматически определяет текущую скорость и переключает профайлы абонентов

Пример RADIUS запросов

Пример авторизации IPoE с использование Option 82

  User-Name = "000e.0cc1.6c8a"
  User-Password = "sub321"
  Service-Type = Framed-User
  Chargeable-User-Identity = ""
  Acct-Session-Id = "129"
  ERX-Dhcp-Options = 0x3501013d0701000e0cc16c8a0c0563616374693707011c02030f0
60c52120106000400150105020800067072cf36b340
  ERX-Dhcp-Mac-Addr = "000e.0cc1.6c8a"
  NAS-Identifier = "gw-subsriber"
  NAS-Port = 4190229
  NAS-Port-Id = "ae0.1073741824:21"
  NAS-Port-Type = Ethernet
  ADSL-Agent-Circuit-Id = 0x000400150105
  ADSL-Agent-Remote-Id = 0x00067072cf36b340

Ответ атворизации для рабочих сессий

  Acct-Interim-Interval = 90
  NAS-Identifier = "gw-subsriber"
  ERX-Dhcp-Options = "0x0304c0a80001"
  ERX-Service-Activate:2 = "svc-local_1-ipoe(3072000,2048000)"
  Service-Type = Framed-User
  Framed-IP-Address = 192.168.47.232
  Framed-IP-Netmask = 255.255.0.0
  ERX-Service-Activate:3 = "svc-global-ipoe(524288,1048576)"

Пример ответа авторизации при гостевой сессии

 Reply-Message = "NEG_DEPOSIT '-5'"
 Session-Timeout = 90
 Service-Type = Framed-User
 ERX-Service-Activate:1 = "svc-guest-ipoe(svc-filter-in-nomoney)"
 ERX-Dhcp-Options = "0x03041f876001"
 ERX-Primary-Dns = 10.10.0.1
 Framed-IP-Address = 192.168.11.236
 Framed-IP-Netmask = 255.255.0.0

Название профайла

ERX-Service-Activate:[3-{traffic_class_id}] = svc-{traffic_class_name}-{profile_sufix}
{traffic_class_id} Номер класса трафика
{traffic_class_name} название класса трафика
{profile_sufix} pppoe
ipoe
если присутствует RADIUS пара Framed-Protocol система подставляет pppoe в противном случае ipoe

Мониторинг расхождений сессий

Отображает не зарегистрированные в биллинге сессии, а также сессии которых нет уже на mx80 но они зарегистрированы в биллинге. Для работы программы нужно открыть доступ к MX80 с биллинг сервера по SNMP. В качестве коммунити (snmp community) нужно использовать пароль управления с биллинга.

# /usr/abills/libexec/billd mx80_checklines SHOW

Результат работы

===================
MX80 Unknown ip: 192.168.0.7 .0.5477
User: e03f.4923.2739
  Connect: IPoE Type:  STATE: configured
  Login time: 2014-09-02 11:54:58 EEST
  

Консоль управления

На сервере билинга

 /usr/abills/misc/certs_create.sh  ssh abills_admin

Juniper

 start shell user root
 scp login_billing@ip_billinga:/usr/abills/Certs/id_rsa.abills_admin.pub /var/home/abills_admin
 set system login user abills_admin class support authentication load-key-file /var/home/abills_admin
 
 class support {
   idle-timeout 10;
   permissions [ interface routing view ];
   allow-commands "monitor|ping|traceroute|show|clear dhcp server binding";
   deny-commands "clear|file|op|request|set|start";
 }

Дополнительно