С проблемой построения систем учета трафика сталкивается практически каждый суб-провайдер. Если у вышестоящих провайдеров уже обычно работают профессионалы, знающие, что должны получить в результате и умеющие правильно спроектировать и настроить систему учета трафика, то суб-провайдеры обычно ограничены как в средствах, так и не обладают достаточными знаниями для создания функциональных и защищенных систем. К тому же покупка серьезного оборудования обычно не входит в их планы и вместо оборудования 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 |
Вместо USERNAME необходимо вписать любое имя пользователя, а вместо UTM_IP_ADDRESS IP адрес нашего сервера с UTM.
И разрешим forward только списку разрешенных адресов. Когда вы увидите, как это всё вместе работает, возможно, у вас возникнут другие предложения по реализации отключением пользователей и вы их сможете достаточно легко реализовать.
/ip firewall filter add chain=forward action=accept dst-address-list=allow_ip |
С настройкой сервера доступа на этом покончено. При использовании графической утилиты 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 |
Сейчас создадим файл /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 |
Где LOGIN_UTM и PASSWORD_UTM соответственно имя и пароль для доступа на сервер UTM. В нашем случае это init/init, однако их настоятельно рекомендуется сменить после того, как всё заработает и вы разберетесь как это правильно сделать.
Запомните ID, который система присвоила записи и переедите в Настройки->Правила Firewall. Опять же удалите все предустановленные записи и нажмите на кнопку Добавить.
Сейчас укажем какие команды должны поступать на Mikrotik в случае, если клиенту нужно разрешить доступ в Интернет и когда нужно запретить.
Все пользователи - + |
На этом настройку связки можно считать законченной. Mikrotik будет полностью "повиноваться" биллингу и остаётся дело только за настройкой временных интервалов, классов трафика и тарифных планов.