Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

Как это работает


При положительном депозите поднимается Online сессия у абонента, открываются доступы на Mikrotik (адрес попадает в Address-List CLIENTS_[Номер тарифного плана]), также может подниматься правило шейпера Simple Queue (Если включена опция $conf{MIKROTIK_QUEUES}=1;). Для включения и выключения сессий используются правила $conf{INTERNET_IPOE_START} и $conf{INTERNET_IPOE_STOP}. Для масового включения абонентов используется команда /usr/abills/libexec/periodic monthly MODULES=Internet LOGON_ACTIVE_USERS=1


При отрицательном депозите или отключении клиента адрес удаляется с Address-List. Проверкой сессий и отключением должников занимается  программа billd


Авторизация по SSH ключу

Для выполнения команд нужно создать SSH сертификат с пустым паролем и залить его на Mikrotik по ftp.

Перед созданием сертификата убедитесь что на Mikrotik'е включён сервис ftp, ssh.


Загружаем ключи и сертификаты :

Code Block
languagebash
# shell
MIKROTIK_USERNAME='логин_для_микротика'
MIKROTIK_IP='айпи_адрес_микротика'
/usr/abills/misc/certs_create.sh ssh abills_admin -UPLOAD_FTP ${MIKROTIK_USERNAME}@${MIKROTIK_IP}
# спросит пароль, загрузит ключи

На Микротике создаем пользователя и подключаем ему наш сгенерированный ключ :

Code Block
languagebash
[admin@mikrotik]> user add name=abills_admin group=write
[admin@mikrotik]> user ssh-keys import public-key-file=id_rsa.abills_admin.pub user=abills_admin

Проверяем с биллинг сервера правильно ли мы все сделали (в консоль должно вывести name: MikroTik) :

Code Block
languagebash
ssh -l abills_admin  -i /usr/abills/Certs/id_rsa.abills_admin ${MIKROTIK_IP} "/system identity print"


Самостоятельная активация сессии IPN абонентом

Добавить правила для перенаправления на клиентский кабинет для подключения к IPN :

Code Block
languagebash
/ip firewall nat add chain=dstnat action=dst-nat to-addresses=10.0.0.10 to-ports=80 protocol=tcp
 src-address=192.168.6.0/24 dst-address=0.0.0.0/0 dst-port=80

to-addresses=10.0.0.10 - адрес биллинг сервера

Инициализация и контроль правил шейпера

Code Block
languagebash
/usr/abills/libexec/billd checkspeed mikrotik RECONFIGURE=1 NAS_IDS=1 

Параметры для скрипта :

КлючЗначение
NAT=1Поднять маскарадинг для всех адрес листов
SKIP_NAT_IPS=xxx.xxx.xxx.xxxНе маскарадить обращения к адресу
NAS_IDS=1Номер сервера доступа


Пример правила открытия доступа (тип сервера - mikrotik_dhcp)

При помощи этих правил система открывает или закрывает (в зависимости от ситуации) доступ в интернет абонентам.

Данные коменды ($conf{INTERNET_IPOE_START}, $conf{INTERNET_IPOE_STOP}) логинятся на mikrotik и включают разрешающие или запрещающие правила шейпера

Warning

Сертификат SSH (/usr/abills/Certs/id_rsa.abills_admin) должен быть доступен пользователю под которым работает веб сервер


Info

в сервисе абонета должна быть включена опция  IPoE / DHCP Option 82 → Активация IPoE


abills/libexec/config.pl

Code Block
languagebash
$conf{MIKROTIK_API}=1; #Работа через API
$conf{INTERNET_IPOE_NAS_TYPES}='mikrotik_dhcp'; # Включение mikrotik DHCP в присок IPOE серверов 

$conf{INTERNET_IPOE_START}='SUDO=/usr/local/bin/sudo;
CMD="${SUDO} /usr/abills/libexec/linkupdown ipn up getif %LOGIN %IP %DEBUG > /dev/null 2>&1";
if [ "${NAS_TYPE}" = "mikrotik_dhcp" ]; then CMD="/usr/abills/libexec/linkupdown mikrotik up - %LOGIN %IP NAS_HOST=${NAS_MNG_IP_PORT} NAS_MNG_USER=${NAS_MNG_USER} NAS_MNG_PASSWORD=${NAS_MNG_PASSWORD}";
elif [ "${NAS_MNG_IP_PORT}" != "" ]; then CMD="/usr/bin/ssh -o StrictHostKeyChecking=no -i /usr/abills/Certs/id_rsa.${NAS_MNG_USER} ${NAS_MNG_USER}@${NAS_MNG_IP_PORT} \"${CMD}\""; fi;
eval "${CMD}"';

