Mikrotik IPN

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

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

/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

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

# /usr/abills/libexec/billd checkspeed mikrotik RECONFIGURE=1 NAS_IDS=1 

Дополнительные параметры

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

config.pl

  1. Пример правила открытия доступа для модуля Ipn

abills/libexec/config.pl Для типа сервера - mikrotik-dhcp:

$conf{IPN_FW_START_RULE}='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}";
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{IPN_FW_STOP_RULE}='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}";
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}"';

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

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

Устанавливаем пакет flow-tools

Вносим в /etc/crontab

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

подробно о IPN

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

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

Через консоль

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

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

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

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

# /usr/abills/libexec/periodic monthly MODULES=Ipn LOGON_ACTIVE_USERS

Параметры:

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

config.pl

$conf{IPN_DHCP_ACTIVE}=1; Включать сервис для всех IP адресов прописанных в IP (DHCP) секции абонента. С начало включаются адреса Internet сервиса если они не равны 0.0.0.0, а потом адреса IP сервиса.

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

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