Ограничение скорости в MikroTik
В этой статье мы опишем различные способы, как ограничить скорость на роутере MikroTik: по IP адресу, по MAC адресу, для всей подсети, разделить скорость интернета поровну и т.д.
Отключаем fasttrack
Перед настройкой ограничений скорости в MikroTik необходимо убедиться, что на роутере в фаерволе отключен fasttrack. Эта технология появилась начиная с RouterOS 6.29 и позволяет увеличить производительность путем пересылки данных без их дополнительной обработки. Однако если она включена, то ограничения скорости не сработают. Поэтому fasttrack необходимо отключить.
- Откройте меню IP — Firewall.
- На вкладке Filter Rules выберите правило fasttrack connection.
- Нажмите красный крестик Disable, чтобы деактивировать правило.
Ограничение скорости всем пользователям подсети
Допустим у нас есть входной интернет канал 20 Мбит/с. Мы хотим каждому пользователю подсети сделать ограничение скорости 2 Мбит/с на загрузку и отдачу.
Добавим pcq очередь на загрузку с ограничением 2 Мбит/с.
- Откройте меню Queues.
- Перейдите на вкладку Queue Types.
- Нажмите синий плюсик.
- В поле TypeName укажите название очереди на загрузку pcq-download-2M.
- В списке Kind выберите pcq.
- В поле Rate укажите ограничение скорости на загрузку 2M (2 Мбит/с).
- Проверьте, что напротив Dst. Address стоит галочка.
- Нажмите кнопку OK.
Добавим pcq очередь на отдачу с ограничением 2 Мбит/с.
- Нажмите синий плюсик.
- В поле TypeName укажите название очереди на загрузку pcq-upload-2M.
- В списке Kind выберите pcq.
- В поле Rate укажите ограничение скорости на отдачу 2M (2 Мбит/с).
- Поставьте галочку напротив Src. Address.
- Уберите галочку напротив Dst. Address.
- Нажмите кнопку OK.
Теперь добавим правило с ограничениями скоростей.
- Перейдите на вкладку SimpleQueues.
- Нажмите синий плюсик.
- На вкладке General в поле Name укажите название правила queue-limit-2M.
- В поле Target укажите нашу подсеть 192.168.88.0/24
- В поле Max Limit в колонке Target Upload укажите максимальную скорость отдачи 18M (18 Мбит/с), которую мы выделяем на всю подсеть.
Если ваш интернет канал равен 20 Мбит/с, то значение нужно указать на 5-20% меньше, например, 18 Мбит/с, чтобы правила сработали. Иначе скорость будет упираться в шейпер провайдера и правила срабатывать не будут. - В поле Max Limit в колонке Target Download укажите максимальную скорость загрузки 18M (18 Мбит/с), которую мы выделяем на всю подсеть.
Теперь проверьте на компьютере скорость с помощью сайта www.speedtest.net или аналогичного мобильного приложения на смартфоне.
Ограничение скорости по IP адресу определенному пользователю
Если вам нужно определенному пользователю, например, директору сделать скорость выше чем у остальных, то выполните следующее:
- Откройте меню Queues.
- На вкладке SimpleQueues нажмите синий плюсик.
- В появившемся окне на вкладке General в поле Name укажите название ограничения boss.
- В поле Target пропишите IP адрес компьютера, для которого будет действовать ограничение.
- В поле Max Limit в колонке Target Upload укажите необходимую скорость отдачи.
- В поле Max Limit в колонке Target Download укажите необходимую скорость загрузки.
- Нажмите кнопку OK.
Если у вас есть правило, которое ограничивает скорость для всех пользователей подсети, то правило для определенного пользователя нужно поднять выше этого правила, чтобы оно сработало. Для этого перетяните его левой кнопкой мыши вверх.
Теперь запустите на компьютере директора speedtest и проверьте скорость. Если на компьютере запустить закачку, то скорость в MikroTik можно посмотреть на вкладке Traffic:
- Откройте правило и перейдите на вкладку Traffic.
- В поле Rate в колонке Target Upload видим скорость отдачи.
- В поле Rate в колонке Target Download видим скорость загрузки.
DHCP сервер через какое-то время может назначить компьютеру другой IP адрес, если истечет время его аренды. Поэтому для указанного IP адреса перестанут действовать необходимые ограничения. Чтобы этого не произошло, нужно привязать IP адрес к MAC адресу конкретного устройства. Как это сделать, написано ниже.
Ограничение скорости по MAC адресу
В MikroTik нельзя ограничить скорость, указав только MAC адрес устройства. Вам нужно сначала настроить ограничение скорости по IP адресу, а потом привязать IP адрес к MAC адресу конкретного устройства.
Привязка IP адреса к MAC адресу выполняется следующим образом:
- Подключите устройство к роутеру, чтобы оно получило IP адрес.
- В настройках роутера откройте меню IP — DHCP Server.
- Перейдите на вкладку Leases.
- Нажмите правой кнопкой мыши на устройстве, которому нужно привязать MAC адрес к IP адресу.
- Выберите в выпадающем меню Make Static.
Ограничение скорости всем "качальщикам"
Роутер MikroTik позволяет сделать настройку так, что при просмотре интернет страничек каждый клиент получит максимальную скорость, а как только начнет качать большие файлы, его скорость уменьшится. Для этого настраивается взрывная скорость Burst.
Допустим у нас есть входной интернет канал 20 Мбит/с. Мы хотим, чтобы каждый пользователь по возможности просматривал интернет странички с максимальной скоростью 20 Мбит/с. Но как только он начнет качать большие файлы, его скорость уменьшилась до 3 Мбит/с.
Добавим pcq очередь на загрузку с параметрами Burst .
- Откройте меню Queues.
- Перейдите на вкладку Queue Types.
- Нажмите синий плюсик.
- В поле TypeName укажите название очереди на загрузку pcq- burst -download.
- В списке Kind выберите pcq.
- В поле Rate укажите скорость на загрузку 3M (3 Мбит/с), которая будет действовать, если пользователь начнет качать файлы. Значение Rate должно быть меньше значения Burst Rate.
- В поле Burst Rate укажите максимальную скорость на загрузку 18M (18 Мбит/с), которая будет по возможности действовать для просмотра интернет страничек, пока пользователь не начнет качать файлы. Если два пользователя будут одновременно просматривать интернет странички, то 18 Мбит/с поделятся между ними. Каждый получит скорость по 9 Мбит/с. Если скорость вашего интернет-канала 20 Мбит/с, то скорость Burst Rate нужно ставить немного меньше, например, 18 Мбит/с, чтобы правила не уперлись в шейпер провайдера и сработали.
- В поле Burst Threshold укажите скорость 2M (2 Мбит/с), при превышении которой начнет действовать ограничение скорости Rate 3M. Значение Burst Threshold должно быть меньше значения Rate.
- В поле Burst Time укажите время для подсчета средней скорости загрузки 64. Роутер будет вычислять скорость каждую 1/16 периода. Например, при Burst Time=16 роутер будет вычислять каждую 1 сек, а при Burst Time=32 будет вычислять каждые 2 сек.
Фактическое время, через которое сработает ограничение на загрузку вычисляется по формуле Real Time = Burst Threshold * (Burst Time / Burst Rate). В нашем случае ограничение сработает через Real Time = 2 * (64 / 20) = 6,4 секунды.
Для тестирования работы Burst рекомендую сначала поставить большим значение Burst Time. Например, для данного случая лучше поставить Burst Time=192. При этом значении ограничение скорости сработает через 19,2 секунды. Это позволит запустить торрент на компьютере и посмотреть, как будет срабатывать Burst. - Проверьте, что напротив Dst. Address стоит галочка.
- Нажмите кнопку OK.
Добавим pcq очередь на отдачу с параметрами Burst .
- Нажмите синий плюсик.
- В поле TypeName укажите название очереди на отдачу pcq- burst -upload.
- В списке Kind выберите pcq.
- В поле Rate укажите скорость на отдачу 3M (3 Мбит/с), которая будет действовать, если пользователь начнет передавать файлы в интернет. Значение Rate должно быть меньше значения Burst Rate.
- В поле Burst Rate укажите максимальную скорость на отдачу 18M (18 Мбит/с), которая будет по возможности действовать для просмотра интернет страничек, пока пользователь не начнет передавать файлы в интернет.
- В поле Burst Threshold укажите скорость 2M (2 Мбит/с), при превышении которой начнет действовать ограничение скорости Rate 3M. Значение Burst Threshold должно быть меньше значения Rate.
- В поле Burst Time укажите время для подсчета средней скорости отдачи 64.
Для тестирования работы рекомендую сначала поставить большим значение Burst Time=192. При этом значении ограничение скорости сработает через 19,2 секунды. Это позволит запустить торрент на компьютере и посмотреть, как будет срабатывать Burst. - Поставьте галочку напротив Src. Address.
- Уберите галочку напротив Dst. Address.
- Нажмите кнопку OK.
Теперь добавим в Simple Queues правило с ограничениями.
- Перейдите на вкладку SimpleQueues.
- Нажмите синий плюсик.
- На вкладке General в поле Name укажите название правила queue-burst-limit.
- В поле Target укажите нашу подсеть 192.168.88.0/24
Теперь проверьте на компьютере скорость с помощью сайта www.speedtest.net. Она должна стремиться к максимальной 18 Мбит/с. После этого поставьте на закачку торрент и посмотрите, как измениться скорость. Если вы использовали Burst Time=192, то через 20 секунд после старта закачки торрента скорость упадет до 3 Мбит/с.
Ограничение скорости определенному "качальщику" по IP адресу
MikroTik позволяет по IP адресу ограничить скорость определенному пользователю, который качает большие файлы из интернета. Пока пользователь будет смотреть интернет странички, скорость будет высокой, но как только начнет качать файлы, то скорость уменьшится. Для этого настраивается взрывная скорость Burst.
Допустим, мы хотим, чтобы пользователь просматривал интернет странички с максимальной скоростью 20 Мбит/с. Но как только он начнет качать большие файлы, его скорость уменьшилась до 3 Мбит/с.
- Откройте меню Queues.
- На вкладке Simple Queues нажмите на синий плюсик.
- В поле Name укажите имя ограничения dima-burst-limit-3M.
- В поле Target укажите IP адрес пользователя 192.168.88.254, для которого будет действовать ограничение.
- В поле Max Limit в столбце Target Upload укажите скорость отдачи файлов в интернет 3M (3 Мбит/с). Она должна быть меньше Burst Limit.
- В поле Max Limit в столбце Target Download укажите скорость загрузки файлов из интернета 3M (3 Мбит/с). Она должна быть меньше Burst Limit.
- В поле Burst Limit в столбце Target Upload укажите максимальную скорость отдачи 20M при просмотре интернет страничек. Она должна быть больше скорости Max Limit.
- В поле Burst Limit в столбце Target Download укажите максимальную скорость загрузки 20M при просмотре интернет страничек. Она должна быть больше скорости Max Limit.
- В поле Burst Threshold в столбце Target Upload укажите скорость отдачи 2M, при превышении которой, сработает ограничение скорости Max Limit. Значение Burst Threshold должно быть меньше скорости Max Limit.
- В поле Burst Threshold в столбце Target Download укажите скорость загрузки 2M, при превышении которой, сработает ограничение скорости Max Limit. Значение Burst Threshold должно быть меньше скорости Max Limit.
- В поле Burst Time в столбце Target Upload укажите время для подсчета средней скорости отдачи 64.
Роутер будет вычислять скорость каждую 1/16 периода. Например, при Burst Time=16 роутер будет вычислять каждую 1 сек, а при Burst Time=32 будет вычислять каждые 2 сек.
Фактическое время, через которое сработает ограничение вычисляется по формуле Real Time = Burst Threshold * (Burst Time / Burst Rate). В нашем случае ограничение сработает через Real Time = 2 * (64 / 20) = 6,4 секунды.
Для тестирования работы Burst рекомендую сначала поставить большие значения Burst Time. Например, для данного случая лучше поставить Burst Time=192. При этом значении ограничение скорости сработает через 19,2 секунды. Это позволит запустить торрент на компьютере и посмотреть, как будет срабатывать Burst. - В поле Burst Time в столбце Target Download укажите время для подсчета средней скорости загрузки 64.
- Нажмите кнопку OK.
На практике это правило будет работать следующим образом. Пользователь будет просматривать странички в интернете с максимальной скоростью 20 Мбит/с. Когда он начнет качать торренты и средняя скорость превысит 2 Мбит/с, то отключится ограничение 20 Мбит/с, и включится ограничение 3 Мбит/с.
Если у вас есть Burst правило для всей подсети, то правило для определенного пользователя нужно поднять выше него. Для этого перетащите его левой кнопкой мыши.
Ограничение скорости по часам и дням недели
Если вы хотите, чтобы ограничение скорости в MikroTik работало в определенные дни недели и часы, то выполните следующее:
- Нажмите раскрывающийся список Time.
- В первом поле Time укажите, с какого времени будут действовать ограничения.
- Во втором поле Time укажите, до какого времени будут действовать ограничения.
- Выберите по каким дням недели будет действовать правило.
- Нажмите кнопку OK.
Определяем, какой IP адрес больше всех потребляет трафик
Если у вас в сети начал тормозить интернет, тогда необходимо посмотреть, кто больше всех потребляет трафик. Может для кого-то вы не правильно настроили правила, и он торрентами занял весь интернет-канал.
- Открываем меню Interfaces.
- Выбираем в списке интерфейс, к которому подключены компьютеры локальной сети. Это может быть ethernet порт ether2 или Wi-Fi интерфейс wlan0. В нашем случае мы объединили ethernet и Wi-Fi порты в интерфейс brige, поэтому выбираем его.
- Правой кнопкой мыши кликаем на необходимом интерфейсе и выбираем в меню Torch.
Как видим, больше всего потребляет трафик IP адрес 192.168.88.254, он качает файлы со скоростью 16 Mbps.
Распределение скорости интернета поровну
Этот способ подходит для использования на домашнем роутере или в небольшом офисе.
Допустим у вас есть входной интернет канал 20 Мбит/с. В доме есть компьютер сына, ноутбук отца и планшет у мамы. Когда сын начнет качать торренты, нужно чтобы он не занял весь интернет канал. При этом отец смог смотреть фильм онлайн, а мама открывать интернет странички. Но если в сети работает только компьютер сына, то он получит всю доступную скорость интернета 20 Мбит/с.
В данном примере скорость будет делиться поровну, только если все трое начнут качать на максимальной скорости. В этом случае каждый получит скорость около 6,7 Мбит/с (20/3).
Но если отец будет качать файл на скорости 4 Мбит/с, а мать на скорости 2 Мбит/с, то сын получит остальные 14 Мбит/с. Т.е. скорость распределится пропорционально загрузке.
Добавим правило с ограничением скорости.
- Откройте меню Queues.
- Перейдите на вкладку SimpleQueues.
- Нажмите синий плюсик.
- На вкладке General в поле Name укажите название правила queue-limit.
- В поле Target укажите IP адрес подсети 192.168.88.0/24. Если адрес вашей подсети отличается, то укажите необходимый.
- В поле Max Limit в колонке Target Upload укажите максимальную скорость отдачи 18M (18 Мбит/с), которую мы выделяем на всю подсеть.
Значение Max Limit нужно указывать на 5-10% меньше, чем скорость интернета. Если ваша скорость интернета равна 20 Мбит/с, то значение Max Limit нужно указать 18 Мбит/с, чтобы правила сработали. Иначе скорость будет упираться в шейпер провайдера и правила не будут срабатывать. - В поле Max Limit в колонке Target Download укажите максимальную скорость загрузки 18M (18 Мбит/с), которую мы выделяем на всю подсеть.
Теперь запустите закачки на компьютерах в сети и посмотрите, как будет распределяться скорость.
Данный способ настройки очень простой, но имеет один недостаток. Если сын включит закачку торрентов, то на его компьютере станут плохо открываться интернет странички или будут задержки в онлайн играх. Чтобы это не происходило, необходимо трафику присваивать различные приоритеты. Например, интернет страничкам и онлайн играм дать более высокий приоритет, чем закачке файлов. Как это сделать, читайте ниже.
Распределение скорости интернета поровну с приоритезацией трафика
Этот способ позволит распределить интернет поровну между всеми пользователями, и дать более высокий приоритет для просмотра интернет страничек, Youtube, ICQ и других сервисов. Поэтому они не будут тормозить, даже если вы поставили на закачку торренты.
Весь трафик разделим по приоритетам на 4 группы:
- LOW — низкий (торренты, p2p и т.д.)
- NORMAL — нормальный (интернет странички (HTTP), видео на Youtube (HTTPS) и т.д.)
- HIGH — высокий (ICQ, Jabber, SSH, Telnet и т.д.)
- SUPER-HIGH — очень высокий (онлайн-игра Counter Strike, DNS, PING и т.д.)
Алгоритм работы будет такой:
- Маркируем все неизвестные соединения LOW.
- В соединениях пакеты на загрузку помечаем LOW-DOWNLOAD
- В соединениях пакеты на отдачу помечаем LOW-UPLOAD.
- Известные соединения маркируем в зависимости от сервиса: NORMAL, HIGH или SUPER-HIGH.
- В соединениях пакеты на загрузку помечаем NORMAL-DOWNLOAD, HIGH-DOWNLOAD или SUPER-HIGH DOWNLOAD.
- В соединениях пакеты на отдачу помечаем NORMAL-UPLOAD, HIGH-UPLOAD или SUPER-HIGH-UPLOAD.
- Создаем PCQ очереди, которые позволят равномерно делить скорость между всеми пользователями. Мы их будем использовать в правилах ограничения скорости.
- Создаем правила ограничения скорости в дереве Queue Tree.
В правилах используем помеченные пакеты, которым задаем приоритет и PCQ очереди.
Максимальную скорость указываем с помощью родителей DOWNLOAD — 18Мбит/с и UPLOAD — 18Мбит/с.
Помеченным пакетам присваиваем следующие приоритеты:
- DOWNLOAD — 18M
- SUPER-HIGH-DOWNLOAD — приоритет 1
- HIGH-DOWNLOAD — приоритет 2
- NORMAL-DOWNLOAD — приоритет 3
- LOW-DOWNLOAD — приоритет 4
- SUPER-HIGH-UPLOAD — приоритет 1
- HIGH-UPLOAD — приоритет 2
- NORMAL-UPLOAD — приоритет 3
- LOW-UPLOAD — приоритет 4
Приступим к настройке.
Добавим пару Layer7 наборов для определения http трафика.
Данные наборы анализируют трафик, пытаются найти в нем указанные последовательности и определить, что это http трафик, gif файл, png файл или jpg файл.
Откройте меню New Terminal и выполните следующие команды:
/ip firewall layer7-protocol
add name=HTTP regexp="http/(0\\.9|1\\.0|1\\.1) [1-5][0-9][0-9]|post [\\x09-\\x0d —
add name=GIF_FILE regexp=gif
add name=PNG_FILE regexp=png
add name=JPG_FILE regexp=jpg
Для определения HTTP трафика я специально не маркирую трафик на 80 порту, а применяю Layer7, поскольку кроме браузера другие программы могут использовать 80-й порт. Если маркировать трафик по 80 порту, то все получат одинаковый приоритет, и интернет странички не будут быстро грузиться.
Много наборов Layer7 лучше не использовать, т.к. они существенно нагружают роутер.
В меню IP — Firewall на вкладке Layer7 Protocols отобразятся добавленные типы трафика.
По умолчанию промаркируем весь незнакомый трафик, как низкий — LOW.
/ip firewall mangle
add action=accept chain=forward comment="############## LOW #############" disabled=yes
add action=mark-connection chain=forward comment=ALL-TRAFFIC disabled=no new-connection-mark=LOW passthrough=yes
add action=mark-packet chain=forward comment=LOW-DOWNLOAD connection-mark=LOW disabled=no dst-address-list=LAN new-packet-mark=LOW-DOWNLOAD passthrough=yes src-address-list=!LAN-EXCEPTION
add action=mark-packet chain=prerouting comment=LOW-UPLOAD connection-mark=LOW disabled=no dst-address-list=!LAN-EXCEPTION new-packet-mark=LOW-UPLOAD passthrough=yes src-address-list=LAN
add action=accept chain=forward comment="############## END LOW #########" disabled=yes
Добавим маркировку трафика NORMAL.
/ip firewall mangle
add action=accept chain=forward comment="############## NORMAL #########" disabled=yes
add action=mark-connection chain=forward comment=HTTP disabled=no layer7-protocol=HTTP new-connection-mark=NORMAL passthrough=yes protocol=tcp
add action=mark-connection chain=forward comment=HTTPS disabled=no port=443 new-connection-mark=NORMAL passthrough=yes protocol=tcp
add action=mark-connection chain=forward comment=Proxy disabled=no port=3128,8080 new-connection-mark=NORMAL passthrough=yes protocol=tcp
add action=mark-connection chain=forward comment=FTP disabled=no port=20,21 new-connection-mark=NORMAL passthrough=yes protocol=tcp
add action=mark-connection chain=forward comment=SMTP disabled=no port=25 new-connection-mark=NORMAL passthrough=yes protocol=tcp
add action=mark-connection chain=forward comment=SMTPS disabled=no port=465 new-connection-mark=NORMAL passthrough=yes protocol=tcp
add action=mark-connection chain=forward comment=IMAP disabled=no port=143 new-connection-mark=NORMAL passthrough=yes protocol=tcp
add action=mark-connection chain=forward comment=POP3 disabled=no port=110 new-connection-mark=NORMAL passthrough=yes protocol=tcp
add action=mark-connection chain=forward comment=POP3S disabled=no port=995 new-connection-mark=NORMAL passthrough=yes protocol=tcp
add action=mark-connection chain=forward comment=IMAPS disabled=no port=993 new-connection-mark=NORMAL passthrough=yes protocol=tcp
add action=mark-connection chain=forward comment=GIF_FILE disabled=no layer7-protocol=GIF_FILE new-connection-mark=NORMAL passthrough=yes
add action=mark-connection chain=forward comment=PNG_FILE disabled=no layer7-protocol=PNG_FILE new-connection-mark=NORMAL passthrough=yes
add action=mark-connection chain=forward comment=JPG_FILE disabled=no layer7-protocol=JPG_FILE new-connection-mark=NORMAL passthrough=yes
add action=mark-connection chain=forward comment="100Kb Connections" connection-bytes=0-100000 disabled=no new-connection-mark=NORMAL passthrough=yes protocol=tcp
add action=mark-packet chain=forward comment=NORMAL-DOWNLOAD connection-mark=NORMAL disabled=no dst-address-list=LAN new-packet-mark=NORMAL-DOWNLOAD passthrough=yes src-address-list=!LAN-EXCEPTION
add action=mark-packet chain=prerouting comment=NORMAL-UPLOAD connection-mark=NORMAL disabled=no dst-address-list=!LAN-EXCEPTION new-packet-mark=NORMAL-UPLOAD passthrough=yes src-address-list=LAN
add action=accept chain=forward comment="############## END NORMAL ############" disabled=yes
Добавим маркировку трафика HIGH:
/ip firewall mangle
add action=accept chain=forward comment="############## HIGH ############" disabled=yes
add action=mark-connection chain=forward comment=ICQ disabled=no port=5190 new-connection-mark=HIGH passthrough=yes protocol=tcp
add action=mark-connection chain=forward comment=Jabber disabled=no port=5222,5223 new-connection-mark=HIGH passthrough=yes protocol=tcp
add action=mark-connection chain=forward comment=IRC disabled=no port=6667-6669 new-connection-mark=HIGH passthrough=yes protocol=tcp
add action=mark-connection chain=forward comment=SSH disabled=no port=22 new-connection-mark=HIGH packet-size=0-1400 passthrough=yes protocol=tcp
add action=mark-connection chain=forward comment=TELNET disabled=no port=23 new-connection-mark=HIGH passthrough=yes protocol=tcp
add action=mark-connection chain=forward comment=SNMP disabled=no port=161-162 new-connection-mark=HIGH passthrough=yes protocol=tcp
add action=mark-connection chain=forward comment=PPTP disabled=no port=1723 new-connection-mark=HIGH passthrough=yes protocol=tcp
add action=mark-connection chain=forward comment=L2TP disabled=no port=1701 new-connection-mark=HIGH passthrough=yes protocol=udp
add action=mark-connection chain=forward comment=GRE disabled=no new-connection-mark=HIGH passthrough=yes protocol=gre
add action=mark-connection chain=forward comment="50Kb Connections" connection-bytes=0-50000 disabled=no new-connection-mark=HIGH passthrough=yes protocol=tcp
add action=mark-packet chain=forward comment=HIGH-DOWNLOAD connection-mark=HIGH disabled=no dst-address-list=LAN new-packet-mark=HIGH-DOWNLOAD passthrough=yes src-address-list=!LAN-EXCEPTION
add action=mark-packet chain=prerouting comment=HIGH-UPLOAD connection-mark=HIGH disabled=no dst-address-list=!LAN-EXCEPTION new-packet-mark=HIGH-UPLOAD passthrough=yes src-address-list=LAN
add action=accept chain=forward comment="############## END HIGH ##########" disabled=yes
Добавим маркировку трафика SUPER-HIGH:
/ip firewall mangle
add action=accept chain=forward comment="############## SUPER-HIGH ##########" disabled=yes
add action=mark-connection chain=forward comment=CounterStrike disabled=no port=27005,27014-27025,27035,52046-52048,52146 new-connection-mark=SUPER-HIGH passthrough=yes protocol=udp
add action=mark-connection chain=forward comment=DNS disabled=no port=53 new-connection-mark=SUPER-HIGH passthrough=yes protocol=tcp src-port=53
add action=mark-connection chain=forward comment=DNS disabled=no port=53 new-connection-mark=SUPER-HIGH passthrough=yes protocol=tcp
add action=mark-connection chain=forward comment=DNS disabled=no port=53 new-connection-mark=SUPER-HIGH passthrough=yes protocol=udp
add action=mark-connection chain=forward comment=NNTP disabled=no port=119 new-connection-mark=SUPER-HIGH passthrough=yes protocol=tcp
add action=mark-connection chain=forward comment=Winbox disabled=no port=8291 new-connection-mark=SUPER-HIGH passthrough=yes protocol=tcp
add action=mark-connection chain=forward comment=ntp disabled=no port=123 new-connection-mark=SUPER-HIGH passthrough=yes protocol=udp
add action=mark-connection chain=forward comment=VNC disabled=no port=5900-5901 new-connection-mark=SUPER-HIGH passthrough=yes protocol=tcp
add action=mark-connection chain=forward comment=RDP disabled=no port=3389 new-connection-mark=SUPER-HIGH passthrough=yes protocol=tcp
add action=mark-connection chain=forward comment=PING disabled=no new-connection-mark=SUPER-HIGH passthrough=yes protocol=icmp
add action=mark-connection chain=forward comment="5Kb Connections" connection-bytes=0-5000 disabled=no new-connection-mark=SUPER-HIGH passthrough=yes protocol=tcp
add action=mark-packet chain=forward comment=SUPER-HIGH-DOWNLOAD connection-mark=SUPER-HIGH disabled=no dst-address-list=LAN new-packet-mark=SUPER-HIGH-DOWNLOAD passthrough=yes src-address-list=!LAN-EXCEPTION
add action=mark-packet chain=prerouting comment=SUPER-HIGH-UPLOAD connection-mark=SUPER-HIGH disabled=no dst-address-list=!LAN-EXCEPTION new-packet-mark=SUPER-HIGH-UPLOAD passthrough=yes src-address-list=LAN
add action=accept chain=forward comment="############## END SUPER-HIGH ##########" disabled=yes
Чтобы в онлайн игре CounterStrike не было лагов (запаздываний), я добавил ее порты 27005,27014-27025,27035,52046-52048,52146, протокол udp и пометил соединения, как SUPER-HIGH. Если вам нужно добавить другую онлайн игру, узнайте какие порты и протокол она использует, и добавьте свое правило.
В меню IP — Firewall на вкладке Mangle отобразятся добавленные правила маркировки трафика.
Добавим IP адрес нашей подсети и адреса соседних локальных сетей в список Address List:
address-list add address=192.168.88.0/24 disabled=no list=LAN
address-list add address=192.168.0.0/16 disabled=no list=LAN-EXCEPTION
address-list add address=10.0.0.0/8 disabled=no list=LAN-EXCEPTION
LAN — это список с IP адресами нашей сети 192.168.88.0/24. Укажите другой, если адрес вашей подсети отличается. Этот адрес нужен, чтобы правила маркировали трафик пользователей нашей сети.
LAN-EXCEPTION — список сетей, при обмене данными с которыми не будут работать ограничения скорости.
Например, вы находитесь с другим компьютером в подсети одного провайдера, и хотите скачать с него файл. Ограничивать скорость такой загрузки нет смысла, поскольку компьютер находится не где-то в интернете, а в одной с вами кабельной сети. Поэтому целесообразно, чтобы файл с него качался на максимальной скорости.
192.168.0.0/16 — это адреса локальных подсетей класса С.
10.0.0.0/8 — это подсеть провайдера.Проверьте на вкладке Address Lists, что подсети добавились.
Добавим PCQ очереди на загрузку и отдачу.
Они используют алгоритм PCQ, который позволяет равномерно распределить скорость между всеми пользователями вне зависимости от количества открытых подключений.
add kind=pcq name=PCQ-DOWNLOAD pcq-rate=0 pcq-limit=50 pcq-total-limit=2000 pcq-burst-rate=0 pcq-burst-threshold=0 pcq-burst-time=10s pcq-classifier=dst-address pcq-src-address-mask=32 pcq-dst-address-mask=32 pcq-src-address6-mask=128 pcq-dst-address6-mask=128
add kind=pcq name=PCQ-UPLOAD pcq-rate=0 pcq-limit=50 pcq-total-limit=2000 pcq-burst-rate=0 pcq-burst-threshold=0 pcq-burst-time=10s pcq-classifier=src-address pcq-src-address-mask=32 pcq-dst-address-mask=32 pcq-src-address6-mask=128 pcq-dst-address6-mask=128
Посмотрите созданные очереди в меню Queues на вкладке Queue Types.
Построим дерево Queue Tree и присвоим приоритеты промаркированным пакетам.
- DOWNLOAD — 18M
- SUPER-HIGH-DOWNLOAD — приоритет 1
- HIGH-DOWNLOAD — приоритет 2
- NORMAL-DOWNLOAD — приоритет 3
- LOW-DOWNLOAD — приоритет 4
- SUPER-HIGH-UPLOAD — приоритет 1
- HIGH-UPLOAD — приоритет 2
- NORMAL-UPLOAD — приоритет 3
- LOW-UPLOAD — приоритет 4
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=18M name=DOWNLOAD parent=global priority=8
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=0 name=SUPER-HIGH-DOWNLOAD packet-mark=SUPER-HIGH-DOWNLOAD parent=DOWNLOAD priority=1 queue=PCQ-DOWNLOAD
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=0 name=HIGH-DOWNLOAD packet-mark=HIGH-DOWNLOAD parent=DOWNLOAD priority=2 queue=PCQ-DOWNLOAD
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=0 name=NORMAL-DOWNLOAD packet-mark=NORMAL-DOWNLOAD parent=DOWNLOAD priority=3 queue=PCQ-DOWNLOAD
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=0 name=LOW-DOWNLOAD packet-mark=LOW-DOWNLOAD parent=DOWNLOAD priority=4 queue=PCQ-DOWNLOAD
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=18M name=UPLOAD parent=global priority=8
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=0 name=SUPER-HIGH-UPLOAD packet-mark=SUPER-HIGH-UPLOAD parent=UPLOAD priority=1 queue=PCQ-UPLOAD
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=0 name=HIGH-UPLOAD packet-mark=HIGH-UPLOAD parent=UPLOAD priority=2 queue=PCQ-UPLOAD
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=0 name=NORMAL-UPLOAD packet-mark=NORMAL-UPLOAD parent=UPLOAD priority=3 queue=PCQ-UPLOAD
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=0 name=LOW-UPLOAD packet-mark=LOW-UPLOAD parent=UPLOAD priority=4 queue=PCQ-UPLOAD
max-limit=18M — это максимальная скорость 18 Мбит/с на всю подсеть. Укажите свою скорость.
Значение max-limit нужно указывать на 5-10% меньше, чем скорость интернета. Если ваша скорость интернета равна 20 Мбит/с, то значение max-limit нужно указать 18 Мбит/с, чтобы правила сработали. Иначе скорость будет упираться в шейпер провайдера и правила не будут срабатывать.Посмотрите созданное дерево на вкладке Queue Tree. Здесь видно, с какой скоростью в данный момент передается и принимается каждый вид трафика.
Теперь весь интернет канал будет равномерно распределяться между пользователями, а при запуске торрентов, вы будете комфортно открывать интернет странички в браузере, смотреть видео на Youtube, общаться по ICQ и т.д.
Удаленно настраиваем оборудование. Стоимость.
Vodafone: +38 095 406-06-02
Киевстар: +38 067 675-65-55
Life: +38 093 889-78-96MikroTik.by
For every complex problem, there is a solution that is simple, neat, and wrong.
- Темы без ответов
- Активные темы
- Поиск
- Список форумовФорум по операционной системе MikroTik RouterOSСкрипты
- Поиск
Ограничение пользователя по объему трафика в месяц
Ограничение пользователя по объему трафика в месяц
Сообщение r136a8 » 15 сен 2019, 18:33
У меня вопрос а как настроить планировщик — Sheduler. Когда скрипт должен запускаться? В моем случае я его запустил вручную.
К примеру после перезагрузки микротика его нужно запускать повторно (тогда установить Start time — startup?) или его нужно запускать периодично каждый день? Я правильно понял что все обнуляется после перезагрузки, счетчики и скрипты?
СпасибоRe: Ограничение пользователя по объему трафика в месяц
Сообщение Chupaka » 16 сен 2019, 13:35
Скрипт просто проверяет, сколько трафика прошло через очередь — и меняет настройки очереди, если много Так что запускать каждые N минут. Да, счётчики при перезагрузке сбрасываются. Ну и я бы переписал скрипт в более простой для восприятия форме (с поправками на синтаксис актуальных версий: /32 после адреса и target вместо target-addresses — у вас на какой версии оно работало в таком виде?):
Re: Ограничение пользователя по объему трафика в месяц
Сообщение r136a8 » 16 сен 2019, 14:19
У меня работал на актуальной 6.45.6
Вы имели ввиду вот так (в таком же виде и ничего не добавлять)
https://c.radikal.ru/c08/1909/7b/f12b234e3592.jpgЕсли, к примеру скрипт запускать каждых 30 минут и пользователь использует 3Gb из 4Gb и перезагрузится то все обнулится до 0Gb или скрипт продолжит работу с 3Gb?
Если обнуляется то скрипт актуален только при условии не перезагружатся!Re: Ограничение пользователя по объему трафика в месяц
Сообщение Chupaka » 16 сен 2019, 15:43
Всё обнулится до нуля (ух ).
Встречал где-то давно рекомендации по хранению накопленного трафика в комментариях, дабы не быть зависимыми от перезагрузок, но готового решения показать, увы, не могу.UserManager не поможет?
Re: Ограничение пользователя по объему трафика в месяц
Сообщение Diana » 21 ноя 2020, 13:11
Мда, завязла я даже в этом скрипте.
Нужно ограничить по обьёму подсеть, от 3 до 229 айпишника. Для теста ограничение поставила 100 Мб.
Вписываю скрипт в терминал и шедулер и ничего не меняется.
качает торент на максимальной скорости до упора.
Подскажите что не так ?
версия 6.46
скрин::local traf;
/queue simple
:for i from=3 to= 229 do = <
:if ([/queue simple find target-addresses=(«192.168.5.» . $i)] != «») do= <
:set traf [get [find target-addresses=(«192.168.5.» . $i)] total-bytes]
:if ($traf > 104857600) do = <
set [find target-addresses=(«192.168.5.» . $i)] max-limit= 64000/64000
>
>
>Re: Ограничение пользователя по объему трафика в месяц
Сообщение Chupaka » 21 ноя 2020, 23:10
Re: Ограничение пользователя по объему трафика в месяц
Сообщение Diana » 22 ноя 2020, 10:03
Re: Ограничение пользователя по объему трафика в месяц
Сообщение Chupaka » 23 ноя 2020, 16:01
Re: Ограничение пользователя по объему трафика в месяц
Сообщение Diana » 24 ноя 2020, 13:02
Re: Ограничение пользователя по объему трафика в месяц
Сообщение Chupaka » 24 ноя 2020, 13:06
Ещё раз, скрипт ищет очередь, в которой target=IP/32, проверяет значение total-bytes и при превышении порога задаёт max-limit. От этого и пляшите.
Т.е. если вы вручную можете всё это увидеть и проделать — скрипт будет работать.
Re: Ограничение пользователя по объему трафика в месяц
Сообщение Diana » 24 ноя 2020, 14:14
Re: Ограничение пользователя по объему трафика в месяц
Сообщение Chupaka » 24 ноя 2020, 14:30
Почему не пишет? В первом посте этой темы есть отсылка на статью с описанием, да и свой скрипт вы ведь где-то взяли.
Если вы думаете, что создать IP Address или Simple Queue на роутере может только ас — у меня плохие новости Вы, может, поищите какой базовый курс по MikroTik RouterOS?
Вот простая инструкция, как создать Simple Queue, например (первый попавшийся не сильно сложный пример из Гугла): https://www.technotrade.com.ua/Articles . peed_limit
Если в статистике нужен именно Total Traffic — надо сменить Total Queue Type с default-small на какой-нибудь другой (например, default), без этого очередь не будет считать Total Traffic.
Mikrotik и блокировка интернета с ограничением траффика в день
В данной статье рассмотрим, как можно реализовать блокировку интернета, за исключением доступа к почте и мессенджерам имея в распоряжении только mikrotik роутер. Плюс сделаем ограничение по траффику в день.
Варианты ограничения трафика интернета
Вариантов решений блокировки не так чтобы много, т. к. https и другой шифрованный траффик составляет большую часть интернета, поэтому блокировать по содержимому пакета средствами только mikrotik роутера не выйдет. Вариант с прозрачным прокси по этой же причине отбросим (прокси сервис mikrotik не умеет работать с https, а поднять 3proxy на openwrt не каждый mikrotik сможет). Вариант с единственным dns сервером в сети и разрешением резолвить только разрешённые имена возможен (dns запросы не шифруются, следовательно, можно посмотреть пакет и принять решение), но есть проблема с возможностью достучаться по ip адресу и кэшем dns на устройствах. Последний вариант это белые адрес листы, который и рассмотрим.
Задача — блокировка интернета с ограничением траффика в день
Задача: заблокировать весь интернет за исключением почтовых сервисов mail.ru, gmail.com и mail.yandex.ru через веб и мессенджеров viber и whatsapp через смартфоны.
Выполнение задачи нужно начать с заполнения адрес листов, в которые будут включены ip адреса и сети необходимые для работы требуемых сервисов. Для этого перейдём IP → firewall → address lists и добавляем нужные адреса и сети (можно использовать доменные имена). Например так:
/ip firewall address-list
add address=mail.ru list=whitelist
add address=18.201.5.0/24 comment=»viber voice» list=whitelist
Использование доменных имён позволит избежать проблем, если сервис переедет на другой ip адрес, но как оказалось большие проекты используют множество ip адресов и сетей для работы, поэтому для отлова используем инструмент микротика torch или wireshark, или любой другой подобный инструмент.
После того как адрес листы заполнены можно настроить firewall. Например так:
/ip firewall filter
add action=accept chain=forward comment=»accept established & related » \
add action=accept chain=input connection-state=established,related
add action=accept chain=forward comment=»accept forward white addreses» \
add action=reject chain=input comment=»reject new & invalid connections» \
add action=reject chain=forward connection-state=invalid,new reject-with=\
где первое и второе правила разрешают уже установившиеся соединения для того, что бы снизить нагрузку на роутер; третье правило разрешает устанавливать соединения с хостами из адрес листа; четвёртое и пятое запрещают остальное. Действие reject-with=icmp-host-unreachable нужно, что бы не разрешённое соединение сразу сбрасывалось, а не висело в попытках соединиться, соответственно не висела веб страничка ожидая очередной порции рекламы или другого мусора.
Далее проверяем, смотрим что не работает, ищем torchем, добавляем в адрес листы, готово.
Теперь о количестве траффика. Эту задачу можно решить с помощью скриптов, которые будут опрашивать счётчик rx-byte и tx-byte интерфейса, который смотрит в интернет и включать запрещающее правило в firewall, когда rx-byte+tx-byte достигнет определённого значения. Ничего сложного, но есть один нюанс: при выключении или перезагрузке микротик роутера эти счётчики сбрасываются. Поэтому данные нужно будет переодически писать в энергонезависимую память. Это может быть флеш память в микротике или какой-нибудь внешний диск (usb флешка, например). Флеш память в микротике, как и любая флеш память, имеет ограниченный ресурс на запись, поэтому надо понимать, что слишком часто на неё лучше не писать, что бы не израсходовать весь ресурс флешки в первый же месяц.
Скрипт подсчёта траффика:
global temptx ;\r\
:local rx [/interface get [find name=ether1] rx-byte ] ;
:local tx [/interface get [find name=ether1] tx-byte ] ;
/file set flash/rx.txt contents=((\$rx — \$temprx) + [/file get flash/rx.txt contents]);
/file set flash/tx.txt contents=((\$tx — \$temptx) + [/file get flash/tx.txt contents]);
Скрипт проверки количества траффика и включения запрещающего правила:
Скрипт проверки текущей даты (т. к. лимит выдаётся на день):
:global currentdate [/system clock get date];
:global lastdate [/file get flash/lastdate.txt contents];
Скрипт сброса траффика, прописывания текущей даты в файл и отключения запрещающего правила:
:global currentdate [/system clock get date];
/file set flash/rx.txt contents=»0″;
/file set flash/tx.txt contents=»0″;
/ip firewall filter disable numbers=1;
/file set flash/lastdate.txt contents=$currentdate;»
Запрещающее правило в firewall:
add action=reject chain=forward reject-with=icmp-host-unreachable
Чем чаще вызывается первый скрипт тем точнее работает ограничение траффика и там меньше живёт флешка. В случае, когда перезагрузка роутера редкость, то лучше отказаться от записи в файл.
По всем остальным вопросам касающимся установки, аппаратуры и оплаты вы можете обратиться к нам, нажав на кнопку «позвоните мне», о списке и стоимости услуг вы можете прочитать здесь.
Также на нашем сайте представлены другие виды работ, которые могут быть интересны.
Mikrotik как ограничить объем трафика
Ограничение пользователей по объему трафика в месяц, с использованием простых очередей
Довольно часто в практике использования маршрутизаторов Микротик возникает вопрос об ограничении пользователей по объему трафика, в какой-то определенный период времени. И если с лимитами по скоростям вопросов меньше и настройка проще, то вопрос с объемом часто ставит в тупик.
Непосредственно на сайте Mikrotik, есть замечательный и простой пример, который позволяет расширить ваши познания в области применения RouterOS и лишний раз демонстрирует гибкость, которую дает данная операционная система.
Итак, рассмотрим следующую ситуацию:
Прежде, чем переходить к решению поставленной задачи примем следующие условия:
Для начала нам необходимо создать скрипт, который будет проверять объем трафика, подсчитываемого в простых очередях у клиентов:
System → Scripts — нажмем «плюс».В поле Name введем название нашего скрипта, например Traff_Limit_4Gb.
В поле Source введем следующий скрипт (скопируйте приведенный ниже код и вставьте его в поле Source):
Данный код скрипта (как видно из значения i — изменяющегося от 17 до 28) предназначен для диапазона IP-адресов 192.168.15.17-192.168.15.28. Т.к. нам необходимо ограничить еще адреса 192.168.15.35 и 192.168.15.67 — то создадим еще по одному скрипту на каждый IP-адрес:
для 192.168.15.35 (в поле Name введем название скрипта, Traff_Limit_4Gb_IP35):
для 192.168.15.67 (в поле Name введем название скрипта, Traff_Limit_4Gb_IP67):
В результате в списке должно появится три скрипта:
Теперь нам необходимо заставить наши скрипты выполнятся, в этом нам на помощь придет планировщик — Sheduler
Mikrotik: Ограничение скорости скачивания для определенных IP-адресов
Предыстория: имеем Интернет-соединение со скоростью «до 50 Мбит/с», имеющее «фичу» разгоняться до 100 если канал свободен. Пользуясь облачным хранилищем заметил проблему, что выгрузив или загрузив около 50-100 файлов клиент для работы с облаком «зависает» и либо качает файлы на крайне низкой скорости (порядка 50-200 Кбит/с), либо вообще «молчит». При этом, сайты в браузере открываются без всяких проблем.
Как такое может быть? Ограничение ширины канала по определенным IP-адресам при скачке за определенный промежуток времени.
Для тех, кто хочет подробнее узнать об этом или вовсе новичок, увидевший возможное решение своей проблемы, добро пожаловать под кат.
В просторах сети было найдено множество статей на подобную тематику, только все они предлагали распределение скорости между пользователями по приоритету (интернет-страницы с высоким, потоковое видео ниже и самый низкий приоритет у p2p-систем).
Итак, для начала теория. Провайдер отслеживает все «скачки» скорости и количество обращений к ресурсам, выдавая ограничение на превышающие их показатели предел. Узнать его не получится — это закрытая информация провайдера. Но как же скачивать и заливать по 1к+ файлов в облако, не получая за это временный «бан» на доступ к ресурсу? Легко!
Алгоритм действий будет таков:
- Создаем список IP-адресов, для которых нужно включить ограничение скорости;
- Организовать маркировку пакетов, идущих на и с ресурсов списка;
- Задать ограничение скорости по требуемым ресурсам при помощи очередей.
Приступим к настройке
Шаг 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
Шаг 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.
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.
Шаг 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
MEGA-download:
- Name — MEGA-download
- Parent — global
- Packet Marks — MEGA-download (выбираем из списка)
- Queue Type — default-small
- Priority — 8
- Bucket Size — 0.100
- Max Limit — 25M
Всё. Теперь при синхронизации облачного хранилища на вход и выход скорость не поднимется больше 25 Мбит/с и, тем самым, устранили вероятность получения временного бана от провайдера.
PS.: Таким образом можно ограничивать скорость на любые ресурсы.
PPS: Правила ограничений были частично взяты из статьи «Ограничение скорости в MikroTik» и изменены для своих нужд.
PPPS: В статью были добавлены скрипты в текстовом эквиваленте, а также убрано создание PCQ-типов для очередей.
PPPPS: Если кому нужно, ниже представлен скрипт автодобавления IP-адресов из кэша DNS в именованный список. Сразу скажу, что скрипт настроен на работу с несколькими облачными сервисами и добавляет адреса в список с именем «clouds». Если нужно, можете изменить его под себя.
MikroTik.by
For every complex problem, there is a solution that is simple, neat, and wrong.
- Темы без ответов
- Активные темы
- Поиск
- Список форумовФорум по операционной системе MikroTik RouterOSСкрипты
- Поиск
Ограничение пользователя по объему трафика в месяц
Ограничение пользователя по объему трафика в месяц
Сообщение r136a8 » 15 сен 2019, 18:33
У меня вопрос а как настроить планировщик — Sheduler. Когда скрипт должен запускаться? В моем случае я его запустил вручную.
К примеру после перезагрузки микротика его нужно запускать повторно (тогда установить Start time — startup?) или его нужно запускать периодично каждый день? Я правильно понял что все обнуляется после перезагрузки, счетчики и скрипты?
СпасибоRe: Ограничение пользователя по объему трафика в месяц
Сообщение Chupaka » 16 сен 2019, 13:35
Скрипт просто проверяет, сколько трафика прошло через очередь — и меняет настройки очереди, если много Так что запускать каждые N минут. Да, счётчики при перезагрузке сбрасываются. Ну и я бы переписал скрипт в более простой для восприятия форме (с поправками на синтаксис актуальных версий: /32 после адреса и target вместо target-addresses — у вас на какой версии оно работало в таком виде?):
Re: Ограничение пользователя по объему трафика в месяц
Сообщение r136a8 » 16 сен 2019, 14:19
У меня работал на актуальной 6.45.6
Вы имели ввиду вот так (в таком же виде и ничего не добавлять)
https://c.radikal.ru/c08/1909/7b/f12b234e3592.jpgЕсли, к примеру скрипт запускать каждых 30 минут и пользователь использует 3Gb из 4Gb и перезагрузится то все обнулится до 0Gb или скрипт продолжит работу с 3Gb?
Если обнуляется то скрипт актуален только при условии не перезагружатся!Re: Ограничение пользователя по объему трафика в месяц
Сообщение Chupaka » 16 сен 2019, 15:43
Всё обнулится до нуля (ух ).
Встречал где-то давно рекомендации по хранению накопленного трафика в комментариях, дабы не быть зависимыми от перезагрузок, но готового решения показать, увы, не могу.UserManager не поможет?
Re: Ограничение пользователя по объему трафика в месяц
Сообщение Diana » 21 ноя 2020, 13:11
Мда, завязла я даже в этом скрипте.
Нужно ограничить по обьёму подсеть, от 3 до 229 айпишника. Для теста ограничение поставила 100 Мб.
Вписываю скрипт в терминал и шедулер и ничего не меняется.
качает торент на максимальной скорости до упора.
Подскажите что не так ?
версия 6.46
скрин::local traf;
/queue simple
:for i from=3 to= 229 do =
>
>Re: Ограничение пользователя по объему трафика в месяц
Сообщение Chupaka » 21 ноя 2020, 23:10
Re: Ограничение пользователя по объему трафика в месяц
Сообщение Diana » 22 ноя 2020, 10:03
Re: Ограничение пользователя по объему трафика в месяц
Сообщение Chupaka » 23 ноя 2020, 16:01
Re: Ограничение пользователя по объему трафика в месяц
Сообщение Diana » 24 ноя 2020, 13:02
Re: Ограничение пользователя по объему трафика в месяц
Сообщение Chupaka » 24 ноя 2020, 13:06
Ещё раз, скрипт ищет очередь, в которой target=IP/32, проверяет значение total-bytes и при превышении порога задаёт max-limit. От этого и пляшите.
Т.е. если вы вручную можете всё это увидеть и проделать — скрипт будет работать.
Re: Ограничение пользователя по объему трафика в месяц
Сообщение Diana » 24 ноя 2020, 14:14
Re: Ограничение пользователя по объему трафика в месяц
Сообщение Chupaka » 24 ноя 2020, 14:30
Почему не пишет? В первом посте этой темы есть отсылка на статью с описанием, да и свой скрипт вы ведь где-то взяли.
Если вы думаете, что создать IP Address или Simple Queue на роутере может только ас — у меня плохие новости Вы, может, поищите какой базовый курс по MikroTik RouterOS?
Вот простая инструкция, как создать Simple Queue, например (первый попавшийся не сильно сложный пример из Гугла): https://www.technotrade.com.ua/Articles . peed_limit
Если в статистике нужен именно Total Traffic — надо сменить Total Queue Type с default-small на какой-нибудь другой (например, default), без этого очередь не будет считать Total Traffic.
Mikrotik как ограничить объем трафика
Ограничение пользователей по объему трафика в месяц, с использованием простых очередей
Довольно часто в практике использования маршрутизаторов Микротик возникает вопрос об ограничении пользователей по объему трафика, в какой-то определенный период времени. И если с лимитами по скоростям вопросов меньше и настройка проще, то вопрос с объемом часто ставит в тупик.
Непосредственно на сайте Mikrotik, есть замечательный и простой пример, который позволяет расширить ваши познания в области применения RouterOS и лишний раз демонстрирует гибкость, которую дает данная операционная система.
Итак, рассмотрим следующую ситуацию:
Прежде, чем переходить к решению поставленной задачи примем следующие условия:
Для начала нам необходимо создать скрипт, который будет проверять объем трафика, подсчитываемого в простых очередях у клиентов:
System → Scripts — нажмем «плюс».В поле Name введем название нашего скрипта, например Traff_Limit_4Gb.
В поле Source введем следующий скрипт (скопируйте приведенный ниже код и вставьте его в поле Source):
Данный код скрипта (как видно из значения i — изменяющегося от 17 до 28) предназначен для диапазона IP-адресов 192.168.15.17-192.168.15.28. Т.к. нам необходимо ограничить еще адреса 192.168.15.35 и 192.168.15.67 — то создадим еще по одному скрипту на каждый IP-адрес:
для 192.168.15.35 (в поле Name введем название скрипта, Traff_Limit_4Gb_IP35):
для 192.168.15.67 (в поле Name введем название скрипта, Traff_Limit_4Gb_IP67):
В результате в списке должно появится три скрипта:
Теперь нам необходимо заставить наши скрипты выполнятся, в этом нам на помощь придет планировщик — Sheduler
Mikrotik: Ограничение скорости скачивания для определенных IP-адресов
Предыстория: имеем Интернет-соединение со скоростью «до 50 Мбит/с», имеющее «фичу» разгоняться до 100 если канал свободен. Пользуясь облачным хранилищем заметил проблему, что выгрузив или загрузив около 50-100 файлов клиент для работы с облаком «зависает» и либо качает файлы на крайне низкой скорости (порядка 50-200 Кбит/с), либо вообще «молчит». При этом, сайты в браузере открываются без всяких проблем.
Как такое может быть? Ограничение ширины канала по определенным IP-адресам при скачке за определенный промежуток времени.
Для тех, кто хочет подробнее узнать об этом или вовсе новичок, увидевший возможное решение своей проблемы, добро пожаловать под кат.
В просторах сети было найдено множество статей на подобную тематику, только все они предлагали распределение скорости между пользователями по приоритету (интернет-страницы с высоким, потоковое видео ниже и самый низкий приоритет у p2p-систем).
Итак, для начала теория. Провайдер отслеживает все «скачки» скорости и количество обращений к ресурсам, выдавая ограничение на превышающие их показатели предел. Узнать его не получится — это закрытая информация провайдера. Но как же скачивать и заливать по 1к+ файлов в облако, не получая за это временный «бан» на доступ к ресурсу? Легко!
Алгоритм действий будет таков:
- Создаем список IP-адресов, для которых нужно включить ограничение скорости;
- Организовать маркировку пакетов, идущих на и с ресурсов списка;
- Задать ограничение скорости по требуемым ресурсам при помощи очередей.
Приступим к настройке
Шаг 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
Шаг 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.
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.
Шаг 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
MEGA-download:
- Name — MEGA-download
- Parent — global
- Packet Marks — MEGA-download (выбираем из списка)
- Queue Type — default-small
- Priority — 8
- Bucket Size — 0.100
- Max Limit — 25M
Всё. Теперь при синхронизации облачного хранилища на вход и выход скорость не поднимется больше 25 Мбит/с и, тем самым, устранили вероятность получения временного бана от провайдера.
PS.: Таким образом можно ограничивать скорость на любые ресурсы.
PPS: Правила ограничений были частично взяты из статьи «Ограничение скорости в MikroTik» и изменены для своих нужд.
PPPS: В статью были добавлены скрипты в текстовом эквиваленте, а также убрано создание PCQ-типов для очередей.
PPPPS: Если кому нужно, ниже представлен скрипт автодобавления IP-адресов из кэша DNS в именованный список. Сразу скажу, что скрипт настроен на работу с несколькими облачными сервисами и добавляет адреса в список с именем «clouds». Если нужно, можете изменить его под себя.
MikroTik.by
For every complex problem, there is a solution that is simple, neat, and wrong.
- Темы без ответов
- Активные темы
- Поиск
- Список форумовФорум по операционной системе MikroTik RouterOSСкрипты
- Поиск
Ограничение пользователя по объему трафика в месяц
Ограничение пользователя по объему трафика в месяц
Сообщение r136a8 » 15 сен 2019, 18:33
У меня вопрос а как настроить планировщик — Sheduler. Когда скрипт должен запускаться? В моем случае я его запустил вручную.
К примеру после перезагрузки микротика его нужно запускать повторно (тогда установить Start time — startup?) или его нужно запускать периодично каждый день? Я правильно понял что все обнуляется после перезагрузки, счетчики и скрипты?
СпасибоRe: Ограничение пользователя по объему трафика в месяц
Сообщение Chupaka » 16 сен 2019, 13:35
Скрипт просто проверяет, сколько трафика прошло через очередь — и меняет настройки очереди, если много Так что запускать каждые N минут. Да, счётчики при перезагрузке сбрасываются. Ну и я бы переписал скрипт в более простой для восприятия форме (с поправками на синтаксис актуальных версий: /32 после адреса и target вместо target-addresses — у вас на какой версии оно работало в таком виде?):
Re: Ограничение пользователя по объему трафика в месяц
Сообщение r136a8 » 16 сен 2019, 14:19
У меня работал на актуальной 6.45.6
Вы имели ввиду вот так (в таком же виде и ничего не добавлять)
https://c.radikal.ru/c08/1909/7b/f12b234e3592.jpgЕсли, к примеру скрипт запускать каждых 30 минут и пользователь использует 3Gb из 4Gb и перезагрузится то все обнулится до 0Gb или скрипт продолжит работу с 3Gb?
Если обнуляется то скрипт актуален только при условии не перезагружатся!Re: Ограничение пользователя по объему трафика в месяц
Сообщение Chupaka » 16 сен 2019, 15:43
Всё обнулится до нуля (ух ).
Встречал где-то давно рекомендации по хранению накопленного трафика в комментариях, дабы не быть зависимыми от перезагрузок, но готового решения показать, увы, не могу.UserManager не поможет?
Re: Ограничение пользователя по объему трафика в месяц
Сообщение Diana » 21 ноя 2020, 13:11
Мда, завязла я даже в этом скрипте.
Нужно ограничить по обьёму подсеть, от 3 до 229 айпишника. Для теста ограничение поставила 100 Мб.
Вписываю скрипт в терминал и шедулер и ничего не меняется.
качает торент на максимальной скорости до упора.
Подскажите что не так ?
версия 6.46
скрин::local traf;
/queue simple
:for i from=3 to= 229 do =
>
>Re: Ограничение пользователя по объему трафика в месяц
Сообщение Chupaka » 21 ноя 2020, 23:10
Re: Ограничение пользователя по объему трафика в месяц
Сообщение Diana » 22 ноя 2020, 10:03
Re: Ограничение пользователя по объему трафика в месяц
Сообщение Chupaka » 23 ноя 2020, 16:01
Re: Ограничение пользователя по объему трафика в месяц
Сообщение Diana » 24 ноя 2020, 13:02
Re: Ограничение пользователя по объему трафика в месяц
Сообщение Chupaka » 24 ноя 2020, 13:06
Ещё раз, скрипт ищет очередь, в которой target=IP/32, проверяет значение total-bytes и при превышении порога задаёт max-limit. От этого и пляшите.
Т.е. если вы вручную можете всё это увидеть и проделать — скрипт будет работать.
Re: Ограничение пользователя по объему трафика в месяц
Сообщение Diana » 24 ноя 2020, 14:14
Re: Ограничение пользователя по объему трафика в месяц
Сообщение Chupaka » 24 ноя 2020, 14:30
Почему не пишет? В первом посте этой темы есть отсылка на статью с описанием, да и свой скрипт вы ведь где-то взяли.
Если вы думаете, что создать IP Address или Simple Queue на роутере может только ас — у меня плохие новости Вы, может, поищите какой базовый курс по MikroTik RouterOS?
Вот простая инструкция, как создать Simple Queue, например (первый попавшийся не сильно сложный пример из Гугла): https://www.technotrade.com.ua/Articles . peed_limit
Если в статистике нужен именно Total Traffic — надо сменить Total Queue Type с default-small на какой-нибудь другой (например, default), без этого очередь не будет считать Total Traffic.
Ограничение пользователей по объему трафика в месяц, с использованием простых очередей
Довольно часто в практике использования маршрутизаторов Микротик возникает вопрос об ограничении пользователей по объему трафика, в какой-то определенный период времени. И если с лимитами по скоростям вопросов меньше и настройка проще, то вопрос с объемом часто ставит в тупик.
Непосредственно на сайте Mikrotik, есть замечательный и простой пример, который позволяет расширить ваши познания в области применения RouterOS и лишний раз демонстрирует гибкость, которую дает данная операционная система.
Итак, рассмотрим следующую ситуацию:
Прежде, чем переходить к решению поставленной задачи примем следующие условия:
Для начала нам необходимо создать скрипт, который будет проверять объем трафика, подсчитываемого в простых очередях у клиентов:
System → Scripts — нажмем «плюс».В поле Name введем название нашего скрипта, например Traff_Limit_4Gb.
В поле Source введем следующий скрипт (скопируйте приведенный ниже код и вставьте его в поле Source):
Данный код скрипта (как видно из значения i — изменяющегося от 17 до 28) предназначен для диапазона IP-адресов 192.168.15.17-192.168.15.28. Т.к. нам необходимо ограничить еще адреса 192.168.15.35 и 192.168.15.67 — то создадим еще по одному скрипту на каждый IP-адрес:
для 192.168.15.35 (в поле Name введем название скрипта, Traff_Limit_4Gb_IP35):
для 192.168.15.67 (в поле Name введем название скрипта, Traff_Limit_4Gb_IP67):
В результате в списке должно появится три скрипта:
Теперь нам необходимо заставить наши скрипты выполнятся, в этом нам на помощь придет планировщик — Sheduler
MikroTik.by
For every complex problem, there is a solution that is simple, neat, and wrong.
- Темы без ответов
- Активные темы
- Поиск
- Список форумовФорум по операционной системе MikroTik RouterOSСкрипты
- Поиск
Ограничение пользователя по объему трафика в месяц
Ограничение пользователя по объему трафика в месяц
Сообщение r136a8 » 15 сен 2019, 18:33
У меня вопрос а как настроить планировщик — Sheduler. Когда скрипт должен запускаться? В моем случае я его запустил вручную.
К примеру после перезагрузки микротика его нужно запускать повторно (тогда установить Start time — startup?) или его нужно запускать периодично каждый день? Я правильно понял что все обнуляется после перезагрузки, счетчики и скрипты?
СпасибоRe: Ограничение пользователя по объему трафика в месяц
Сообщение Chupaka » 16 сен 2019, 13:35
Скрипт просто проверяет, сколько трафика прошло через очередь — и меняет настройки очереди, если много Так что запускать каждые N минут. Да, счётчики при перезагрузке сбрасываются. Ну и я бы переписал скрипт в более простой для восприятия форме (с поправками на синтаксис актуальных версий: /32 после адреса и target вместо target-addresses — у вас на какой версии оно работало в таком виде?):
Re: Ограничение пользователя по объему трафика в месяц
Сообщение r136a8 » 16 сен 2019, 14:19
У меня работал на актуальной 6.45.6
Вы имели ввиду вот так (в таком же виде и ничего не добавлять)
https://c.radikal.ru/c08/1909/7b/f12b234e3592.jpgЕсли, к примеру скрипт запускать каждых 30 минут и пользователь использует 3Gb из 4Gb и перезагрузится то все обнулится до 0Gb или скрипт продолжит работу с 3Gb?
Если обнуляется то скрипт актуален только при условии не перезагружатся!Re: Ограничение пользователя по объему трафика в месяц
Сообщение Chupaka » 16 сен 2019, 15:43
Всё обнулится до нуля (ух ).
Встречал где-то давно рекомендации по хранению накопленного трафика в комментариях, дабы не быть зависимыми от перезагрузок, но готового решения показать, увы, не могу.UserManager не поможет?
Re: Ограничение пользователя по объему трафика в месяц
Сообщение Diana » 21 ноя 2020, 13:11
Мда, завязла я даже в этом скрипте.
Нужно ограничить по обьёму подсеть, от 3 до 229 айпишника. Для теста ограничение поставила 100 Мб.
Вписываю скрипт в терминал и шедулер и ничего не меняется.
качает торент на максимальной скорости до упора.
Подскажите что не так ?
версия 6.46
скрин::local traf;
/queue simple
:for i from=3 to= 229 do = <
:if ([/queue simple find target-addresses=(«192.168.5.» . $i)] != «») do= <
:set traf [get [find target-addresses=(«192.168.5.» . $i)] total-bytes]
:if ($traf > 104857600) do = <
set [find target-addresses=(«192.168.5.» . $i)] max-limit= 64000/64000
>
>
>Re: Ограничение пользователя по объему трафика в месяц
Сообщение Chupaka » 21 ноя 2020, 23:10
Re: Ограничение пользователя по объему трафика в месяц
Сообщение Diana » 22 ноя 2020, 10:03
Re: Ограничение пользователя по объему трафика в месяц
Сообщение Chupaka » 23 ноя 2020, 16:01
Re: Ограничение пользователя по объему трафика в месяц
Сообщение Diana » 24 ноя 2020, 13:02
Re: Ограничение пользователя по объему трафика в месяц
Сообщение Chupaka » 24 ноя 2020, 13:06
Ещё раз, скрипт ищет очередь, в которой target=IP/32, проверяет значение total-bytes и при превышении порога задаёт max-limit. От этого и пляшите.
Т.е. если вы вручную можете всё это увидеть и проделать — скрипт будет работать.
Re: Ограничение пользователя по объему трафика в месяц
Сообщение Diana » 24 ноя 2020, 14:14
Re: Ограничение пользователя по объему трафика в месяц
Сообщение Chupaka » 24 ноя 2020, 14:30
Почему не пишет? В первом посте этой темы есть отсылка на статью с описанием, да и свой скрипт вы ведь где-то взяли.
Если вы думаете, что создать IP Address или Simple Queue на роутере может только ас — у меня плохие новости Вы, может, поищите какой базовый курс по MikroTik RouterOS?
Вот простая инструкция, как создать Simple Queue, например (первый попавшийся не сильно сложный пример из Гугла): https://www.technotrade.com.ua/Articles . peed_limit
Если в статистике нужен именно Total Traffic — надо сменить Total Queue Type с default-small на какой-нибудь другой (например, default), без этого очередь не будет считать Total Traffic.
Настройка ограничения объема трафика на Mikrotik RBSXTR R11e-LTE
В моих скрижалях есть нашел я нашел одну заметку, о которой стоит написать еще одну краткую опорную статью – настройка ограничения объема трафика на Mikrotik RBSXTR R11e-LTE. Хотя, устройство Mikrotik может быть и другое. И даже не обязательно выполнять настройку ограничения именно для LTE интерфейса. Скрипт, про который я расскажу ниже, можно адаптировать и для Ethernet интерфейса.
Этот скрипт написал не я. Я взял за основу вот это решение и немного его скорректировал.
Описание решения
Есть резернвый канал связи, который использует LTE на устройстве Mikrotik RBSXTR R11e-LTE. Тариф предусматривает определенный объем ежемесячного трафика. Необходимо настроить скрипт, который будет отключать LTE интерфейс по достижении указанного порогового значения.
Звучит достаточно понятно. Приступим к реализации.
Реализация
Как я уже сказал ранее, я взял за основу уже готовое решение и скорректировал его для работы с LTE интерфейсом:
Жирным шрифтом я отметил ключевые моменты в скрипте.
Далее необходимо добавить скрипт в конфигурацию Mikrotik:
А также настроить его запуск в планировщике. Например, запускать его раз в час.
После этого скрипт будет рапортовать в журнал текущий объем израсходованного за месяц трафика и отключать LTE интерфейс при превышении его объема.
Настройка ограничения объема трафика на Mikrotik RBSXTR R11e-LTE завершена.