$conf{INTERNET_IPOE_STOP}='SUDO=/usr/local/bin/sudo;
CMD="${SUDO} /usr/abills/libexec/linkupdown ipn down getif %LOGIN %IP %DEBUG > /dev/null 2>&1";
if [ "${NAS_TYPE}" = "mikrotik_dhcp" ]; then CMD="/usr/abills/libexec/linkupdown mikrotik down - %LOGIN %IP NAS_HOST=${NAS_MNG_IP_PORT} NAS_MNG_USER=${NAS_MNG_USER} NAS_MNG_PASSWORD=${NAS_MNG_PASSWORD}";
elif [ "${NAS_MNG_IP_PORT}" != "" ]; then CMD="/usr/bin/ssh -o StrictHostKeyChecking=no -i /usr/abills/Certs/id_rsa.${NAS_MNG_USER} ${NAS_MNG_USER}@${NAS_MNG_IP_PORT} \"${CMD}\""; fi;
eval "${CMD}"';


Подсчет трафика

Необходимо установить и настроить пакет flow-tools по инструкции :  Установка flow-tools

Вносим в /etc/crontab

Code Block
languagebash
*/5 * * * * root /usr/abills/libexec/traffic2sql 2 flowdir=/usr/abills/var/log/ipn/


Настройка Mikrotik для подсчета трафика

Нам нужно настроить Микротик чтоб он слушал и отправлял flow пакеты на биллинг сервер для их последующей обработки с помощью колектора (flow-tools).

В консоли Микротика :

Code Block
languagebash
/ip traffic-flow set enabled=yes
/ip traffic-flow target add dst-address=10.0.0.10 port=9996 version=5
/ip traffic-flow set interfaces=ether3 active-flow-timeout=30m inactive-flow-timeout=15s cache-entries=4k enabled=yes ;

в данном случае нам интересны 2 параметра :

ether3интерфейс на котором слушать
10.0.0.10адрес сервера обработки flow пакетов (Сервер биллинга)


Включение активных пользователей

Данная команда автоматически включает всех пользователей с положительным депозитом или правами получать сервис.

Активируются только те пользователи у которых прописан IP адрес сервиса Internet. Также обязательно на IPN серверах доступа

прописать пулы адресов для таких пользователей чтобы система знала на каких серверах доступа активировать абонентов.

Code Block
languagebash
/usr/abills/libexec/periodic monthly MODULES=Internet LOGON_ACTIVE_USERS=1

Параметры скрипта :

ПараметрЗначение
NAS_IDS=1,2Идентификаторы серверов доступа. По умолчанию система переинициализирует пользователей на всех серверах доступа с типом 'ipcad, ipn, mikrotik_dhcp, dhcp'
TP_ID=3,6Номера тарифных планов для активации. По умолчанию все
LOGIN=test,test3Логины пользователей. По умолчанию все
GID=1Группы пользователей
DEBUG=…

Дебаг режимы

1-4 Детализация процесса

5 - Отображать команды на выполнение

6 - Отображать команды но не выполнять


Контроль активных соединений

Контролем активных соединений и отключением абонентов с негативным депозитом занимается программа billd

Активация гостевых сессий


Иногда бывают ситуации когда нужно контролировать и видеть гостевые сессии для этого нужно в параметр фильтр добавить включение гостевых сессий

Фильтр включается только если система передает параметры фильтра и активирует сессию в гостевом режиме


Code Block
titleАктивациия гостевых сессий
$conf{INTERNET_IPOE_FILTER}='if [ "%FILTER_ID" != "" ] ; then CMD="/usr/abills/libexec/linkupdown mikrotik guest - %LOGIN %IP NAS_HOST=${NAS_MNG_IP_PORT} NAS_MNG_USER=${NAS_MNG_USER}"; eval "${CMD}" >> /tmp/ipoe; fi;';