Управление шейпером Mikrotik

Шейпер работает по следующему принципу предварительно создаются правила на 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
1  6 * * * root /usr/abills/libexec/billd checkspeed mikrotik NAS_IDS=1,2,3 NAT=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
DEBUG=1..7 Режимы отладки.
1 - Отображать базовые сообщения программы и писать лог команд для Mikrotik. Лог записывается в файл /usr/abills/var/log/mikrotik_cmd.log
2 - Отображать команды для Mikrotik на экран.
5 - Отображать но не выполнять команды
7 - Отображать SQL запросы к базе во время выполнения программы

После инициализации правил шейпера при подключении абонента на 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 при подключении

Старая модель шейпера для PPPoE (QUEUES)

$conf{MIKROTIK_QUEUES}=1;

при старой модели шейпера правила шейпера передаются через параметр

Mikrotik-Rate-Limit

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

Маскарад

Для включения маскарада нужно добавить в программу инициализации опцию 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

'' Files -> Upload''