Это старая версия документа.
Управление шейпером Mikrotik
Шейпер работает по следующему принципу предварительно создаются правила на Mikrotik командой billd, а при авторизации абоненты просто вносятся в нужные таблицы с название CLIENTS_123 где 123 это идентификатор тарифного плана (TP_ID).
При использовании разных скоростей в разные промежутки времени нужно через крон вызывать данную команду на границе интервалов для синхронизации скоростей.
Данную команду нужно выполнять для любого типа подключения PPPoE, PPTP или IPoE.
1 20 * * * 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='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''