|
Ключ
Эта строка удалена.
Это слово было удалено. Это слово было добавлено.
Эта строка добавлена.
|
Изменения (29)
просмотр истории страницы| Интеграция заключается в следующих шагах: # Настройка сервисов / политик / профилей / access list на оборудовании # Настройка скрипта event_inc.sh на Ideco ACP для пересылки нужных команд # Создание и настройка RADIUS-атрибутов в тарифах для пользователей |
| Будем настраивать на примере 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 Редирект заблокированных и несуществующих абонентов на специальную страницу. Это крайне важно для современного провайдера, в целях повышения лояльности абонентов и снижения нагрузки на техническую поддержку. Если абонента нет в списке accept_list редиректим его на blocked страницу личного кабинета(где можно сделать кнопку "Диагностика соединения"). {code} /ip firewall nat # Всех кого нет в адрес листе(только 80 порт) accept_list редиректим на страницу биллинга blocked после которой на маршрутизатор будут # отправлены события и абонент будет добавлен соответствующие листы(если он есть в базе). # В кабинете пользователя blocked страница расположена на порту 440 по адресу http://10.0.0.1:440 add action=dst-nat chain=dstnat comment="blocked_redirect" protocol=tcp 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 Блокировка абонентов с отрицательным балансом, заблокированных и несуществующих абонентов {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=accept_list action=accept add chain=forward comment=fw_negbal_drop action=drop src-address-list=negbal_list 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. При IPoE схеме будут использованны следуещие события для управления абонентами на оборудовании: * 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=accept_list address=$ip comment=${ip}_accept } user_drop(){ send_mikrotik_cmd $nas_ip admin $coa_psw /ip firewall address-list remove 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}_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. Внимание\! Все предоставленные примеры не обязательно являются рабочими, использовать их для настройки своего оборудования без понимания принципа действия не рекомендуется. |
| Примеры предоставлены исключительно для понимания принципов работы Ideco ACP Carbon Billing с сторонним оборудованием. |
| |
| Также, оборудование нельзя считать запущенным в эксплуатацию, если не все пункты [плана внедрения|http://asrdoc.ideco.ru/pages/viewpage.action?pageId=29033016] завершены успешно. |
| h2. Настройка оборудования |
... |
| Шейперы создаются и применяются к пользователям динамически, при наступлении события rate_set. |
| Таким образом на микротике необходимо лишь создать адрес-листы, balance_positive - лист для nat и разрешения выхода в Интернет адрес-листы: |
| |
| balance_negative - лист для переадресации пользователей с отрицательным балансомЕсли нужны разные группы пользователей, то можно создать разные адрес листы, и использовать составные листы например |
| * balance_positive - лист для nat и разрешения выхода в Интернет * balance_negative - лист для переадресации пользователей с отрицательным балансом. |
| |
| Если нужны разные группы пользователей, то можно создать разные адрес листы, и использовать составные листы, например: |
| {code} |
| balance_positive${tariff_id} или balance_positive${pull_id} и тп. |
| 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 долго подключается к микротику. |
... |
| |
| h2. Настройка АСР (event_inc.sh) |
| h2. Настройка Carbon Billing (event_inc.sh) |
| В этом скрипте команды на микротик пересылаются с помощью ssh, а не с помощью radius. |
... |
| { case "$EVENT" in |
| login|balance_negative|balance_positive|user_data_changed|user_data_changed_before) 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 remove [find address=$ip]" |
| ssh username@$nas_ip "/ip firewall address-list add address=$ip list=balance_positive" else |
| ssh username@$nas_ip "/ip firewall address-list remove [find address=$ip]" |
| ssh username@$nas_ip "/ip firewall address-list add address=$ip list=balance_negative" fi ;; |
| |
| "rate_set") rate_set ) |
| if [ "$ceil_out" != "-1" ]; then ssh username@$nas_ip /queue simple remove [find name=$id] |
... |
| fi ;; |
| |
| "logout") 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") period_closed ) |
| LOG INFO "event type: $EVENT $DATA" ;; |
| |
| * ) |
| : LOG INFO "event type: $EVENT $DATA" |
| ;; esac |
... |
| h2. Настройка тарифов |
| Тарифы настраиваются стандартно, тк radius параметры при данной схеме не используются. |
| Тарифы настраиваются стандартно, т.к radius параметры при данной схеме не используются, а $ceil_in и $ceil_out передаются микротику по SSH каждый раз при возникновении события rate_set. h2. Настройка пользователей Так как микротик не использует Radius, то для пользователей, которые получают доступ в интернет через него необходимо вручную переопределить IP NAS сервера, автоматически этого не произойдет. !99.png|border=1! h2. Добавление в список маршрутизаторов h2. !Снимок-Настройка оборудования.png|border=1! |
