=====Juniper=====
{{http://www.juniper.net/shared/img/header/logo-top-m.gif|http://www.juniper.net/}}
Управление, авторизация и аккаунтинг Juniper MX-80
====Возможности====
* PPPoE,
* [[#ipoe|IPoE]]
* DHCP Option 82
* [[#avtorizacija_po_mac_i_portu_kommutatora|Авторизация по MAC и порту коммутатора]]
* [[#q-in-q|Q-in-Q]]
* [[#avtorizacija_po_mac_abornenta|Авторизация по MAC аборнента]]
* Авторизация по логину паролю (PPPoE)
* Авторизация по MAC (IPoE)
* Шейпер с классами трафика, нарезка скорости в зависимости от времени суток
* Radius CoA/PoD
* Перенаправление должников в личный кабинет
**Лицензии**
* S-MX80-SA-FP
* S-MX80-SSM-FP
* S-SA-16K
=====PPPoE=====
=====IPoE=====
Для работы в таком режиме нужно настроить DHCP сервер на MX80.
Авторизация и аккаунтинг проходит в следующем порядке.
* Абонентское оборудование при подключении к сети запрашивает IP адрес. Биллинг исходя из параметров выбранной авторизации:
* [[#avtorizacija_po_mac_kommutatora_i_portu_ipoe|Switch + Port]]
* MAC абонента
проводит авторизацию абонента. Если авторизация не прошла абоненту выдаётся профайл с редиректом на страничку авторизации и сообщение об ошибке авторизации.
Если авторизация прошла успешно клиенту присваивается профайл с заданной скоростью. \\
Для данного типа авторизации тарифный план абонента заводиться в модуле [[abills:docs:modules:dv:ru|Internet]], а параметры etherenet уровня
IP, PORT, SWITCH (коммутатор) в модуле [[abills:docs:modules:dhcphosts:ru|IP/DHCP]]
====Авторизация по MAC абонента====
Авторизация по умолчанию
Мак абонента прописывается в сервисе **Internet** абонента поле CID.
====Авторизация по MAC и порту коммутатора====
Для включения режима авторизации Switch MAC + Switch Port нужно включить опцию.
$conf{MX80_IPOE_SWITCH_PORT}=1;
Если на порту в билинге прописано больше одного клиента система после авторизации по порту производит атворизацию по MAC адресу. Если в билинге прописан только один клиента, а на порту пробует авторизироваться несколько устройств система им все выдаёт один и тот же IP адрес
Для авторизации по данному методу в билинге нужно завести коммутаторы \\
**/ Система/ Сервер доступа/** \\
|IP:| IP коммутатора |
|Название:| Название |
|Тип:| **other** \\ тип коммутатора |
|Mac:| Мак коммутатора |
в карточке абонента добавить данные авторизации в сервисе **IP/DHCP**. Если данного меню не в системе установите модуль [[abills:docs:modules:dhcphosts:ru|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
настройка абонента проводится аналогично [[#avtorizacija_po_mac_i_portu_kommutatora|Авторизация по 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"
===Через User-Name===
User-Name = "mx5-brs.r1|20cf.308c.e32f|ae1:1001-401"
^mx5-brs.r1 | имя браса |
^20cf.308c.e32f | мак абонента |
^ae1: | интерейс |
^1001-401 | high_vlan-low_vlan |
$conf{MX80_O82_EXPR}='User-Name:\|([a-f0-9\.]+)\|[a-z0-9+]\W+(\d+)\-(\d+)$:MAC,SERVER_VLAN,VLAN';
=====Настройка сервера доступа=====
**Правка 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{MX80_PROFILES}='WRONG_PASS:profile_wrong_pass;'; | Определение разных профайлов для разных ошибок авторизации \\ Параметры: \\ \\ **WRONG_PASS** - Неправильный правильный пароль для туннельных соединений (PPPoE) \\ **NEG_DEPOSIT** - Отрицательный баланс на счету \\ **AUTH_ERROR** - Другая ошибка авторизации \\ **NOT_REGISTER** - Учётная запись с такими параметрами не зарегистрирована \\ **NOT_ALLOW_SERVICE** - Использование услугу запрещено \\ **DISABLE** - Пользователь отключен \\ \\ Пример \\ $conf{MX80_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_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';
* [[abills:docs:modules:dhcphosts_expr:ru|Выражения]]
====Переключение шейпера в зависимости от времени суток====
На границе интервалов нужно запускать программу контроля скорости \\
/usr/abills/libexec/billd mx80_change_profile
Программа автоматически определяет текущую скорость и переключает профайлы абонентов
Параметры:
^LOGIN= |Установка для выбранного абонента |
^NAS_IDS= | Название сервера доступа |
^SPEED=IN:OUT | Установить скорость в ручную |
^DEBUG= | Режим отладки |
====Пример 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} | Номер класса трафика \\ 3 - Глобальный \\ 2 - Локальный \\ 3 - Внутренний \\ \\ Для гостевых сервисов используется номер 1 |
|{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";
}
====Дополнительно====
* [[http://www.juniper.net/techpubs/en_US/junos14.1/topics/concept/radius-terminate-code-app-terminate-reasons-mapping.html|Описание кодов завершения сессий Juniper]]