Предоставляем доступ для пользователя и включаем нужные сервисы :

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

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


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

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

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

[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) :

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


Самостоятельная активация сессии 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Номер сервера доступа


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

abills/libexec/config.pl


$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) должен быть доступен пользователю под которым работает веб сервер