Простые очереди RouterOS: настройка и проверка

MikroTik в Красноярске — три практических курса в ноябре 2026!

С 11 по 21 ноября в Красноярске пройдут очные тренинги MikroTik: MTCNA, MTCRE и MTCTCE.

Работаете с MikroTik и хотите не просто знать команды RouterOS, а понимать, как всё работает? Приходите прокачивать навыки сетевого администрирования!

Расписание курсов

11–14 ноября — MTCNA

Базовый курс MikroTik: настройка RouterOS, маршрутизация, Firewall, NAT, VPN, DHCP, Wi-Fi и основы управления трафиком.

Программа и регистрация

16–18 ноября — MTCRE

Продвинутая маршрутизация: OSPF, несколько интернет-провайдеров (MultiWAN), резервирование каналов, балансировка нагрузки, VPN и VLAN.

Программа и регистрация

19–21 ноября — MTCTCE

Управление трафиком: Firewall, NAT, Mangle, Packet Flow, QoS, очереди и приоритизация трафика.

Программа и регистрация

Почему стоит прийти?

  • Максимум практики на реальном оборудовании MikroTik.
  • Разбираем не только настройки, но и логику работы RouterOS.
  • Реальные инженерные задачи, лабораторные работы и живое общение с тренером.
  • Обучение проводит Кирилл Васильев — сертифицированный тренер MikroTik с 2016 года, практикующий сетевой инженер.
  • Учебные материалы, оборудование, обеды и кофе-брейки включены в стоимость.
  • Возможность пройти несколько курсов подряд со скидкой.

Место проведения: Красноярск, ул. Марковского, 81.

Важно: для участия в MTCRE и MTCTCE необходим сертификат MTCNA. Его можно получить на первом тренинге.

Не ограничивайтесь привычными настройками — научитесь понимать RouterOS и уверенно решать сложные сетевые задачи!

Выбирайте подходящий курс или записывайтесь сразу на всю программу.

Вопросы и запись:
manager@mt-courses.ru

Сайт:
https://mt-courses.ru

Простые очереди RouterOS подходят для ограничения скорости отдельного адреса или подсети и могут образовывать иерархию. Результат зависит от target, направления трафика и положения правила.

FastTrack может обходить Simple Queue для подходящего трафика. Перед выводом о работе очереди сравните счётчики queue и firewall и проверьте оба направления.

Условия

Для иллюстрации концепции, рассмотрим пример небольшой организации, которую мы будем моделировать в виде собирательного образа.

  • Небольшая организация 5-50 компьютеров пользователей
  • Отдельная сеть для компьютеров пользователей
  • Отдельная сеть для гостевого Wi-Fi
  • Отдельная сеть для серверов, такие как почтовый сервер, сервер телефонии астериск, и ещё пару разных серверов.
  • Один провайдер с шириной канала 100Mbps (основной)
  • Один провайдер с шириной канала 10Mbps (резерв)

Первоначальная настройка

Я не буду вдаваться в подробности описания, поскольку процесс достаточно простой и не требует какой-либо специфики. Все, что необходимо — создать пару правил NAT, нормально закрыть фаервол и другие соответствующие меры.

Queues проектирование

Я хотел бы подчеркнуть, что этот подход является шаблонным, поэтому у некоторых из вас может возникнуть “разрыв шаблона”. Если вы готовы внедрить этот подход, то необходимо быть готовым принять его как данность.

Согласно этой концепции, имеется 8 уровней приоритетности трафика, и мы будем обеспечивать гарантированную ширину канала Интернет, опираясь на фактическую пропускную способность, учитывая, что реальная полоса пропускания соответствует условиям договора с провайдером.

Настройка очередей

Я не приветствую использование значений по умолчанию, поскольку осознаю, что они могут быть изменены разработчиками и привести к непредсказуемому поведению.

Прежде всего, мы создадим очереди pcq.

/queue/type
add kind=pcq pcq-classifier=src-address name=dyn-upload
add kind=pcq pcq-classifier=dst-address name=dyn-download

Давайте настроим корневые очереди для каждого провайдера, указав максимальную скорость передачи данных через параметр max-limit.

/queue
add dst=ether1 max-limit=100M/100M name=ether1 target=192.168.0.0/16,172.16.0.0/12,10.0.0.0/8
add dst=ether2 max-limit=10M/10M name=ether2 target=192.168.0.0/16,172.16.0.0/12,10.0.0.0/8

Всё просто дополнительных комментариев не требует.

Далее мы создадим дополнительные саб-очереди, которые будут иметь больший объем данных.

Для первого провайдера

