Это моя настройка для ограничения только интернет-трафика с сохранением неограниченного локального трафика: сначала нам нужно пометить все пакеты, которые направляются в интернет. В моей локальной сети используются адреса из диапазона 192.168.0.0/18, поэтому, чтобы пометить пакеты, идущие в интернет, нужно пометить весь трафик, у которого адрес назначения или источник отличается от локальной подсети. Мы используем два правила — одно для загрузки, другое для выгрузки.
/ip firewall mangle
add action=mark-packet chain=prerouting disabled=no dst-address=!192.168.0.0/18 new-packet-mark=Internet_up passthrough=yes
add action=mark-packet chain=prerouting disabled=no new-packet-mark=Internet_down passthrough=yes src-address=!192.168.0.0/18
После создания этих правил мы можем определить, какие пакеты идут в интернет и обратно. Теперь нужно создать правила простых очередей для каждой подсети, подключённой к роутеру. Для каждой подсети нужны два правила — для загрузки и для выгрузки. Я ограничил подсети: network1 — до 4Мбит/256кбит, network2 — до 4Мбит/128кбит.
add burst-limit=0/0 burst-threshold=0/0 burst-time=0s/0s direction=upload disabled=no interface=all limit-at=0/0 max-limit=256k/0 name=network1_up packet-marks=Internet_up parent=none priority=8 queue=default-small/default-small target-addresses=192.168.0.0/24 total-queue=default-small
add burst-limit=0/0 burst-threshold=0/0 burst-time=0s/0s direction=download disabled=no interface=all limit-at=0/0 max-limit=0/4M name=network1_down packet-marks=Internet_down parent=none priority=8 queue=default-small/default-small target-addresses=192.168.0.0/24 total-queue=default-small
add burst-limit=0/0 burst-threshold=0/0 burst-time=0s/0s direction=upload disabled=no interface=all limit-at=0/0 max-limit=128k/0 name=network2_up packet-marks=Internet_up parent=none priority=8 queue=default-small/default-small target-addresses=192.168.1.0/24 total-queue=default-small
add burst-limit=0/0 burst-threshold=0/0 burst-time=0s/0s direction=download disabled=no interface=all limit-at=0/0 max-limit=0/4M name=network2_down packet-marks=Internet_down parent=none priority=8 queue=default-small/default-small target-addresses=192.168.1.0/24 total-queue=default-small
Если в вашей сети есть сервер, которому вы хотите предоставить неограниченную пропускную способность, это можно сделать, добавив дополнительные правила в список firewall mangle для пометки его пакетов.
add action=mark-packet chain=prerouting disabled=no new-packet-mark=server_up passthrough=yes src-address=192.168.0.1
add action=mark-packet chain=prerouting disabled=no dst-address=192.168.0.2 new-packet-mark=server_down passthrough=yes
И добавив дополнительные правила очередей. Но важно, чтобы правила для подсети, в которой находится сервер, были ниже правил, применяемых к конкретному серверу. Иначе пакеты сервера будут попадать сначала под правило подсети и ограничиваться им.
add burst-limit=0/0 burst-threshold=0/0 burst-time=0s/0s direction=both disabled=no interface=all limit-at=0/0 max-limit=0/0 name=server_up packet-marks=server_up parent=none priority=8 queue=default-small/default-small total-queue=default-small
add burst-limit=0/0 burst-threshold=0/0 burst-time=0s/0s direction=both disabled=no interface=all limit-at=0/0 max-limit=0/0 name=server_down packet-marks=server_down parent=none priority=8 queue=default-small/default-small total-queue=default-small
Конечно, всё это можно сделать через winbox, и так проще расставить правила в нужном порядке.