Микротик ограничивает скорость интернета

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
/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:
  • CommentMEGA-upload.
  • chainforward.
  • Out. Interface — интерфейс, на котором висит Инет. В моем случае это «eth1-Wi-Fi».
  • Dst. Address Listmega.nz — это имя того самого набора адресных листов с прошлого шага.
  • Actionmark packet.
  • New Packet MarkMEGA-upload.
  • Passthroughttrue.



/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:
  • CommentMEGA-download.
  • chainforward.
  • In. Interface — интерфейс, на котором висит Инет. В моем случае это «eth1-Wi-Fi».
  • Src Address Listmega.nz — это имя того самого набора адресных листов с прошлого шага.
  • Actionmark packet.
  • New Packet MarkMEGA-download.
  • Passthroughtrue.



/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:

  • NameMEGA-upload
  • Parentglobal
  • Packet MarksMEGA-upload (выбираем из списка)
  • Queue Typedefault-small
  • Priority8
  • Bucket Size0.100
  • Max Limit25M
Читайте также:  Автоматическое подключение интернета при запуске windows 10

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

  • NameMEGA-download
  • Parentglobal
  • Packet MarksMEGA-download (выбираем из списка)
  • Queue Typedefault-small
  • Priority8
  • Bucket Size0.100
  • Max Limit25M

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

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

/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 /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 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 /queue tree add max-limit=25M name=MEGA-upload packet-mark=MEGA-upload parent=global \ queue=default-small add max-limit=25M name=MEGA-download packet-mark=MEGA-download parent=global \ queue=default-small 

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

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

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

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

:log info "STARTING SCAN TO CLOUD" :put [:resolve mega.nz] :put [:resolve mega.co.nz] :put [:resolve eu.static.mega.co.nz] :put [:resolve dropbox.com] :put [:resolve d.dropbox.com] :put [:resolve bolt.dropbox.com] :put [:resolve dl-debug.dropbox.com] :put [:resolve api.disk.yandex.net] :foreach i in=[/ip dns cache all find where (name~"mega.nz" || name~"mega.co" || name~"dropbox" || name~"disk.yandex") && (type="A") ] do= < :local tmpAddress [/ip dns cache get $i address]; delay delay-time=10ms #prevent script from using all cpu time :if ( [/ip firewall address-list find where address=$tmpAddress] = "") do=< :local cacheName [/ip dns cache get $i name] ; :log info ("added entry: $cacheName $tmpAddress"); /ip firewall address-list add address=$tmpAddress list=clouds comment=$cacheName; >> :log info "CLOUD SCAN COMPLETE"

Источник

Оцените статью
Adblock
detector