... Будем настраивать на примере 2 тарифов со скоростями 4Мбит/с и 8Мбит/с. 10.0.0.1 - биллинг 10.0.0.2 - микротик h1. Шаги настройки Шаг 1 - Вывод абонента в интернет, NAT, маскарадинг, редирект, отрицательный баланс Шаг 2 - Подготовка сервисов, шейперы, ограничение скорости Шаг 3 - Подготовка и проверка управляющих команд, скрипт отправки команд Шаг 4 - Отправка Netflow в биллинг Шаг 5 - Создание НАСа в биллинге Шаг 6 - Создание Тарифа "Тариф Восьмерка" и Услуги "Трафик 8Мбит" Шаг 7 - Создание абонента и учетной записи Шаг 8 - Тестирование и отладка h1. Шаг 1 - Вывод абонента в интернет, NAT, маскарадинг, редирект, отрицательный баланс h4. 1.1 Маскарадинг или NAT абонентов для серой адресации {code} telnet 10.0.0.2 login: admin password: admin # Добавим адрес листы с серыми подсетями, что-бы не натить абонентов с белыми адресами /ip firewall address-list add address=10.0.0.0/8 list=local_net add address=172.16.0.0/12 list=local_net add address=192.168.0.0/16 list=local_net /ip firewall nat # Маскарад абонентов из серых сетей add action=masquerade chain=srcnat src-address-list=local_net dst-address-list=!local_net
|
{code}
|
h4. 1.2 Редирект неавторизованных заблокированных и несуществующих абонентов на специальную страницу.
|
Это крайне важно для современного провайдера, в целях повышения лояльности абонентов и снижения нагрузки на техническую поддержку.
|
Если абонента нет в списке auth редиректим его на noauth страницу личного кабинета для прохождения автоматической или ручной авторизации.
|
Если абонента нет в списке accept_list редиректим его на blocked страницу личного кабинета(где можно сделать кнопку "Диагностика соединения").
|
{code} /ip firewall nat
|
# Всех кого нет в адрес листе(только 80 порт) auth редирестим accept_list редиректим на страницу биллинга noauth blocked после которой на маршрутизатор будут
|
# отправлены события и абонент будет добавлен соответствующие листы(если он есть в базе).
|
# В кабинете пользователя noauth blocked страница расположена на порту 440 по адресу http://10.0.0.1:440
|
add action=dst-nat chain=dstnat comment="noauth_redirect" comment="blocked_redirect" protocol=tcp src-address-list=!auth src-address-list=!accept_list dst-port=80 to-addresses=10.0.0.1 to-ports=440
|
{code} h4. 1.3 Редирект абонентов с отрицательным балансом на специальную страницу.
|
Если абонент в списке negbal_list - то редиректим его на negbal страницу личного кабинета
|
{code} /ip firewall nat # Для всех заблокированных пользователей разрешаем dns запросы(нужно для редиректа при отрицательном балансе)
|
add action=accept chain=dstnat comment=dnat_negbal_dns_accept port=53 protocol=udp src-address-list=negbal_list
|
# Редиректим весь трафик(кроме банков и т.п.) на 80 порт на страницу биллинга, где находится сообщение об отрицательном балансе # В кабинете пользователя negbal страница расположена на порту 442 по адресу http://10.0.0.1:442
|
add action=dst-nat chain=dstnat comment=dnat_negbal_redirect protocol=tcp src-address-list=negbal_list dst-address-list=!trusted_list src-port=80 to-addresses=10.0.0.1 to-ports=442
|
{code}
|
h4. 1.4 Блокировка абонентов с отрицательным балансом и неавторизованных абонентов
|
h4. 1.4 Блокировка абонентов с отрицательным балансом, заблокированных и несуществующих абонентов
|
{code} /ip firewall filter
|
... # Для того, что-бы разорвать существующие tcp/udp и прочии сессии абонента необходимо добавить правила в forward add chain=forward comment=fw_redirect_dns_accept protocol=udp port=53 action=accept
|
add chain=forward comment=fw_redirect_http_accept protocol=tcp port=80 action=accept dst-address=10.0.0.1 # Разрешаем доступ до банков и платежных систем и доверенным сетям
|
add chain=forward comment=fw_trusted_accept src-address-list=auth src-address-list=accept_list action=accept
|
add chain=forward comment=fw_negbal_drop action=drop src-address-list=negbal_list
|
add chain=forward comment=fw_noauth_drop action=drop src-address-list=!auth
|
add chain=forward comment=fw_blocked_drop action=drop src-address-list=!accept_list
|
{code}
|
... h4. 1.5 Разрешить доступ до банков, платежных систем, доверенных сетей и хостов при отрицательном балансе. Рекомендуется настроить автоматическую синхронизацию с биллингом. {code} /ip firewall address-list add list=trusted_list address=217.12.98.163 comment=click.alfabank.ru address-list add list=trusted_list address=91.232.231.67 comment=qiwi.ru address-list add list=trusted_list address=194.54.14.131 comment=online.sberbank.ru address-list add list=trusted_list address=10.0.254.0/24 comment=local_routers {code} h1. Шаг 2 - Подготовка сервисов, шейперы, ограничение скорости В данной схеме используется простейший шейпер, который не требует предварительного создания очередей на микротике. Шейперы создаются и применяются к пользователям динамически, при наступлении события rate_set. h1. Шаг 3 - Подготовка и проверка управляющих команд, скрипт отправки команд h4. 3.1 Подготовка команд для оборудования т.к. ssh и telnet работают медленно и часто теряют команды, в биллинг была включена специальная утилита send_mikrotik_cmd, работающая через API микротика([http://wiki.mikrotik.com/wiki/Manual:API])
|
Вы можете использова и стандартные команды через ssh и telnet.
|
При IP авторизации IPoE схеме будут использованны следуещие события для управления абонентами на оборудовании:
|
* user_accept - Отправить команду на авторизацию пользователя - добавить абонента в адрес-лист auth. * user_drop - Отправить команду на удаление пользователя из списка авторизованных(auth).
|
* user_accept - Отправить команду на разрешение пользователю выхода в интернет - добавить абонента в адрес-лист accept_list. * user_drop - Отправить команду на запрещение пользователю выхода в интернет - удаление пользователя из списка разрешенных accept_list(ВНИМАНИЕ\! Пользователю с отрицательным балансом не запрещаем интернет, а запрещаем только пользователям с полностью заблокированными учетными записями).
|
* user_redirect - Отправить команду на включение переадресации для абонента с отрицательным балансом - добавить абонента в адрес-лист negbal_list.
|
* user_redirect_cancel - Отправить команду на отмену переадресации при пополнении баланса - удалить из адрес-листа negbal_list.
|
* user_rate_set - Отправить команду на установку скорости - добавить абонента в адрес-лист service_$ceil_in.
|
* user_add - Отправляем команду создания виртуальной сессии для некоторых типов оборудования(обычно не используется)
|
* user_del - Отправить команду на полное удаление абонента с оборудования - удалить из всех адрес-листов(обычно не используется).
|
Мы должны подготовить и проверить соответствующие команды в терминале биллинга.
|
... Разберем на примере отправки команды user_accept для пользователя с логином test1 и ip адресом 10.0.0.101 {code} ssh root@10.0.0.1 password:servicemode [root@Carbon ~]# chroot /app/asr_billing/ #Переходим в контейнер биллинга [root@Carbon (asr_billing) /]# send_mikrotik_cmd 10.0.0.2 admin пароль /queue simple add name=10.0.0.100 target=10.0.0.100/32 parent=none priority=8/8 queue=default-small/default-small limit-at=0/0 max-limit=4096K/4096K burst-limit=0/0 burst-threshold=0/0 burst-time=0s/0s [root@Carbon (asr_billing) /]# echo $? 0 #Код возврата 0 означает успешное выполнение команды 0 - успешное завершение 1 - connection closed by remote end(не удалось авторизоваться) 2 - не верное количество аргументов(меньше 4) 254 - не удалось отправить команду(не доступен сервер или не правильная команда)(<class 'socket.error'> [Errno 113] No route to host) 254 - специальный код, при котором отправка команды будет отложена. {code} Аналогичным образом необходимо проверить работу всех команд и проверить, что после их выполнения у абонента есть доступ в интернет, и работает переадресация. Только после того, как все команды отлажены, приступаем к настройке биллинга. h4. 3.2 Создание скрипта событий Имя скрипта событий указывается в настройках наса в поле "имя скрипта событий" в веб интерфейсе биллинга. После первого же события скрипт автоматически создастся из примера, или его можно создать руками командой cp /app/asr_billing//usr/local/share/nas_event_daemon/default.sh.tmplt /app/asr_billing/var/lib/event/mikrotik.sh В новом файле mikrotik.sh необходимо прописать минимальный набор команд. {code} #Не забудьте в скрипте указать правильные логин и пароль от микротика telnet_user="user" telnet_password="password" ceil_out=${ceil_out:-$ceil_in}
|
user_accept(){
|
send_mikrotik_cmd $nas_ip admin $coa_psw /ip firewall address-list add list=auth list=accept_list address=$ip comment=${ip}_auth comment=${ip}_accept
|
} user_drop(){
|
send_mikrotik_cmd $nas_ip admin $coa_psw /ip firewall address-list remove numbers=${ip}_auth numbers=${ip}_accept
|
} user_redirect(){
|
send_mikrotik_cmd $nas_ip admin $coa_psw /ip firewall address-list add list=negbal_list address=$ip comment=${ip}_negbal
|
} user_redirect_cancel(){
|
... send_mikrotik_cmd $nas_ip admin $coa_psw /ip firewall address-list remove numbers=${ip}_negbal } user_rate_set(){ # Сначала удалим из старого сервиса, потом добавим в новый send_mikrotik_cmd $nas_ip admin $coa_psw /queue simple remove numbers=${ip} send_mikrotik_cmd $nas_ip admin $coa_psw /queue simple add name=${ip} target=${ip}/32 parent=none priority=8/8 queue=default-small/default-small limit-at=0/0 max-limit=${ceil_in}K/${ceil_out}K burst-limit=0/0 burst-threshold=0/0 burst-time=0s/0s }
|
user_del(){ send_mikrotik_cmd $nas_ip admin $coa_psw /ip firewall address-list remove numbers=${ip}_negbal
|
send_mikrotik_cmd $nas_ip admin $coa_psw /ip firewall address-list remove numbers=${ip}_auth numbers=${ip}_accept
|
send_mikrotik_cmd $nas_ip admin $coa_psw /queue simple remove numbers=${ip} }
|
... {code} Примечание: Пример скрипта событий находится во вложении к этой странице h1. Шаг 4 - Отправка Netflow в биллинг Для учета трафика требуется включить отправку нетфлоу в бтллинг {code} /ip traffic-flow set active-flow-timeout=3m cache-entries=32k enabled=yes inactive-flow-timeout=30s /ip traffic-flow target add address=10.0.0.1:9996 version=9 {code} h1. Шаг 5 - Создание НАСа в биллинге * Укажите ip адрес маршрутизатора * Выберите тип наса "Mikrotik + IP" * Укажите имя скрипта событий "mikrotik.sh"
|
!nas.png|border=1!
|
|
h1. Шаг 6 - Создание Тарифа "Тариф Восьмерка" и Услуги "Трафик 8Мбит"
|
... Тариф - это набор базовых услуг при заключении договора, в него включены услуги трафика, телефонии и телевидения. Создадим тариф только с одной включенной услугой - трафик. со скоростью 8Мбит !tarif1.png|border=1!
|
!tarif2.png|border=1!
|
|
h1. Шаг 7 - Создание абонента и учетной записи
|
... !abon1.png|border=1! !abon2.png|border=1! * Укажите тпи авторизации "по ip" * Назначьте абоненту Пул Адресов, после этого будет предложено выдать адрес из пула * Выберете NAS/BRAS "Mikrotik" !abon3.png|border=1! !abon4.png|border=1! После создания абоента для него будет автоматически создана учетная запись и уйдут события добавления абонента на оборудование. h1. Шаг 8 - Тестирование и отладка Тестирование схемы включает в себя следующие действия: * создание абонента * подключение абонентов * отключение абонентов при добровольной(из личного абинета абонента) и ручной(из интерфейса биллинга) блокировках * отключение/переадресация абонентов при превышении лимита * подключение абонентов при приходе оплаты * редактирование пользователя, смена лимита или логина или ip * изменение скорости при смене тарифа * удаление абонента События, уходящие из биллинга на оборудование можно смотреть в лог-файле командой {code} tail -f /app/asr_billing/var/log/nas_event_daemon/microtik.sh_10.0.0.2.log {code} \++++++++++++++++++++++\+ h2. Внимание\! Все предоставленные примеры не обязательно являются рабочими, использовать их для настройки своего оборудования без понимания принципа действия не рекомендуется. Примеры предоставлены исключительно для понимания принципов работы Carbon Billing с сторонним оборудованием. Также, оборудование нельзя считать запущенным в эксплуатацию, если не все пункты [плана внедрения|http://asrdoc.ideco.ru/pages/viewpage.action?pageId=29033016] завершены успешно. h2. Настройка оборудования В данном примере используется простейший шейпер, который не требует предварительного создания очередей на микротике. Шейперы создаются и применяются к пользователям динамически, при наступлении события rate_set. Таким образом на микротике необходимо лишь создать адрес-листы: * balance_positive - лист для nat и разрешения выхода в Интернет * balance_negative - лист для переадресации пользователей с отрицательным балансом. Если нужны разные группы пользователей, то можно создать разные адрес листы, и использовать составные листы, например: {code} balance_positive${tariff_id} balance_positive${pull_id} {code} Внимание\! Для применения иных шейперов требуется все шейперы предварительно настроить вручную по [инструкции микротика|http://wiki.mikrotik.com/wiki/Russian/%D0%94%D0%B5%D0%BB%D0%B8%D0%BC_%D0%98%D0%BD%D1%82%D0%B5%D1%80%D0%BD%D0%B5%D1%82_%D0%B8%D0%BB%D0%B8_QoS_%D0%BD%D0%B0_Mikrotik], а также исправить блок rate_set в event_inc.sh на требуемые для микротика команды. Рекомендуется склеивать команды микротика в одну через знак ' ; ' вместо нескольких последовательных ssh тк ssh долго подключается к микротику. Не рекомендуется использовать более 300-500 пользователей на 1 микротик. h2. Настройка Carbon Billing (event_inc.sh) В этом скрипте команды на микротик пересылаются с помощью ssh, а не с помощью radius. {code} LOG INFO "$SENDER $EVENT $DATA" [ "$nas_ip" = "0.0.0.0" ] && exit { case "$EVENT" in login | balance_negative | balance_positive | user_data_changed | user_data_changed_before ) ssh username@$nas_ip "/ip firewall address-list remove [find address=$ip]" if [ "$over_limit" = "0" ]; then ssh username@$nas_ip "/ip firewall address-list add address=$ip list=balance_positive" else ssh username@$nas_ip "/ip firewall address-list add address=$ip list=balance_negative" fi ;; rate_set ) if [ "$ceil_out" != "-1" ]; then ssh username@$nas_ip /queue simple remove [find name=$id] ssh username@$nas_ip /queue simple add name=$id target-addresses=$ip max-limit=${ceil_in}k/${ceil_out}k interface=vlan$router_vlan fi ;; logout ) ssh username@$nas_ip "/ip firewall address-list remove [find address=$ip]" ssh username@$nas_ip /queue simple remove [find name=$id] ;; period_closed ) LOG INFO "event type: $EVENT $DATA" ;; * ) LOG INFO "event type: $EVENT $DATA" ;; esac } {code} h2. Настройка тарифов Тарифы настраиваются стандартно, т.к radius параметры при данной схеме не используются, а $ceil_in и $ceil_out передаются микротику по SSH каждый раз при возникновении события rate_set. h2. Настройка пользователей Так как микротик не использует Radius, то для пользователей, которые получают доступ в интернет через него необходимо вручную переопределить IP NAS сервера, автоматически этого не произойдет. !99.png|border=1! h2. Добавление в список маршрутизаторов h2. !Снимок-Настройка оборудования.png|border=1!
|