Настраиваем бюджетный биллинг: UTM+Mikrotik

UTMС проблемой построения систем учета трафика сталкивается практически каждый суб-провайдер. Если у вышестоящих провайдеров уже обычно работают профессионалы, знающие, что должны получить в результате и умеющие правильно спроектировать и настроить систему учета трафика, то суб-провайдеры обычно ограничены как в средствах, так и не обладают достаточными знаниями для создания функциональных и защищенных систем. К тому же покупка серьезного оборудования обычно не входит в их планы и вместо оборудования Cisco, Juniper или аналогичного, часто приходится использовать завалявшееся железо. К минусам такого подхода относится то, что зачастую оно обычно нестабильно и может выйти из строя.

Займёмся NAS-ами

Предположим, что у нас уже есть 1-2 платформы или обычных компьютера с установленной RouterOS Mikrotik версии после 2.9.14. Такое условие обусловлено наличием ошибок в реализации протокола Radius в ранних версиях этой операционной системы. В идеальном случае, конечно, лучше всего использовать последнюю доступную лицензионную версию Mikrotik, однако если жажда приключений вас не покидает, постарайтесь всё-таки использовать любую условно-бесплатную стабильную версию.

Настройка серверов доступа будет заключаться в выполнении трёх действий: настройке его авторизации на биллинге, настройке экспорта информации о сетевой статистике посредством NetFlow и настройке доступа модуля биллинга для управления Firewall на Mikrotik. Если первые два шага вполне понятны, то третий нужно объяснить.

Биллинг UTM не предусматривает каких-либо встроенных средств для работы с удалённым Firewall серверов доступа, отличных от Cisco. Вместо этого в нём реализован механизм, позволяющий нам самим управлять поведением системы в зависимости от поступления определённых команд или наступления определённых условий. К примеру, при создании нового аккаунта клиента Firewall системы создаст на сервере доступа правило, разрешающее этому клиенту выход в Интернет. При необходимости блокировки доступа наш скрипт пошлёт нужные команды на Mikrotik, запрещающие клиенту работать.

Сначала настроим взаимодействие Mikrotik с Radius-сервером.

/radius add address=10.20.3.250 secret=radsecret

И отключим возможность управлять состоянием Radius-сервера, так как все манипуляции по отключению пользователей мы будем производить средствами Firewall.

/radius incoming set accept=no

Настройка RADIUS на Mikrotik

Теперь перейдём к настройке протокола NetFlow, который в Mikrotik назван TrafficFlow.

/ip traffic-flow target add address=10.20.3.250 version=5

/ip traffic-flow set enabled=yes cache-entries=4k active-flow-timeout=00:01:00 inactive-flow-timeout=00:00:05 interfaces=all

Настройка NetFlow на Mikrotik

В первом правиле мы указали на какой адрес нужно отсылать всю статистику и в каком формате. Во втором правиле разрешили собирать статистику на всех интерфейсах с группировкой экспортируемых данных по 4 Кбайта. Сбор статистики по NetFlow работает следующим образом. Перед отправкой данных ядру биллинга система пытается сгруппировать статистику и делает это по следующему алгоритму: когда пользовать устанавливает постоянное подключение к удаленному серверу и начинает перекачивать данные, то наш сервер по прошествии active-flow-timeout циклически сбрасывает накопленную статистику на биллинг, и в случае, если через открытое активное подключение в течение времени inactive-flow-timeout не поступает новых данных, информация о нём посылается биллингу.

Сейчас приступим к настройке взаимодействия биллинга и Firewall нашего Mikrotik. Схема его работы достаточно проста - управление разрешением пользователей будет производиться с помощью редактирования src-list адресов клиентов в Firewall. Доступ к нашему NAS для этих операций будет осуществляться средствами ssh. Для простоты взаимодействия мы добавим пользователя без пароля, которому разрешен вход только с одного определенного IP-адреса.

/user group add name=ssh policy ssh,write
/user add name=USERNAME group=ssh address=UTM_IP_ADDRESS

Вместо USERNAME необходимо вписать любое имя пользователя, а вместо UTM_IP_ADDRESS IP адрес нашего сервера с UTM.

И разрешим forward только списку разрешенных адресов. Когда вы увидите, как это всё вместе работает, возможно, у вас возникнут другие предложения по реализации отключением пользователей и вы их сможете достаточно легко реализовать.

/ip firewall filter add chain=forward action=accept dst-address-list=allow_ip
/ip firewall filter add chain=forward action=accept src-address-list=allow_ip
/ip firewall filter add chain=forward action=drop

С настройкой сервера доступа на этом покончено. При использовании графической утилиты Winbox у вас уйдёт на это буквально несколько минут. 

Установка UTM5

К сожалению, разработчики UTM по какой-то причине не работают с  распространёнными дистрибутивами, отличными от RedHat/SuSe, поэтому для установки пакета rpm в системе debian нам потребуется установить утилиту alien или рассовать файлы по системе вручную, чего мы делать не будем.