add limit-at=10M/10M max-limit=100M/100M name=ether1.p1 packet-marks=p1 parent=ether1 priority=1/1 queue=dyn-upload/dyn-download target=""
add limit-at=10M/10M max-limit=100M/100M name=ether1.p2 packet-marks=p2 parent=ether1 priority=2/2 queue=dyn-upload/dyn-download target=""
add limit-at=10M/10M max-limit=100M/100M name=ether1.p3 packet-marks=p3 parent=ether1 priority=3/3 queue=dyn-upload/dyn-download target=""
add limit-at=10M/10M max-limit=100M/100M name=ether1.p4 packet-marks=p4 parent=ether1 priority=4/4 queue=dyn-upload/dyn-download target=""
add limit-at=10M/10M max-limit=100M/100M name=ether1.p5 packet-marks=p5 parent=ether1 priority=5/5 queue=dyn-upload/dyn-download target=""
add limit-at=10M/10M max-limit=100M/100M name=ether1.p6 packet-marks=p6 parent=ether1 priority=6/6 queue=dyn-upload/dyn-download target=""
add limit-at=10M/10M max-limit=100M/100M name=ether1.p7 packet-marks=p7 parent=ether1 priority=7/7 queue=dyn-upload/dyn-download target=""
add limit-at=10M/10M max-limit=100M/100M name=ether1.p8 packet-marks=p8,no-mark parent=ether1 queue=dyn-upload/dyn-download target=""

Для второго провайдера

add limit-at=1M/1M max-limit=10M/10M name=ether2.p1 packet-marks=p1 parent=ether2 priority=1/1 queue=dyn-upload/dyn-download target=""
add limit-at=1M/1M max-limit=10M/10M name=ether2.p2 packet-marks=p2 parent=ether2 priority=2/2 queue=dyn-upload/dyn-download target=""
add limit-at=1M/1M max-limit=10M/10M name=ether2.p3 packet-marks=p3 parent=ether2 priority=3/3 queue=dyn-upload/dyn-download target=""
add limit-at=1M/1M max-limit=10M/10M name=ether2.p4 packet-marks=p4 parent=ether2 priority=4/4 queue=dyn-upload/dyn-download target=""
add limit-at=1M/1M max-limit=10M/10M name=ether2.p5 packet-marks=p5 parent=ether2 priority=5/5 queue=dyn-upload/dyn-download target=""
add limit-at=1M/1M max-limit=10M/10M name=ether2.p6 packet-marks=p6 parent=ether2 priority=6/6 queue=dyn-upload/dyn-download target=""
add limit-at=1M/1M max-limit=10M/10M name=ether2.p7 packet-marks=p7 parent=ether2 priority=7/7 queue=dyn-upload/dyn-download target=""
add limit-at=1M/1M max-limit=10M/10M name=ether2.p8 packet-marks=p8,no-mark parent=ether2 queue=dyn-upload/dyn-download target=""

Давайте попробуй разобрать, любую одну запись

add limit-at=10M/10M max-limit=100M/100M name=ether1.p3 packet-marks=p3 parent=ether1 priority=3/3 queue=dyn-upload/dyn-download target=""

  • limit-at=10M/10M — Даже в самом худшем сценарии данная очередь получит своим 10M, я предпочитаю рассчитывать по принципу 1/10 от пропускной способности провайдера (родительской очереди). Главное помните что суммарное значение limit-at всех наследников не должно быть больше чем max-limit родителя. Однако это не обязательное правило, если вы его нарушите, то поведение будет другим очередей и это надо учитывать.
  • max-limit=100M/100M — очередь может получить все 100M (максимум от родителя), но такие скорость очередь получит, только если другие очереди в момент не будут потреблять трафик.
  • packet-marks=p3 — данная очередь будет ставить пакеты в очередь если у пакета есть соответствующая марка.
  • priority=3/3 — приоритет очереди, говорит о том, какая очередь из наследников быстрее всех сможет достигнуть своего max-limit.
  • queue=dyn-upload/dyn-download — между всеми пакетами будет балансировка трафика основанная на IP адресе, тем самым у всех хостов в этой очереди будет равномерное потребление трафика.

Также обратите внимание на последнюю запись, та которая p8, он также обрабатывает пакеты без марки.

Настройка mangle

Прежде чем продолжить, необходимо создать список, в котором будут описаны все интерфейсы провайдеров. Если вы уже ознакомились с моим блогом и применяете на практике информацию, вероятнее всего у вас уже есть такой список.

/interface list
add name=ISP
/interface list member
add interface=ether1 list=ISP
add interface=ether2 list=ISP

Далее простая конфигурация mangle

