Skip to end of metadata
Go to start of metadata

Шейпер работает по следующему принципу предварительно создаются правила на Mikrotik командой billd, а при авторизации абоненты просто вносятся в нужные таблицы с название CLIENTS_123 где 123 это идентификатор тарифного плана (TP_ID).

При использовании разных скоростей в разные промежутки времени нужно через крон вызывать данную команду на границе интервалов для синхронизации скоростей. 
Данную команду нужно выполнять для любого типа подключения PPPoE, PPTP или IPoE. 
Пример команд синхронизации для тарифа «День/Ночь» со сменой скоростей в 22:01 и 06:01

1 22 * * * root /usr/abills/libexec/billd checkspeed mikrotik NAS_IDS=1,2,3 NAT=1 RECONFIGURE=1
1  6 * * * root /usr/abills/libexec/billd checkspeed mikrotik NAS_IDS=1,2,3 NAT=1 RECONFIGURE=1

Инициализация правил шейпера и загрузки их на mikrotik сервера

/usr/abills/libexec/billd checkspeed mikrotik RECONFIGURE=1 [NAS_IDS=2] [NAT=1]

Параметры:

NAS_IDS='1,2'Список серверов доступа. По умолчанию скорость просматривается на всех
RECONFIGURE=1Переинициализировать правила шейпера
NAT=1Включение ната
SHOW_SPEED=1Показать абонентов для которых применён шейпер id, address_list, ip
TP_ID="1,2,3"Заливать только определенные тарифные планны
DEBUG=1..7Режимы отладки. 
1 - Отображать базовые сообщения программы и писать лог команд для Mikrotik. Лог записывается в файл /usr/abills/var/log/mikrotik_cmd.log 
2 - Отображать команды для Mikrotik на экран. 
5 - Отображать но не выполнять команды 
7 - Отображать SQL запросы к базе во время выполнения программы

SINGLE_THREAD=1

Заливка всех правил на mikrotik через одно соединение

После каждого изменения скорости или же добавления нового тарифного плана нужно прописовать

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

или можно включить внешний обработчик в файле /usr/abills/libexec/config.pl (не рекомендуеться при большом количестве тарифов)

$conf{SHAPER_RESTART_CMD}='/usr/abills/libexec/billd checkspeed mikrotik RECONFIGURE=1';

После инициализации правил шейпера при подключении абонента на Mikrotik передаётся только IP адрес абонента с указанием в какой список его внести. 
Переинициализацию правил шейпера нужно проводить после каждого изменения скорости в тарифных планах или включить внешний обработчик $conf{SHAPER_RESTART_CMD}='/usr/abills/libexec/billd checkspeed mikrotik RECONFIGURE=1';

При использовании PPPoE, PPTP адрес передаётся системой через RADIUS пары

Mikrotik-Address-List=CLIENTS_[TP_ID]

При использовании IPN используется стандарnный  IPN механизм $conf{IPN_START_RULES} $conf{IPN_STOP_RULES}

Проверка правил шейпера: 

Если всё настроено правильно, после выполнения команды «billd RECONFIGURE=1», Вы должны получить приблизительно такие ответы по соответствующих запросах в консоли MikroTik:

/ip firewall mangle print 
0   chain=forward action=mark-packet new-packet-mark=ALLOW_TRAFFIC_CLASS_2_out passthrough=yes
   dst-address=0.0.0.0/0 src-address-list=CLIENTS_2
1   chain=forward action=mark-packet new-packet-mark=ALLOW_TRAFFIC_CLASS_2_in passthrough=yes
   src-address=0.0.0.0/0 dst-address-list=CLIENTS_2

/queue tree print 
0   name="TP_2_in_global" parent=global-out packet-mark=ALLOW_TRAFFIC_CLASS_2_in limit-at=0
   queue=TP_2_in_global_speed priority=5 max-limit=0 burst-limit=0 burst-threshold=0 burst-time=0s
1   name="TP_2_out_global" parent=global-out packet-mark=ALLOW_TRAFFIC_CLASS_2_out limit-at=0
   queue=TP_2_out_global_speed priority=5 max-limit=0 burst-limit=0 burst-threshold=0 burst-time=0s 

Если у вас больше тарифов соответственно результатов будет больше.

При использовании выражений или турбо режимов, абонентам создаются simple Queues при подключении

QUEUES модель шейпера для PPPoE

$conf{MIKROTIK_QUEUES}=1; 

При этом параметре правила шейпера передаются через параметр Mikrotik-Rate-Limit и создается simple queue для каждого абонента. 
В новой модели, создаются queue tree для тарифных планов и передается параметр Mikrotik-Address-List

Также эта схема используется в Mac_auth2 при отсутствии параметра

$conf{INTERNET_EXTERNAL_SHAPPER};

Маскарад

Для включения маскарада нужно добавить в программу инициализации опцию NAT=1


/usr/abills/libexec/billd checkspeed mikrotik RECONFIGURE=1 NAT=1


система создаст правила маскарадинга для каждого тарифного плана


При включении опции SKIP_NAT_IPS=[список адресов через запятую] система исключает данные адреса из списка маскарадинга


Использование нескольких внешних IP

Система разрешает использовать несколько внешних IP для построения правил маскарадинга для этого нужно создать файл правил/usr/abills/libexec/mikrotik.nat

формат файла
[номер сервера доступа] [внешний IP] [ внутренняя сетка или адрес лист в формате CLIENTS_XX ]\\

разделитель колонок : пробел.

Пример
5 33.33.33.33 10.10.1.0/24
5 33.33.32.0/24 CLIENTS_2

1. 5 сервер доступа, внешний IP 33.33.33.33 внутренняя сеть 10.10.1.0/24 
2. 5 сервер доступа, диапазон внешних адресов 33.33.32.0/24, для всех клиентов тарифного плана с ID 2


Настройка через скрипт

Иногда случается так что билинг не имеет непосредственного доступа к Mikrotik, а нужно на микротик записать правила шейпера и ната. На помощь приходит опция EXPORT_FILE

Команда
/usr/abills/libexec/billd checkspeed mikrotik RECONFIGURE=1 NAT=1 EXPORT_FILE=shaper.rsc

Создает список команд в файле shaper.rsc

Потом их просто загружаете в winbox

Вкладка FIle -> Upload

Добавление в скрипт кастомных правил

Для добавления кастомных правил нужно создать файл правил /usr/abills/libexec/mikrotik.fw.

В файл правил прописываем нужные команды. После запуска скрипта команды с файла запишутся на микротик.

Пример
ip firewall mangle add chain=forward src-address=0.0.0.0/0 comment="Abills example"
ip firewall mangle add chain=forward dst-address=0.0.0.0/0 comment="Abills example"
  • No labels