utm:/etc/init.d# apt-get install alien

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

utm:/etc/init.d# apt-get install ssh mysql-server-5.0 proftpd mc apache2 libssl0.9.7 libstdc++5

Сейчас скопируем  пакет utm на машину с debian. Для этого воспользуемся любым FTP-клиентом. Не забудьте скопировать файл с регистрационной информацией, если он у вас есть.

Воспользуемся утилитой alien, чтобы установить utm-5.2.1-001.i386.rpm

utm:/etc/init.d# alien utm-5.2.1-001.i386.rpm

В результате чего мы получим пакет utm-5.2.1-001.i386.deb, установить который можно одной командой

utm:/etc/init.d# dpkg -i utm-5.2.1-001.i386.deb

Сейчас создадим базу данных.

utm:/etc/init.d# mysqladmin create UTM5;

И создадим в нём нужные таблицы

utm:/etc/init.d# mysql -u root UTM5</netup/utm5/UTM5_MYSQL.sql

Если вы планируете использовать базу данных PostgreSQL, то вам потребуется файл  UTM5_PG.sql, который можно найти в директории с программой. Также нужно изменить путь к сокету mysql в файле /netup/utm/utm5.cfg:

database_sock_path=/var/run/mysqld/mysqld.sock

При желании вы можете изменить и другие параметры: имя пользователя для доступа к базе данных, тип используемой базы данных и некоторые другие, отвечающие за поведение биллинга.

Немного отредактируем стартовые скрипты utm5_core, utm5_radius и utm5_rfw., но сначала скопируем из каталога  /etc/rc.d/init.d/ файлы utm5_core, utm5_radius и utm5_rfw в каталог /etc/init.d/. Меняем содержимое строки  в файле utm5_core c

utm_exec=safe_utm5_core

на

utm_exec=utm5_core

в utm5_radius c

utm_exec=safe_utm5_radius

на

utm_exec=utm5_radius

и в utm5_rfw c

utm_exec=safe_utm5_rfw

на

utm_exec=utm5_rfw

Сейчас настроим автозапуск скриптов при старте системы

utm:/etc/init.d# update-rc.d utm5_core defaults

utm:/etc/init.d# update-rc.d utm5_radius defaults

utm:/etc/init.d# update-rc.d utm5_rfw defaults

При запуске каждой из команд вы увидите нечто вроде этого

Adding system startup for /etc/init.d/utm5_core ...

   /etc/rc0.d/K20utm5_core -> ../init.d/utm5_core

   /etc/rc1.d/K20utm5_core -> ../init.d/utm5_core

   /etc/rc6.d/K20utm5_core -> ../init.d/utm5_core

   /etc/rc2.d/S20utm5_core -> ../init.d/utm5_core

   /etc/rc3.d/S20utm5_core -> ../init.d/utm5_core

   /etc/rc4.d/S20utm5_core -> ../init.d/utm5_core

   /etc/rc5.d/S20utm5_core -> ../init.d/utm5_core

Нужно не забыть создать несколько файлов и папок, так как при конвертации пакета .rpm в .deb все установочные скрипты потерялись и нам придётся возложить на себя их работу

utm:/etc/init.d# mkdir /netup/utm5/log/

utm:/etc/init.d# touch /netup/utm5/log/utm5_radius.log

utm:/etc/init.d# mkdir /netup/utm5/db/

Всё остальное система создаст сама. Нам осталось только зарегистрировать UTM5, а делается это следующим образом: разработчики не стали себя утруждать какими-либо удобными механизмами и вместе с самим биллингом поставляют файл с SQL-запросом, который нужно импортировать в нашу базу данных.

utm:/etc/init.d# mysql -u root UTM5</home/utm5/utm_reg.sql

 Если всё прошло без заминки, то можно запускать биллинг и приступать к его настройке.

utm:/etc/init.d#/etc/init.d/utm5_core

utm:/etc/init.d#/etc/init.d/utm5_radius

utm:/etc/init.d#/etc/init.d/utm5_rfw

utm:/etc/init.d# ps aux | grep utm5

root      4613  0.2  4.8  85368  9268 pts/2    Sl   14:49   0:00 /netup/utm5/bin/utm5_core start

root      4629  0.5  1.0  32340  2100 pts/2    Sl   14:52   0:00 /netup/utm5/bin/utm5_radius start

root      4638  0.5  1.0  12392  2016 pts/2    Sl   14:52   0:00 /netup/utm5/bin/utm5_rfw start

Не забудьте взглянуть в файлы, размещенные в /netup/utm5/log/ на предмет ошибок.

Запуск консоли управления и настройка на работу с NAS

UTM5 конфигурируется с помощью специальной утилиты utm_admin, написанной на Java, поэтому перед её запуском вам потребуется установить виртуальную машину. После запуска (javaw UTM_admin.jar) утилита выглядит следующим образом

