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

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

Инициализация и контроль правил шейпера. При использовании разных скоростей в разные промежутки времени нужно через крон вызывать данную команду на границе интервалов. Данную команду нужно выполнять для любого типа подключения PPPoE, PPTP или IPoE.

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

# /usr/abills/libexec/billd checkspeed mikrotik RECONFIGURE=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;

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

Ascend-Xmit-Rate Ascend-Data-Rate

и создается 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''