/ip firewall mangle
add chain=forward connection-mark=no-mark out-interface-list=ISP src-address-list=queue-p1 action=mark-connection new-connection-mark=queue-p1
add chain=forward connection-mark=no-mark out-interface-list=ISP src-address-list=queue-p2 action=mark-connection new-connection-mark=queue-p2
add chain=forward connection-mark=no-mark out-interface-list=ISP src-address-list=queue-p3 action=mark-connection new-connection-mark=queue-p3
add chain=forward connection-mark=no-mark out-interface-list=ISP src-address-list=queue-p4 action=mark-connection new-connection-mark=queue-p4
add chain=forward connection-mark=no-mark out-interface-list=ISP src-address-list=queue-p5 action=mark-connection new-connection-mark=queue-p5
add chain=forward connection-mark=no-mark out-interface-list=ISP src-address-list=queue-p6 action=mark-connection new-connection-mark=queue-p6
add chain=forward connection-mark=no-mark out-interface-list=ISP src-address-list=queue-p7 action=mark-connection new-connection-mark=queue-p7
add chain=forward connection-mark=no-mark out-interface-list=ISP src-address-list=queue-p8 action=mark-connection new-connection-mark=queue-p8 
add chain=postrouting connection-mark=queue-p1 action=mark-packet new-packet-mark=p1 passthrough=no
add chain=postrouting connection-mark=queue-p2 action=mark-packet new-packet-mark=p2 passthrough=no
add chain=postrouting connection-mark=queue-p3 action=mark-packet new-packet-mark=p3 passthrough=no
add chain=postrouting connection-mark=queue-p4 action=mark-packet new-packet-mark=p4 passthrough=no
add chain=postrouting connection-mark=queue-p5 action=mark-packet new-packet-mark=p5 passthrough=no
add chain=postrouting connection-mark=queue-p6 action=mark-packet new-packet-mark=p6 passthrough=no
add chain=postrouting connection-mark=queue-p7 action=mark-packet new-packet-mark=p7 passthrough=no
add chain=postrouting connection-mark=queue-p8 new-packet-mark=p8 passthrough=no

Хочу отметить, что в данном случае маркировка соединения не является мерой для повышения производительности, а скорее предназначена для ясной фильтрации RX-пакета, полученного через провайдера и прошедшего процесс NAT.

Кто-то может возразить, что использование connection-state=new для первоначальной маркировки соединений может привести к уменьшению нагрузки на CPU, Но некоторые соединения и пакеты, прошедшие правила dst-nat (например, для почты), не будут попадать под данные правила. Для таких соединений мы фильтруем на основании отсутствия марки соединения, а значит сюда может попасть и new и established.

Один из аргументов, который может быть приведен, заключается в том, что можно уменьшить нагрузку на систему, оптимизировав правила с помощью кастомных цепочек. Это, безусловно, верно, но основная цель данной статьи заключается не в оптимизации конкретных правил, а в объяснении принципа работы данного подхода. Таким образом, данный конфигурационный подход может быть более наглядным и понятным для читателя, и оптимизация всегда может быть выполнена позже.

Затем вам нужно внести ваши хосты или сети в соответствующий список queue-p1 — queue-p8, где номер списка (или приоритет) определяет важность данного ресурса для вашего бизнеса — чем выше номер, тем выше приоритет.

Например:

/ip firewall address-list
add list=queue-p2 address=192.168.100.100 comment="asterisk"
add list=queue-p2 address=192.168.100.200 comment="postfix"
add list=queue-p3 address=192.168.100.0/24 comment="Servers"
add list=queue-p4 address=192.168.200.10 comment="Zarplata"
add list=queue-p4 address=192.168.200.11 comment="GenDir"
add list=queue-p7 address=192.168.200.0/24 comment="local Users"
add list=queue-p8 address=192.168.0.0/24 comment="Guest wifi"

Возникает вопрос о том, как расставить приоритеты. Следует придерживаться простого правила: первый приоритет должен быть выделен ТОЛЬКО для управления с самого MikroTik, поскольку насыщенный канал может привести к потере возможности управлять RouterOS.

Для того чтобы отправить пакет в определенную очередь в RouterOS, необходимо правильно пометить соединение. Именно поэтому цепочка postrouting используется для маркировки пакетов, а не forward, так как в forward не попадает трафик который, генерирует сам маршрутизатор.

Несколько примеров:

/ip firewall mangle
add action=mark-connection chain=output connection-mark=no-mark new-connection-mark=queue-p1 protocol=tcp src-port=8291
add action=mark-connection chain=output connection-mark=no-mark new-connection-mark=queue-p1 protocol=tcp src-port=22
add action=mark-connection chain=output connection-mark=no-mark new-connection-mark=queue-p1 protocol=vrrp
add action=mark-connection chain=output connection-mark=no-mark dst-port=53 new-connection-mark=queue-p1 protocol=udp

Как проверить результат

  • Запустите контролируемый поток в upload и download.
  • Сверьте rate, bytes, queued и dropped у нужной очереди.
  • Проверьте, что FastTrack не обходит тестируемый трафик и соседние сети не попадают в target.

Источники и связанные материалы

Команды в статье меняют сетевую конфигурацию. Перед работой сохраните экспорт, подготовьте способ восстановления доступа и применяйте изменения сначала в тестовой среде.