Mikrotik: Ограничение скорости скачивания для определенных IP-адресов

Предыстория: имеем Интернет-соединение со скоростью «до 50 Мбит/с», имеющее «фичу» разгоняться до 100 если канал свободен. Пользуясь облачным хранилищем заметил проблему, что выгрузив или загрузив около 50-100 файлов клиент для работы с облаком «зависает» и либо качает файлы на крайне низкой скорости (порядка 50-200 Кбит/с), либо вообще «молчит». При этом, сайты в браузере открываются без всяких проблем.

Как такое может быть? Ограничение ширины канала по определенным IP-адресам при скачке за определенный промежуток времени.

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

В просторах сети было найдено множество статей на подобную тематику, только все они предлагали распределение скорости между пользователями по приоритету (интернет-страницы с высоким, потоковое видео ниже и самый низкий приоритет у p2p-систем).

Итак, для начала теория. Провайдер отслеживает все «скачки» скорости и количество обращений к ресурсам, выдавая ограничение на превышающие их показатели предел. Узнать его не получится — это закрытая информация провайдера. Но как же скачивать и заливать по 1к+ файлов в облако, не получая за это временный «бан» на доступ к ресурсу? Легко!

Алгоритм действий будет таков:

  1. Создаем список IP-адресов, для которых нужно включить ограничение скорости;
  2. Организовать маркировку пакетов, идущих на и с ресурсов списка;
  3. Задать ограничение скорости по требуемым ресурсам при помощи очередей.



Приступим к настройке



Шаг 1. Добавим IP-адреса ресурса(ов) в список. Для этого зайдем на вкладку "Address Lists" окна "Firewall"





Я пользуюсь облачным хранилищем Mega.nz и пул их IP-адресов будет:

  • 31.216.144.0/24
  • 31.216.145.0/24
  • 31.216.147.0/24
  • 89.44.168.0/24
  • 154.53.224.0/24
  • 154.53.225.0/24


Добавим все подсети адресов в лист с именем, например, "mega.nz".

/ip firewall address-list
add address=31.216.144.0/24 list=mega.nz
add address=31.216.145.0/24 list=mega.nz
add address=31.216.147.0/24 list=mega.nz
add address=89.44.168.0/24 list=mega.nz
add address=154.53.224.0/24 list=mega.nz
add address=154.53.225.0/24 list=mega.nz



Шаг 2. Маркировка пакетов





После этого перейдем во вкладку "Mangle" и добавим правила маркировки пакетов. Для этого жмем на «плюс» и указываем следующие параметры:

MEGA-upload:

 

  • Comment — MEGA-upload.
  • chain — forward.
  • Out. Interface — интерфейс, на котором висит Инет. В моем случае это «eth1-Wi-Fi».
  • Dst. Address List — mega.nz — это имя того самого набора адресных листов с прошлого шага.
  • Action — mark packet.
  • New Packet Mark — MEGA-upload.
  • Passthrought — true.






/ip firewall mangle
add action=mark-packet chain=forward comment=MEGA-upload \
    out-interface=eth1-Wi-Fi new-packet-mark=MEGA-upload \
    passthrough=yes dst-address-list=mega.nz



MEGA-download:

 

  • Comment — MEGA-download.
  • chain — forward.
  • In. Interface — интерфейс, на котором висит Инет. В моем случае это «eth1-Wi-Fi».
  • Src Address List — mega.nz — это имя того самого набора адресных листов с прошлого шага.
  • Action — mark packet.
  • New Packet Mark — MEGA-download.
  • Passthrough — true.






/ip firewall mangle
add action=mark-packet chain=forward comment=MEGA-download \
    in-interface=eth1-Wi-Fi new-packet-mark=MEGA-download \
    passthrough=yes src-address-list=mega.nz



Шаг 3. Добавление правил очередей (Queues)


Далее, переходим во вкладку "Queue Tree" и также добавляем два новых правила:



MEGA-upload:

 

  • Name — MEGA-upload
  • Parent — global
  • Packet Marks — MEGA-upload (выбираем из списка)
  • Queue Type — default-small
  • Priority — 8
  • Bucket Size — 0.100
  • Max Limit — 25M




/queue tree
add max-limit=25M name=MEGA-upload packet-mark=MEGA-upload parent=global \
    queue=default-small



MEGA-download:

 

  • Name — MEGA-download
  • Parent — global
  • Packet Marks — MEGA-download (выбираем из списка)
  • Queue Type — default-small
  • Priority — 8
  • Bucket Size — 0.100
  • Max Limit — 25M




/queue tree
add max-limit=25M name=MEGA-download packet-mark=MEGA-download parent=global \
    queue=default-small



Всё. Теперь при синхронизации облачного хранилища на вход и выход скорость не поднимется больше 25 Мбит/с и, тем самым, устранили вероятность получения временного бана от провайдера.

Полный список скриптов
 



PS.: Таким образом можно ограничивать скорость на любые ресурсы.

PPS: Правила ограничений были частично взяты из статьи "Ограничение скорости в MikroTik" и изменены для своих нужд.

PPPS: В статью были добавлены скрипты в текстовом эквиваленте, а также убрано создание PCQ-типов для очередей.

PPPPS: Если кому нужно, ниже представлен скрипт автодобавления IP-адресов из кэша DNS в именованный список. Сразу скажу, что скрипт настроен на работу с несколькими облачными сервисами и добавляет адреса в список с именем «clouds». Если нужно, можете изменить его под себя.

Скрипт автодобавления

Додати коментар


Захисний код
Оновити

EcoMonitoring

ЛІЧІЛЬНИК ВІДВІДУВАННЬ

Сьогодні 518
Вчора386
Цього тижня 904
Минулого тижня 2262
Цей місяць 8462
Минулий місяць 9310
За весь час 172496
Ваш IP: 3.148.210.152
Сегодня: 2025-04-28
Пользователей на сайте: 0
Гостей на сайте: 106