Juniper
Возможности
- PPPoE,
-
- DHCP Option 82
- Авторизация по логину паролю (PPPoE)
- Авторизация по MAC (IPoE)
- Шейпер с классами трафика, нарезка скорости в зависимости от времени суток
- Radius CoA/PoD
- Перенаправление должников в личный кабинет
Лицензии
- S-MX80-SA-FP
- S-MX80-SSM-FP
- S-SA-16K
PPPoE
IPoE
Для работы в таком режиме нужно настроить DHCP сервер на MX80.
Авторизация и аккаунтинг проходит в следующем порядке.
- Абонентское оборудование при подключении к сети запрашивает IP адрес. Биллинг исходя из параметров выбранной авторизации:
- MAC абонента
проводит авторизацию абонента. Если авторизация не прошла абоненту выдаётся профайл с редиректом на страничку авторизации и сообщение об ошибке авторизации.
Если авторизация прошла успешно клиенту присваивается профайл с заданной скоростью.
Для данного типа авторизации тарифный план абонента заводиться в модуле 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"
Через 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';
Переключение шейпера в зависимости от времени суток
На границе интервалов нужно запускать программу контроля скорости
/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"; }