Различия
Показаны различия между двумя версиями страницы.
dpi:dpi_options:use_cases:qs_rateplans [2023/08/29 12:46] – elena.krasnobryzh | dpi:dpi_options:use_cases:qs_rateplans [2024/09/26 15:29] (текущий) – внешнее изменение 127.0.0.1 | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ====== qs_rateplans ====== | + | ====== |
+ | {{indexmenu_n> | ||
+ | ===== Введение ===== | ||
+ | Для реализации [[dpi: | ||
+ | * **rate_10M** - базовый тарифный план, который используется после авторизации абонента. | ||
+ | * **blocked** - тарифный план, который используется для блокировки абонента и предоставления доступа только по определенным протоколам. | ||
+ | |||
+ | Доступ к Белому списку ресурсов и переадресация HTTP-запросов пользователя на Captive Portal подключается через [[dpi: | ||
+ | |||
+ | Варианты использования 5 услуги **my_white_list**: | ||
+ | * 5 услуга подключается совместно с тарифным планом **blocked**, | ||
+ | * 5 услуга подключается без изменения тарифного плана. Для этого в конфигурации FastDPI необходимо добавить [[dpi: | ||
+ | |||
+ | <note important> | ||
+ | VasExperts-Policing-Profile = " | ||
+ | VasExperts-Service-Profile = " | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Распределение трафика по классам для тарифного плана ===== | ||
+ | Для разметки приоритетов используем опцию [[dpi: | ||
+ | |||
+ | 1. Создаем файл **protocols.txt** c описанием групп протоколов, | ||
+ | < | ||
+ | dns cs0 | ||
+ | ICMP cs0 | ||
+ | http cs0 | ||
+ | https cs0 | ||
+ | QUIC cs1 | ||
+ | default cs2 | ||
+ | bittorrent cs7 | ||
+ | </ | ||
+ | где | ||
+ | * cs0 соответствует приоритету 0, class0 соответственно | ||
+ | * cs1 - приоритету 1, class1 | ||
+ | * cs7 - приоритету 7, низший класс | ||
+ | <note important> | ||
+ | кроме того в соотвтетвии с ними будет производится приоритезация протоколов в полосе.</ | ||
+ | |||
+ | 2. Конвертируем его в формат dscp, который понимает fastDPI | ||
+ | < | ||
+ | cat protocols.txt|lst2dscp / | ||
+ | </ | ||
+ | |||
+ | 3. Применяем настройки | ||
+ | < | ||
+ | service fastdpi reload | ||
+ | </ | ||
+ | ===== Создание тарифного плана ===== | ||
+ | Для организации абонентской полосы согласно тарифному плану используем опцию [[dpi: | ||
+ | \\ | ||
+ | 1. Для каждого тарифного плана абонента в биллинге создаем файл конфигурации, | ||
+ | <note important> | ||
+ | |||
+ | Пример описания для тарифа 10mbit, название в биллинге " | ||
+ | |||
+ | Создаем файл rate_10M.cfg | ||
+ | < | ||
+ | htb_inbound_root=rate 10mbit | ||
+ | htb_inbound_class0=rate 4mbit ceil 10mbit | ||
+ | htb_inbound_class1=rate 3mbit ceil 10mbit | ||
+ | htb_inbound_class2=rate 8bit ceil 10mbit | ||
+ | htb_inbound_class3=rate 8bit ceil 10mbit | ||
+ | htb_inbound_class4=rate 8bit ceil 10mbit | ||
+ | htb_inbound_class5=rate 8bit ceil 10mbit | ||
+ | htb_inbound_class6=rate 8bit ceil 10mbit | ||
+ | htb_inbound_class7=rate 8bit ceil 10mbit | ||
+ | htb_root=rate 10mbit | ||
+ | htb_class0=rate 4mbit ceil 10mbit | ||
+ | htb_class1=rate 3mbit ceil 10mbit | ||
+ | htb_class2=rate 8bit ceil 10mbit | ||
+ | htb_class3=rate 8bit ceil 10mbit | ||
+ | htb_class4=rate 8bit ceil 10mbit | ||
+ | htb_class5=rate 8bit ceil 10mbit | ||
+ | htb_class6=rate 8bit ceil 10mbit | ||
+ | htb_class7=rate 8bit ceil 10mbit | ||
+ | </ | ||
+ | Примечания: | ||
+ | * htb_class0-1 - имеют гарантированную скорость в 4Мбит/ | ||
+ | * htb_class7 - минимальную полосу 8bit, что означает, | ||
+ | |||
+ | 2. Создаем тарифный план с именем **rate_10M** | ||
+ | < | ||
+ | fdpi_ctrl load profile --policing / | ||
+ | </ | ||
+ | |||
+ | 3. Чтобы наши настройки для абонентов, | ||
+ | < | ||
+ | udr=1 | ||
+ | </ | ||
+ | 4. Применяем настройки через перезапуск fastDPI | ||
+ | < | ||
+ | service fastdpi restart | ||
+ | </ | ||
+ | |||
+ | ===== Подготовка Captive Portal с доступом к платежным системам и Социально-значимым ресурсам (СЗР) ===== | ||
+ | <note important> | ||
+ | Для того, чтобы ограничить доступ к остальным ресурсам с использованием различных протоколов, | ||
+ | |||
+ | 1.Создаем описание тарифного плана для абонентов в блокировке blocked.cfg. | ||
+ | Разрешаем только трафик [[dpi: | ||
+ | < | ||
+ | htb_inbound_root=rate 10mbit | ||
+ | htb_inbound_class0=rate 1mbit ceil 10mbit | ||
+ | htb_inbound_class1=rate 8bit ceil 8bit | ||
+ | htb_inbound_class2=rate 8bit ceil 8bit | ||
+ | htb_inbound_class3=rate 8bit ceil 8bit | ||
+ | htb_inbound_class4=rate 8bit ceil 8bit | ||
+ | htb_inbound_class5=rate 8bit ceil 8bit | ||
+ | htb_inbound_class6=rate 8bit ceil 8bit | ||
+ | htb_inbound_class7=rate 8bit ceil 8bit | ||
+ | htb_root=rate 10mbit | ||
+ | htb_class0=rate 1mbit ceil 10mbit | ||
+ | htb_class1=rate 8bit ceil 8bit | ||
+ | htb_class2=rate 8bit ceil 8bit | ||
+ | htb_class3=rate 8bit ceil 8bit | ||
+ | htb_class4=rate 8bit ceil 8bit | ||
+ | htb_class5=rate 8bit ceil 8bit | ||
+ | htb_class6=rate 8bit ceil 8bit | ||
+ | htb_class7=rate 8bit ceil 8bit | ||
+ | </ | ||
+ | |||
+ | 2. Создаем тарифный план с именем **blocked** для заблокированного абонента | ||
+ | < | ||
+ | fdpi_ctrl load profile --policing / | ||
+ | </ | ||
+ | |||
+ | 3. Создаем список сайтов, | ||
+ | |||
+ | Создаем файл **my_white_url_list.txt** с url сайтов платежных систем. | ||
+ | Каждая строка файла содержит один url (без префикса < | ||
+ | < | ||
+ | online.sberbank.ru | ||
+ | *.online.sberbank.ru | ||
+ | </ | ||
+ | |||
+ | Для добавления **Социально-значимых ресурсов** необходимо [[https:// | ||
+ | Содержание архива: | ||
+ | < | ||
+ | url_list.txt - URL для HTTP запросов | ||
+ | cn_list.txt - Common Name для HTTPS запросов | ||
+ | sni_list.txt - Server Name Indication для HTTPS запросов | ||
+ | ip_list.txt - IP адреса | ||
+ | </ | ||
+ | |||
+ | <note tip> | ||
+ | Для формирования белого списка рекомендуем использовать готовый список. | ||
+ | |||
+ | **1. [[https:// | ||
+ | |||
+ | 2. [[https:// | ||
+ | |||
+ | 3. [[https:// | ||
+ | ** | ||
+ | </ | ||
+ | |||
+ | |||
+ | 4. Конвертирование во внутренний формат: | ||
+ | < | ||
+ | cat my_white_url_list.txt|url2dic my_url_list.bin | ||
+ | cat my_white_cn_list.txt|url2dic my_cn_list.bin | ||
+ | cat my_white_sni_list.txt|url2dic my_sni_list.bin | ||
+ | cat my_white_ip_list.txt|ip2bin my_ip_list.bin | ||
+ | </ | ||
+ | Любой из списков может отсутствовать. Подробнее в описании опции [[dpi: | ||
+ | <note tip> Чтобы исключить блокировку для HTTPS сайтов | ||
+ | нужно подготовить белый список для CN и SNI **с символом ***, | ||
+ | сигнализирующего что CN и SNI может быть любой.</ | ||
+ | |||
+ | 5. Создаем **именованный профиль** для белого списка | ||
+ | < | ||
+ | fdpi_ctrl load profile --service 5 --profile.name my_white_list --profile.json '{ " | ||
+ | </ | ||
+ | где | ||
+ | * redirect - страница переадресации((Внимание если указываете https сайт, то обязательно требуется данный домен внести в список SNI иначе домен будет заблокирован))((доп. праметры можно дописать (по правилам http) только после ? или &, их надо обязательно указывать в url для белого списка и тут надо подумать за dpi, | ||
+ | * url_list: белый список URL | ||
+ | * sni_list: белый список SNI | ||
+ | * cn_list: белый список Common Name((проверка по ip:port или cname осуществляется если в запросе отсутствуют url или sni)) | ||
+ | * ip_list: белый список IP адресов **включающий СЗР** | ||
+ | |||
+ | |||
+ | ===== Интеграция с биллингом без Radius | ||
+ | <note important> | ||
+ | 1. Проводим интеграцию с биллингом | ||
+ | |||
+ | Вариант интеграции зависит от того, обладает ли биллинг возможностью управления оборудованием по событиям или нет. | ||
+ | |||
+ | **1а. Биллинг умеет управлять оборудованием по событиям: | ||
+ | |||
+ | В этом случае выбираем тип оборудования с управлением по SSH/ | ||
+ | < | ||
+ | fdpi_ctrl load --policing ${rateplan}.cfg --ip ${ip_address} | ||
+ | или | ||
+ | fdpi_ctrl load --policing ${rateplan}.cfg --login ${login} | ||
+ | </ | ||
+ | где | ||
+ | * ${rateplan} | ||
+ | * ${ip_address} - сюда биллинг подставит ip адрес 192.168.0.1 абонента (для абонентов с фиксированным ip) | ||
+ | * ${login} | ||
+ | |||
+ | **1б. Биллинг не умеет управлять оборудованием по событиям** | ||
+ | |||
+ | Настроим выгрузку данных из биллинга по расписанию в crontab. В файлы с именами имя_тарифного_плана.lst выгружаем из биллинга список абонентов с соответвующими тарифными планамм (список может содежать ip или login) и запускаем загрузку этих данных в dpi | ||
+ | < | ||
+ | fdpi_ctrl load --policing rate_10M.cfg --file rate_10M.lst | ||
+ | fdpi_ctrl load --policing rate_20M.cfg --file rate_20M.lst | ||
+ | ... | ||
+ | или (для всех сразу) | ||
+ | for rateplan in *.cfg; do fdpi_ctrl load --policing " | ||
+ | </ | ||
+ | |||
+ | 2. Помещаем абонента в Captive Portal((Если событийное управление не поддерживается, | ||
+ | < | ||
+ | fdpi_ctrl load --policing blocked.cfg --ip ${ip_address} | ||
+ | fdpi_ctrl load --service 5 --ip ${ip_address} | ||
+ | </ | ||
+ | |||
+ | 3. После оплаты отключаем абоненту Captive Portal и восстанавливаем его тарифный план | ||
+ | |||
+ | < | ||
+ | fdpi_ctrl load --policing ${rateplan}.cfg --ip ${ip_address} | ||
+ | fdpi_ctrl del --service 5 --ip ${ip_address} | ||
+ | </ |