... В данном примере мы рассматриваем схему Mikrotik-Simple. Отличие этой схемы от схемы Mikrotik PCQ заключается в назначении скорости абоненту через очередь, а не через дерево. В последних версиях Mikrotik производители заявляли о более высокой производительности именно через назначение скоростей с помощью Simple. Схема Mikrotik-Simple поддерживает как IPoE так и PPPoE/PPTP/L2TP авторизацию. В схеме участвуют следующие понятия: * Абонент * Биллинг * Mikrotik Общая логика настройки взаимодействия выглядит следующим образом: - На стороне биллинга генерируется конфигурация для Mikrotik'а на основании входных данных, таких как IP-адрес, логин, пароль, порт и так далее. - Конфигурация загружается на Mikrotik. - При добавлении абонента в биллинг, на стороне биллинга вызывается определённое событие, которое описано в скрипте отправки команд, после вызова которого на оборудование уходит команда по добавлению определённого IP-адреса в нужный адрес-лист, которому разрешен доступ в интернет. Помимо этого, будет отправлена команда на добавление шейпера исходя из тарифного плана абонента. Более подробно схема описана ниже. ===== Описание логики авторизации абонентов ===== **Общая логика авторизации абонента с помощью IPoE.** - Абонент получает IP-адрес по DHCP, либо прописывает адрес статически. - Если данный IP-адрес находится в разрешающем адрес-листе на Mikrotik'e - доступ в интернет есть. - При блокировке абонента по отрицательному балансу на биллинге будет создано событие, которое добавляет адреса абонента в ещё один адрес-лист, который запретит абоненту доступ в интернет. Таким образом абонент будет сразу в 2 адрес-листах. - При разблокировке абонента на биллинге будет создано событие, которое отправит на Mikrotik команду для удаления адреса абонента из блок листа и доступ у абонента восстановится. В данной схеме взаимодействия RADIUS биллинга никак не используется и роль биллинга сводится к отправке в нужный момент времени определенной команды на Mikrotik. При этом всю информацию об адрес-листах и шейперах хранит Mikrotik. На случай, если в какой-то момент времени Mikrotik по какой-то причине был недоступен с биллинга, на биллинге имеется скрипт синхронизации, который запускается раз в час и проверяет совпадение состояния абонентов на биллинге и на Mikrotik'е и в случае, если он находит различия - отправляет команды на оборудование. **Общая логика авторизации абонента с помощью PPPoE.** - Абонент отправляет запрос в широковещательный сегмент на авторизацию PPPoE для обнаружения PPPoE концентратора. На стороне абонента это выглядит как ввод логина/пароля при установке соединения (PADI). - Mikrotik отвечает на этот запрос, подставляя свой MAC-адрес в ответ, тем самым говоря абоненту, что Mikrotik является PPPoE концентратором (PADO). - Компьютер абонента, при получении ответа от Mikrotik'а, выбирает его в качестве концентратора (в случае, если ответ пришел только от одного Mikrotik'а) и отправляет запрос на авторизацию Mikrotik'у (PADR). - Mikrotik, получив запрос на авторизацию от абонента, отправляет запрос на авторизацию уже биллингу, в котором указывает логин/пароль абонента (Access-request). - Биллинг при получении запроса от Mikrotik'а проверяет в базе данных наличие абонента с такой связкой логин/пароль. Если абонент найден - биллинг разрешает Mikrotik'у установить соединение и отправляет по RADIUS атрибут Mikrotik-Address-List со значением crb_auth_list. Этот адрес-лист говорит о том, что абонент существует в биллинге (Access-accept). Так же биллинг передает через RADIUS информацию об IP-адресе абонента, который будет назначен при установке туннельного соединения. Если биллинг не находит абонента - будет отправлен отказ на авторизацию (Access-reject). - В момент авторизации на биллинге так же происходит событие, которое отправляет на Mikrotik команды по назначению скорости, а так же, если абонент заблокирован по отрицательному балансу, добавление абонента в negbal-лист на Mikrotik. - Mikrotik, после получения от биллинга разрешения на авторизацию (Access-accept), отправляет абоненту пакет об успешной авторизации и устанавливает туннельное соединение между собой и компьютером абонента (PADS). В схеме PPPoE RADIUS биллинг используется каждый раз при подключении абонента, поэтому важно, чтобы при авторизации абонента у Mikrotik'а был доступ до биллинга. В этой схеме биллинг так же генерирует событие при изменении состояния абонента как по балансу, так и по другой административной блокировке и реагирует на это отправкой команд. Различия этих 2 схем только в установлении соединения. В стандартной схеме предусмотрена отправка NetFlow пакетов на Collector биллинга. По умолчанию он работает через порт 9996. При получении NetFlow информации от Mikrotik'а, биллинг агрегирует её и добавляет информацию в базу данных биллинга. Далее, эту информацию можно просматривать через веб-интерфейс и использовать в отчётах. ===== Подготовка биллинга к интеграции с оборудованием ===== После установки биллинга, на нем будет развёрнута стандартная база данных с тестовыми абонентами и тарифами для ознакомления с продуктом. В базе данных будет примерно 50 абонентов и около 10 тарифов. {{:проект_биллинг5:маркетинг:статьи_и_рассылки:before_delete.png?nolink&240x371}} Перед интеграцией оборудования эти данные целесообразно удалить, чтобы в будущем не удалять лишнюю информацию вручную. Для этого в биллинге существует инструмент полной очистки базы данных. После этого в биллинге останется только необходимая информация, практически пустая база данных, с которой работать в последствии будет намного удобнее. ==== Очистка базы данных ==== **Шаг 1.** Заходим в веб-интерфейс биллинга по адресу 'ip адрес биллинга':8080 и вводим логин/пароль. **Шаг 2.** Переходим на вкладку "Управление абонентами и тарифами". В этой вкладке находится база данных биллинга. **Шаг 3.** Переходим на вкладку "Настройки - Очистка базы данных". {{:проект_биллинг5:маркетинг:статьи_и_рассылки:mikrotik_billing:delete1.png?nolink&758x560}}\\ **Шаг 4.** Нажимаем кнопку "Очистить" и ждем завершения процесса. После очистки базы данных в биллинге останется 4 абонента, 3 из которых это администраторы биллинга по умолчанию и 1 тестовый пользователь, который используется внутренними тестами биллинга. {{:проект_биллинг5:маркетинг:статьи_и_рассылки:after_delete.png?nolink&232x129}} То, что не удалилось при очистке БД удалять вручную не нужно - все эти данные необходимы биллингу. **Шаг 5.** Перед интеграцией в пустой базе данных необходимо настроить два пула IP-адресов в биллинге. Эти пулы будут использоваться при генерации схемы. Переходим во вкладку "Управление абонентами и тарифами - Справочники - Пулы IP-адресов" и выбираем пул "cabinet_ip". {{:проект_биллинг5:маркетинг:статьи_и_рассылки:mikrotik_billing:pool.png?nolink&771x666}} В открывшемся окне в поле "начальный адрес" необходимо указать IP-адрес биллинга, который находится на интерфейсе, подключенном к Mikrotik'у, и нажать сохранить. Этот адрес будет использоваться на Mikrotik'e как адрес для редиректа абонентов с отрицательным балансом и блокировкой. Тоже самое делаем для пула "billing_ip". Далее этот адрес будет использоваться в качестве RADIUS сервера на Mikrotik'e и в качестве DST для NetFlow пакетов. ===== Добавление NAS'а в биллинг ===== **Шаг 1.** Заходим в веб-интерфейс по адресу 'ip адрес биллинг':8080. **Шаг 2.** Переходим на вкладку "Управление абонентами и тарифами - Оборудование - NAS". Нажимаем кнопку "Добавить". {{:проект_биллинг5:маркетинг:статьи_и_рассылки:mikrotik_billing:nas1.png?nolink&714x250}}\\ **Шаг 3.** После этих действий открывается окно с настройками NAS'а. {{:проект_биллинг5:маркетинг:статьи_и_рассылки:mikrotik_billing:nas2.png?nolink&789x739}} {{:проект_биллинг5:маркетинг:статьи_и_рассылки:mikrotik_billing:nas3.png?nolink&778x743}} Ключевые параметры NAS'а, которые обязательно необходимо заполнить при интеграции Mikrotik по схеме Mikrotik-Simple: - **Название.** Без названия биллинг не позволит добавить NAS. Подойдет любое название без спецсимволов. В нашем примере указан "Mikrotik". - **IP-адрес.** Адрес из этого поля будет добавлен в конфигурацию RADIUS Client и на запросы, которые приходят на RADIUS с этого адреса RADIUS Server сможет ответить. Если запросы будут приходить на биллинг с адресов, которые не указаны ни на одном NAS'e, ответ от биллинга будет Reject. - **Стандартная схема OSS.** От этого поля зависит, как именно биллинг будет генерировать схему. Здесь выбираем "Mikrotik-Simple". - **Radius_secret.** Это общий пароль для всех RADIUS авторизаций между биллингом и Mikrotik'ом. Пароль попадёт в шаблон и от туда в схему. Использование спецсимволов в этом поле не рекомендуется. - **Coa_port.** Порт для управления через radclient. По умолчанию 3799. Менять не рекомендуется. - **Coa_psw.** Пароль для radclient. На mikrotik'e в качестве coa_psw используется radius_secret, поэтому здесь указывать ничего не нужно. - **Telnet_login.** Логин для управления оборудованием. - **Telnet_password.** Пароль для управления оборудованием. Спецсимволы запрещены. - **Telnet_port.** Порт для управления оборудованием. - **Telnet_ip.** IP-адрес для отправки команд. По этому адресу будут отправляться команды биллингом. - **Telnet_type.** Тип подключения для отправки команд ssh/telnet. - **IP-адрес радиус сервера.** Здесь нужно указать пул billing_ip, который был настроен в предыдущем пункте. - **IP-адрес кабинета.** Здесь нужно указать пул cabinet_ip, который был настроен в предыдущем пункте. - **Не посылать user_disconnect при получении Radius Stop.** Важная опция! Обязательно нужно включить. Она запрещает отправку user_disconnect при получении accounting_stop пакета. - **Список интерфейсов, на которых будет поднят PPPoE сервер.** В случае, если Вам необходимо схема с поддержкой авторизации PPPoE. Эти интерфейсы будут добавлены в шаблон, по которому будет генерироваться конфигурация. После заполнения этих полей необходимо нажать кнопку "Сохранить", дождаться сохранения и перейти во вкладку "Управление". ===== Генерация и загрузка схемы на Mikrotik ===== Во вкладке "Управление" будет происходить весь процесс от инициализации до загрузки конфигурации на оборудование. В разделе "Каталог управления этим экземпляром оборудования" нажимаем кнопку "Сохранить". {{:проект_биллинг5:маркетинг:статьи_и_рассылки:screenshot_9.png?700|}} На этом шаге будет создан каталог, который указан в примере. В данном случае это каталог /var/oss/core/Mikrotik, именно в нём будет содержаться вся основная информация по текущему NAS'у. Данный каталог будет создан в контейнере /app/asr_billing/ Далее выполняем следующие действия по шагам: **Шаг 1. Инициализация.** {{:проект_биллинг5:маркетинг:статьи_и_рассылки:screenshot_10.png?700|}} **1.1** <mark>rtsh cfg init mikrotik_simple v1</mark> - инициализировать каталог управления /var/oss/core/Mikrotik. Этим действием мы создаем структуру каталогов и файлов внутри каталога /var/oss/core/Mikrotik Среди созданных файлов будут шаблоны, на основании которых будет генерироваться схема и ini файлы, в которых будет хранится информация, которую мы добавляли на основной вкладке оборудования. После шага 1.1 файлы создаются со значением по умолчанию. **1.2** <mark>rtsh cfg fill 192.168.248.1</mark> - заполнить ini файлы данными из биллинга. В этом шаге биллинг заменяет значение переменных из ini файлов значением из информации о NAS'e. Например, в файле main.ini идет замена nas_ip="192.168.0.10" (значение по умолчанию) на nas_ip="192.168.248.1"(значение, взятое из настроек NAS'а). **1.3** <mark>rtsh cfg save</mark> - сохранить сгенерированные файлы в историю. Этот шаг сохраняет те изменения, которые были сделаны на шаге 1.2. \\ **Шаг 2. Сохранение текущей конфигурации.** {{:проект_биллинг5:маркетинг:статьи_и_рассылки:mikrotik_billing:rtsh2_1.png?nolink&801x195}} **2.1** <mark>rtsh cfg download</mark> - загрузить конфигурационные файлы с оборудования в каталог /var/oss/core/Mikrotik/cur. Этот шаг своего рода бэкап со стороны биллинга Вашей текущей конфигурации. **2.2** <mark>rtsh cfg save</mark> - сохранить скаченную конфигурацию в историю. \\ **Шаг 3. Подготовка конфигурации.** {{:проект_биллинг5:маркетинг:статьи_и_рассылки:mikrotik_billing:rtsh3_1.png?nolink&878x242}} **3.1** <mark>rtsh cfg make</mark> - сгенерировать файлы конфигурации из ini-файлов и шаблонов в каталог /var/oss/core/Mikrotik/upload. Этот шаг проводит генерацию конфигурации, которая будет загружена на оборудование. Генерация проходит на основании шаблонов, в которые добавляются переменные из ini файлов. Посмотреть шаблоны можно в /var/oss/core/Mikrotik/tmplt/ а ini файлы в /var/oss/core/Mikrotik/ **3.2** <mark>rtsh cfg upload show</mark> - вывести все сгенерированные конфигурации. Этот шаг выведет весь конфигурационный файл на экран. **3.3** <mark>rtsh cfg save</mark> сохранить сгенерированные конфигурации в историю. \\ **Шаг 4. Загрузка конфигурации.** {{:проект_биллинг5:маркетинг:статьи_и_рассылки:mikrotik_billing:rtsh4_1.png?nolink&706x136}} **4.1** <mark>rtsh cfg upload</mark> - загрузить сгенерированные конфигурационные файлы в оборудование. На этом шаге идет загрузка конфигурации на оборудование по тем реквизитам, которые указаны в NAS'e и ini файлах. Если загрузка идет через ssh - обязательно проведите предварительное подключение с биллинга до NAS по ssh, перейдя в chroot /app/asr_billing/. Для этого выполните следующие команды с биллинга: <code> chroot /app/asr_billing/ ssh admin@192.168.248.1 </code> Это данные из примера. Этим действием Вы убедитесь, что между биллингом и Mikrotik'ом есть доступ и подтвердите прием ssh ключей. ===== Добавление абонента в биллинг ===== После того, как NAS добавлен в биллинг и конфигурация успешно загружена на Mikrotik, можно приступать к добавлению абонентов в биллинг. Первым делом необходимо создать тариф, подходящий для нашей системы расчетов. В Carbon Billing 5 есть очень гибкая система создания тарифов под разные сложные схемы списания, в данной статье все они рассматриваться не будут, так как их описание выходит далеко за рамки статьи. В качестве примера создадим простой тариф с предоплатной системой и методом списания "Ежемесячно, равными долями в день" стоимостью 100 рублей в месяц. Для этого переходим на вкладку "Управление абонентами и тарифами - тарификация - тарифы" и нажимаем кнопку "Мастер". {{:проект_биллинг5:маркетинг:статьи_и_рассылки:mikrotik_billing:tarif1.png?nolink&629x214}} Опция "Мастер" используется для создания простых тарифов и исключает в момент создания все опции кроме основных. {{:проект_биллинг5:маркетинг:статьи_и_рассылки:mikrotik_billing:tarif2.png?nolink&852x494}} В открывшемся окне прописываем название тарифа и выбираем метод списания "Ежемесячно, равными долями в день", нажимаем "Далее" и переходим в настройку услуги. {{:проект_биллинг5:маркетинг:статьи_и_рассылки:mikrotik_billing:tarif3.png?nolink&1597x364}} В Carbon Billing 5 тариф представляет собой набор определенных услуг и при создании тарифа с помощью мастера, услуга будет создана в этом же процессе. Выбираем название, скорость и стоимость услуги, нажимаем "Далее" и "Сохранить". Теперь, когда у нас есть тариф, можно переходить к созданию нового абонента. Для этого перейдем во вкладку "Управление абонентами и тарифами - Абонент" и используем кнопку "+Абонент". Откроется мастер создания абонента, состоящий из 3 шагов: **Шаг 1. Заполняем основную информацию по абоненту.** Ключевые параметры здесь "Название/ФИО", "Тариф" и "Номер договора". После заполнения информации нажимаем кнопку "Далее". {{:проект_биллинг5:маркетинг:статьи_и_рассылки:mikrotik_billing:abonent2.png?nolink&782x749}}\\ **Шаг 2. Вводим реквизиты абонента.** Здесь нет ни одного обязательно поля, они все нужны для дополнительной информации об абоненте. После заполнения информации нажимаем кнопку "Далее". **Шаг 3. Сетевые реквизиты абонента.** Укажем тип авторизации "По ip static", назначим IPv4-адрес из подсети локального интерфейса Mikrotik'а нажав на кнопку рядом с полем (биллинг выберет свободный адрес автоматически), например 192.168.248.5 и выберем в качестве NAS'а Mikrotik. После нажатия кнопок "Далее" и "Готово", будет создан абонент. {{:проект_биллинг5:маркетинг:статьи_и_рассылки:mikrotik_billing:abonent3.png?nolink&800x520}} **В момент создания абонента на Mikrotik уйдут команды из функций:** - user_add, абонент добавлен в биллинг. Эта команда добавит IP-адрес 192.168.248.5 в crb_auth_list. - user_redirect, абонент ещё не заплатил и заблокирован по балансу. Эта команда добавит IP-адрес 192.168.248.5 в crb_negbal_list. Таким образом, сразу после создания абонента, на Mikrotik'е он будет в 2 листах: crb_auth_list и crb_negbal_list. Проверим это командой: <code> ip firewall address-list print where address=192.168.248.5 </code> Ответ: <code> Flags: X - disabled, D - dynamic # LIST ADDRESS CREATION-TIME 0 ;;; 192.168.248.5_crb_auth crb_auth_list 192.168.248.5 oct/04/2018 13:16:11 crb_negbal_list 192.168.248.5 oct/04/2018 13:16:11 </code> В crb_negbal_list абонент находится, так как при добавлении абонента у него нет на счёте достаточно средств для активации услуги, которая стоит 100 рублей. При этом у абонента будет соответствующий статус в биллинге. {{:проект_биллинг5:маркетинг:статьи_и_рассылки:mikrotik_billing:abonent4.png?nolink&794x786}} Для того, чтобы абонент получил доступ в интернет, необходимо добавить ему средств на счёт. Для этого нужно перейти во вкладку "Операции" внутри настроек абонента и выбрать опцию "Приход". {{:проект_биллинг5:маркетинг:статьи_и_рассылки:mikrotik_billing:prihod1.png?nolink&478x214}} После чего добавить сумму, необходимую для активации услуги. В данном случае хватит 100 рублей. {{:проект_биллинг5:маркетинг:статьи_и_рассылки:mikrotik_billing:prihod2.png?nolink&786x464}} После обработки платежа биллинг отправит на Mikrotik команды: - user_redirect_cancel. Эта команда уберет ip адрес абонента из адрес листа crb_negbal_list. - user_rate_set. Этой командой будут добавлены скорости для абонента. Проверим, что абонент находится в правильных адрес листах. Выполним на Mikrotik'е команду: <code> ip firewall address-list print where address=192.168.248.5 </code> В ответ получим следующее: <code> Flags: X - disabled, D - dynamic # LIST ADDRESS CREATION-TIME 0 ;;; 192.168.248.5_crb_auth crb_auth_list 192.168.248.5 oct/04/2018 13:18:16 </code> Как видно из вывода, абонент находится только в одном адрес листе crb_auth_list, соответственно имеет доступ в интернет. Проверить какой шейпер назначен абоненту можно командой: <code> queue simple print where target=192.168.248.5/32 </code> В выводе получим данные по скоростям: <code> Flags: X - disabled, I - invalid, D - dynamic 0 name="crb_192.168.248.5" target=192.168.248.5/32 parent=none packet-marks="" priority=8/8 queue=default-small/default-small limit-at=0/0 max-limit=1024k/1024k burst-limit=0/0 burst-threshold=0/0 burst-time=0s/0s bucket-size=0.1/0.1 </code> Данные совпадают с информацией, которая указана в тарифе, а именно max-limit=1024k/1024k При авторизации по PPPoE изменится только этап авторизации, на котором нужно ввести логин/пароль. Остальная логика останется прежней. Для комфортной и безопасной схемы IPoE лучше настроить DHCP для получения IP-адреса. В данной схеме можно использовать DHCP как на Mikrotik'е, так и на биллинге. Наилучшим решением на наш взгляд использовать DHCP с привязкой по opt82 и использованием на коммутаторах опции DHCP Snooping. Это поможет защитить сеть от подмены ip адресов и обеспечит удобную работу абонентов. В биллинге Carbon Billing 5 выдача адреса с помощью opt82 так же поддерживается и настраивается по статьям: * [[http://docs.carbonsoft.ru/display/CarbonBilling/DHCP|http://docs.carbonsoft.ru/display/CarbonBilling/DHCP]] * [[http://docs.carbonsoft.ru/pages/viewpage.action?pageId=52428856|http://docs.carbonsoft.ru/pages/viewpage.action?pageId=52428856]]
|