Утилита UtmAdmin

Имя и пароль вы можете подсмотреть в файле UTM5_MYSQL.sql. В нашем случае это init/init.

Главное окно UtmAdmin

Первое, что сейчас нужно сделать, - это настроить UTM на работу с нашим NAS, то есть добавить его в список разрешенных. Это делается следующим образом: Настройки-> Список NAS ->Добавить. В поле NAS ID пишем IP-адрес нашего NAS. В поле Auth Secret то, что мы указали в настройке Radius на Mikrotik. У нас это radsecret. Теперь настроим UTM, чтобы он мог управлять Firewall на сервере доступа.

Внесем изменения в файл /netup/utm5/rfw.cfg

firewall_type=local
firewall_path=/usr/local/bin/mikrotik_rfw.sh
rfw_name=127.0.0.1
core_host=127.0.0.1
core_port=11758
rfw_login=init
rfw_password=init
log_level=3
log_file_main=/netup/utm5/log/rfw_main.log
log_file_debug=/netup/utm5/log/rfw_debug.log
log_file_critical=/netup/utm5/log/rfw_critical.log

Сейчас создадим файл /usr/local/bin/mikrotik_rfw.sh и внесем в него следующее содержимое: 

utm:/etc/init.d#mcedit /usr/local/bin/mikrotik_rfw.sh:

#!/bin/sh

ssh USERNAME @ UTM_IP_ADDRESS "$*"

Где USERNAME и UTM_IP_ADDRESS - параметры, указанные в шаге конфигурирования сервера доступа. Сделаем этот файл исполняемым:

utm:/etc/init.d#chmod +x /usr/local/bin/mikrotik_rfw.sh

И обязательно запустим его в первый раз сами, для того, чтобы сохранился сертификат:

utm:/etc/init.d#sh /usr/local/bin/mikrotik_rfw.sh

У вас должно спросить разрешение на подключение, на что ответьте утвердительно. Вернёмся в utm_admin и внесем ещё несколько изменений в конфигурацию. Зайдите в Настройки -> Список брандмауэров, удалите оттуда все записи. нажмите на кнопку Добавить.

Тип - Local

Имя - 127.0.0.1
IP-адрес - 127.0.0.1
Логин - LOGIN_UTM
Пароль - PASSWORD_UTM
Комментарии - NAS Mikrotik

Где LOGIN_UTM и PASSWORD_UTM соответственно имя и пароль для доступа на сервер UTM. В нашем случае это init/init, однако их настоятельно рекомендуется сменить после того, как всё заработает и вы разберетесь как это правильно сделать.

Запомните ID, который система присвоила записи и переедите в Настройки->Правила Firewall. Опять же удалите все предустановленные записи и нажмите на кнопку Добавить.

Сейчас укажем какие команды должны поступать на Mikrotik в случае, если клиенту нужно разрешить доступ в Интернет и когда нужно запретить.

Все пользователи - +
ID пользователя - 0
ID группы - 0
ID тарифа - 0
Включение - /ip firewall address-list add address=UIP list=allow_ip comment=UID
Выключение - /ip firewall address-list remove UID
ID брандмауэра - ID записи из предыдущего шага

На этом настройку связки можно считать законченной. Mikrotik будет полностью "повиноваться" биллингу и остаётся дело только за настройкой временных интервалов, классов трафика и тарифных планов.

Содержание Далее
Одной страницей
Назад
Стр. 1. Что такое биллинг
Стр. 2. Аппаратная платформа
Стр. 3. Производительность. Тесты производительности
Стр. 4. Займёмся NAS-ами. Установка UTM5
Стр. 5. Классы трафика. Услуги. Заключение
Комментарии
Добавить комментарий

Введите имя:
Войти от:
или
Ваш комментарий:


Введите код:

E-mail (не обязательно)
Адрес электронной почты не предназначен к показу и будет использован только для уведомлений об ответах



Смартфоны со съемными аккумуляторами 2018-2019 годов
14 смартфонов со съемным аккумулятором и один телефон
15 июля 2019 / 3
Смартфон с каплевидным вырезом - Samsung Galaxy A30
Недорогой современный смартфон без моноброви
22 апреля 2019 / 3
Android 10. Первый взгляд
Что будет в «юбилейной» ОС Google, которая выйдет в 2019 года
29 июля 2018 / 1
Смартфон Huawei с хорошей камерой - Huawei P20
Эффектный флагман со своим лицом
22 июля 2018 / 4
 
 
Анонс Windows 11 состоится 24 июня
Продажи iPhone 12 mini не оправдали ожидания
Будущий iPad Pro получит стеклянный корпус
Sun Valley может выйти уже осенью 2021 года
Samsung приступила к лицензированию Ultra Thin Glass (UTG)
Компания фокусируется на бытовой технике и электромобилях
 
 

Опрос

Какими картами вы пользуетесь?
или оставить собственный вариант в комментариях (14)





Статистика