r1sh Posted March 5, 2019 Posted March 5, 2019 Добрый день. Есть офис, канал 10мб\с, работает 15 человек, в офисе стоит микротик RB2011UIAS-2HND-IN Есть сервер в цоде с RouterOS в виртуалке , канал 100мб\с Между ними ipsec site-to-site В офисе понятное дело, сотрудники что-то качают из интернетов, периодически забивают канал, видимо нынче 10мб\с - это архаизм, но так живём, что поделать. Подскажите, можно ли выделить для трафика ipsec гарантированную скорость 3-4мб\с и приоритет по трафику, а всему остальному трафику "во вне" сделать ограничение в 6-7мб\с ? Заранее благодарен. Вставить ник Quote
r1sh Posted March 5, 2019 Author Posted March 5, 2019 Решил начать с QoS, я так понимаю сначала нужно маркировать трафик в mangle потом в queue задать приоритет для маркированного трафика Нашёл несколько статей: https://wiki.mikrotik.com/wiki/Traffic_Priortization,_RouterOS_QoS_Implemetation https://habr.com/ru/post/330362/ Только в wiki пакеты маркируются в форварде а на хабре в прероутинге, я так понимаю логичнее это делать в пре-роутинге Потом задам для dst.ip определенную ширину канала Вставить ник Quote
maxkst Posted March 5, 2019 Posted March 5, 2019 51 минуту назад, r1sh сказал: Только в wiki пакеты маркируются в форварде а на хабре в прероутинге, я так понимаю логичнее это делать в пре-роутинге А вы и так и так попробуйте, для интереса. Я думаю, это правило одинаково сработает в обоих случаях. Можете поставить одно за другим, если первое будет пропускать дальше, на второе, то второе выловит тот же трафик, и счетчики будут тикать синхронно. Вставить ник Quote
r1sh Posted March 6, 2019 Author Posted March 6, 2019 (edited) 16 часов назад, maxkst сказал: А вы и так и так попробуйте, для интереса. Я думаю, это правило одинаково сработает в обоих случаях. Можете поставить одно за другим, если первое будет пропускать дальше, на второе, то второе выловит тот же трафик, и счетчики будут тикать синхронно. благодарю за ответ) еще пока не понимаю как гарантированно зарезервировать пропускную способность для трафика по VPN. Нашёл статью https://wiki.mikrotik.com/wiki/Tips_and_Tricks_for_Beginners_and_Experienced_Users_of_RouterOS Можно ли это сделать таким способом? /queue simple add max-limit=20M/20M name=GLOBAL target=192.168.88.0/24 add dst=192.168.10.0/24 max-limit=10M/10M name=child1 parent=GLOBAL target=192.168.88.0/24 add name=child2 parent=GLOBAL target=192.168.88.0/24 Я так понимаю, сначала задаётся общий канал потом задаётся канал только для трафика от 192.168.88.0/24 до 192.168.10.0/24 потом задаётся "остальной" канал для 192.168.88.0/24 Edited March 6, 2019 by r1sh Вставить ник Quote
r1sh Posted March 6, 2019 Author Posted March 6, 2019 (edited) У меня эт оне заработало, весь трафик шёл через child1, через child2 ничего не шло, что странно. Сработало вот это, пока смотрю насколько корректно: /queue simple add dst=192.168.10.0/24 limit-at=5M/5M max-limit=20M/20M name=SERVER target=192.168.88.0/24 add max-limit=20M/20M name=TOTAL target=192.168.88.0/24 Я правильно понимаю, что limit-at - означает гарантированную минимальную скорость трафика несмотря на занятость канала? а max-limit - верхний порг Edited March 6, 2019 by r1sh Вставить ник Quote
r1sh Posted March 6, 2019 Author Posted March 6, 2019 В итоге сделал с родителем: add max-limit=20M/20M name=PARENT target=192.168.88.0/24 add dst=192.168.10.0/24 limit-at=10M/10M max-limit=20M/20M name=to_servers parent=PARENT target=192.168.88.0/24 add max-limit=20M/20M name=to_all parent=PARENT queue=pcq-burst-upload/pcq-burst-download target=192.168.88.0/24 Вставить ник Quote
r1sh Posted March 6, 2019 Author Posted March 6, 2019 Теперь дошёл до QoS. Сначала я маркирую подключения, потом маркирую пакеты. И по маркировке пакетов уже выставляю и приоритет: /ip firewall mangle add action=mark-connection chain=prerouting comment="Mark To Server" dst-address-list=SERVERS dst-port=1541,1560-1590,3389,9100,139,445,22 new-connection-mark=servers_1C passthrough=yes protocol=tcp src-address=192.168.33.0/24 tcp-flags="" add action=mark-connection chain=prerouting dst-address-list=SERVERS dst-port=1541,1560-1590 new-connection-mark=servers_1C passthrough=yes protocol=udp src-address=192.168.33.0/24 add action=mark-packet chain=prerouting connection-mark=servers_1C new-packet-mark=servers_1C_pck passthrough=yes /queue simple add max-limit=10M/10M name=PARENT target=192.168.33.0/24 add name=Mark_Servers_1C packet-marks=servers_1C_pck parent=PARENT priority=2/2 target=192.168.33.0/2 add dst=192.168.10.0/24 limit-at=5M/5M max-limit=10M/10M name=to_servers parent=PARENT target=192.168.33.0/24 add max-limit=7M/7M name=to_all parent=PARENT queue=pcq-burst-upload/pcq-burst-download target=192.168.33.0/24 Но при этом в графе Traffic в свойствах очереди Mark_Servers_1C нет ни одного пакета. Что я делаю не так?) Вставить ник Quote
maxkst Posted March 6, 2019 Posted March 6, 2019 @r1sh остался последний штрих: надо было так: aaaaaaaa сделал все так: bbbbbbbb, и все работает как часы, забирайте кому надо :-) Вставить ник Quote
r1sh Posted March 7, 2019 Author Posted March 7, 2019 (edited) 14 часов назад, maxkst сказал: @r1sh остался последний штрих: надо было так: aaaaaaaa сделал все так: bbbbbbbb, и все работает как часы, забирайте кому надо :-) Разобраться-разобрался но есть проблема)) Я в итоге пришёл к маркировке пакетов в Mangle и использованию tree. Но я столкнулся со следующей проблемой: Вmangle я маркирую исходящий трафик на 80 и 443 порт: add action=mark-connection chain=prerouting comment="Mark Web browser" dst-port=80,443 new-connection-mark=outside_web passthrough=yes protocol=tcp tcp-flags="" add action=mark-connection chain=prerouting dst-port=80,443 new-connection-mark=outside_web passthrough=yes protocol=udp tcp-flags="" add action=mark-connection chain=forward dst-port=80,443 new-connection-mark=outside_web passthrough=yes protocol=tcp tcp-flags="" add action=mark-connection chain=forward dst-port=80,443 new-connection-mark=outside_web passthrough=yes protocol=udp tcp-flags="" add action=mark-packet chain=prerouting connection-mark=outside_web new-packet-mark=outside_web_pck passthrough=no При этом я решил отловить трафик, который никак не промаркирован: add action=mark-packet chain=forward comment="All other" log=yes log-prefix=UNMARKED new-packet-mark=no_mark out-interface=ether1 packet-mark=no-mark passthrough=no src-address=192.168.33.0/24 В tree я создал родителя и два правила для трафика 80,443 и unmarked: /queue tree add max-limit=10M name="Total - rx" parent=global add name="Browser - rx" packet-mark=outside_web_pck parent="Total - rx" add name="Umarked - rx" packet-mark=no-mark parent="Total - rx" Но при этом я вижу в логе что пакеты на 443 порт не промаркированы: 11:01:00 firewall,info UNMARKED forward: in:bridge out:ether1, src-mac ac:9e:17:2f:83:18, proto TCP (ACK,FIN), 192.168.33.45:63200->78.46.57.120:443, len 40 11:01:00 firewall,info UNMARKED forward: in:bridge out:ether1, src-mac ac:9e:17:2f:83:18, proto TCP (ACK,RST), 192.168.33.45:63200->78.46.57.120:443, len 40 11:01:01 firewall,info UNMARKED forward: in:bridge out:ether1, src-mac 3c:2c:30:9e:e8:49, proto TCP (ACK,RST), 192.168.33.30:51957->138.201.36.251:80, len 40 11:01:01 firewall,info UNMARKED forward: in:bridge out:ether1, src-mac 3c:2c:30:9e:e8:49, proto TCP (ACK,RST), 192.168.33.30:51968->82.202.213.163:80, len 40 Подскажите, почему? Edited March 7, 2019 by r1sh Вставить ник Quote
r1sh Posted March 7, 2019 Author Posted March 7, 2019 (edited) Обратил внимание, что пакеты TCP SYN маркируются а пакеты TCP с двумя флагами: ACK и FIN или ACK и RST. Edited March 7, 2019 by r1sh Вставить ник Quote
McSea Posted March 7, 2019 Posted March 7, 2019 А если в логирующее правило добавить "connection-state=!invalid", будут пакеты попадать под него ? Вставить ник Quote
r1sh Posted March 7, 2019 Author Posted March 7, 2019 (edited) 2 часа назад, McSea сказал: А если в логирующее правило добавить "connection-state=!invalid", будут пакеты попадать под него ? О, спасибо за поправку, теперь пакеты не попадают под него:) Вернее как, в ветке forward не попадают а в ветке prerouting попадают: 16:25:49 firewall,info UNMARKED prerouting: in:bridge out:(unknown 0), src-mac e0:d5:5e:4c:70:5e, proto TCP (ACK), 192.168.33.39:60923->151.236.74.7:443, NAT (192.168.33.39:60923->213.33.252.110:60923)->151.236.74.7:443, len 40 16:25:49 firewall,info UNMARKED prerouting: in:bridge out:(unknown 0), src-mac e0:d5:5e:4c:70:5e, proto TCP (ACK), 192.168.33.39:60923->151.236.74.7:443, NAT (192.168.33.39:60923->213.33.252.110:60923)->151.236.74.7:443, len 40 Я собственно почему начал исследовать это правило: я создал дерево, ограничил ширину канала для unmarked трафика до 1мб\с и мне начали жаловаться, что интернет тормозит, браузер сайты не открывает и тд и тп. При этом обьём данных, прошедший по маркировке Browsing - 2.3Гб, а по unmarked - 2.6Гб за сегодняшний день. Edited March 7, 2019 by r1sh Вставить ник Quote
r1sh Posted March 11, 2019 Author Posted March 11, 2019 (edited) В 07.03.2019 в 17:28, McSea сказал: @r1sh А fasttrack у вас включен ? вот это первое, что я проверил - нет, выключен Edited March 11, 2019 by r1sh Вставить ник Quote
Saab95 Posted March 11, 2019 Posted March 11, 2019 Если вы хотите ограничить интернет для абонентов на 6-7, так сделайте одно правило тип PCQ с большим буфером, и укажите общее ограничение 6-7. Тогда остальные 4-3 от канала останутся на туннель. Вот и все дела. Пользователи внутри своего ограничения сами равномерно распределят трафик. Но нужно понимать, что есть у вас входящий канал 10М, то потребление 6 + 4 это будет уже больше чем 10М, и тогда нужно делать ограничение для пользователей в виде 5М, если туннель потребляет 4М, что бы со стороны провайдера не попасть под его шейпер. Вставить ник Quote
r1sh Posted March 11, 2019 Author Posted March 11, 2019 20 минут назад, Saab95 сказал: Если вы хотите ограничить интернет для абонентов на 6-7, так сделайте одно правило тип PCQ с большим буфером, и укажите общее ограничение 6-7. Тогда остальные 4-3 от канала останутся на туннель. Вот и все дела. Пользователи внутри своего ограничения сами равномерно распределят трафик. Но нужно понимать, что есть у вас входящий канал 10М, то потребление 6 + 4 это будет уже больше чем 10М, и тогда нужно делать ограничение для пользователей в виде 5М, если туннель потребляет 4М, что бы со стороны провайдера не попасть под его шейпер. пользователей 20шт, в дальнейшем будет 30-35, понятное дело под 30-35 юзеров будем расширять канал, но проблема всё равно останется. PCQ я изначально делал, но это не работает, потому что когда два пользователя, например один пользователь занял 5-6мб\с, при этом кто-то звонит по IP телефонии и кто=то другой работает в 1С, еще директор запустил программу просмотра Видеонаблюдения с камер кто-то начал скачивать документацию под 200-300 метров с сервера по vpn туннелю и у пользователей начинаются "подтормаживания" как они выражаются. Я предположил что это связано с приоритетом обработки трафика. Чтобы торренты и браузеры обрабатывались в последнюю очередь а звук и rdp трафик в первую, после рабочего трафика типа icmp, snmp и winbox с ssh. Канал давно бы расширили, но в БЦ провайдер-монополист с конскими ценами на опту - 15к за 10мб\с По этому прежде чем расширять канал я решил собрать инфу о том какой тип трафика сколько потребляет от общей полосы и исходя из этого уже действовать дальше Вставить ник Quote
Saab95 Posted March 11, 2019 Posted March 11, 2019 Если PCQ действительно настроен и работает, при этом максимальная скорость установлена ниже максимальной входящей (допустим у вас тариф 10М, если все пользователи включат свои закачки и сайты, то у оператора на вашем порту окажется 11-12, а временами и 13 мегабит трафика, при этом лишнее он обрежет, и у ваших потребителей пойдут дропы и переповторы, что еще более ограничит реальную входящую скорость), тогда работать приоритеты будут так: 1. Вася качает торрент на скорости 10М. 2. Петя открывает сайт, нажав на ссылку, при этом загрузка сайта потребует 3М скорости. Вася как качал, так и качает на 10М, а Пети выделяется поток внутри общего ограничения и в его сторону начинают идти данные. Через 5 секунд Вася будет качать торренты уже на скорости 7М, а Петя загружать сайт на скорости 3М. То есть любое действие при ограничении PCQ будет требовать 1-2-3 секунды на раскачку, пока потоки данных не устаканятся. А приоритеты по портам и протоколам сейчас не очень работают, т.к. все уже в курсе про приоритеты и их приложения лезут там, где больше скорость. Вставить ник Quote
r1sh Posted March 11, 2019 Author Posted March 11, 2019 1 час назад, Saab95 сказал: Если PCQ действительно настроен и работает, при этом максимальная скорость установлена ниже максимальной входящей (допустим у вас тариф 10М, если все пользователи включат свои закачки и сайты, то у оператора на вашем порту окажется 11-12, а временами и 13 мегабит трафика, при этом лишнее он обрежет, и у ваших потребителей пойдут дропы и переповторы, что еще более ограничит реальную входящую скорость), тогда работать приоритеты будут так: 1. Вася качает торрент на скорости 10М. 2. Петя открывает сайт, нажав на ссылку, при этом загрузка сайта потребует 3М скорости. Вася как качал, так и качает на 10М, а Пети выделяется поток внутри общего ограничения и в его сторону начинают идти данные. Через 5 секунд Вася будет качать торренты уже на скорости 7М, а Петя загружать сайт на скорости 3М. То есть любое действие при ограничении PCQ будет требовать 1-2-3 секунды на раскачку, пока потоки данных не устаканятся. А приоритеты по портам и протоколам сейчас не очень работают, т.к. все уже в курсе про приоритеты и их приложения лезут там, где больше скорость. Звучит здраво, подскажите где можно почитать про грамотную реализацию PCQ? А если например 10 пользователей работают по Rdp и качают какие-то легкие Excel файлы на шару, допустим им нужно на всех вместе 4-5мб\с, плюс полоса под voip, допустим 0.5Мб\с , стабильно 1мб\с смотрит директор видеорегистратор а все остальное можно делить между торрентами и браузерами сотрудников. Т.е. важно не то чтобы у каждого была своя полоса, а чтобы она была в первую очередь на rdp и voip, а потом на всё остальное. А то сотрудник поставит качаться файл с яндекс-диска, попробует по rdp поработать, у него забита его полоса - он начнёт жаловаться мол так и так не могу работать, плохой интернет, такое может быть? Вставить ник Quote
McSea Posted March 11, 2019 Posted March 11, 2019 (edited) @r1sh Вы в правиле отлова немаркированных пакетов опять маркировку делаете, зачем ? Есть action=log для этого. Сделал такие три правила у себя, все пакеты маркируются, лог пустой. add action=mark-connection chain=forward connection-mark=no-mark dst-port=80,8080,443 new-connection-mark=out_web out-interface=pppoe passthrough=no protocol=tcp add action=mark-packet chain=forward connection-mark=out_web new-packet-mark=out_web out-interface=pppoe passthrough=yes add action=log chain=forward connection-state=!invalid dst-port=80,8080,443 log=yes log-prefix=OUT_WEB_UN out-interface=pppoe packet-mark=no-mark protocol=tcp Без условия !invalid будут попадать пакеты, которые не относятся ни к какому connection, что логично, т.к. маркировка пакетов идет по connection, таких пакетов не должно быть много. Edited March 11, 2019 by McSea Вставить ник Quote
Saab95 Posted March 12, 2019 Posted March 12, 2019 А у рдп или телефонии нет некого внешнего IP, на который соединения устанавливаются? Тогда можно не порты и типы вылавливать, а соединения по этому направлению. Вставить ник Quote
r1sh Posted March 13, 2019 Author Posted March 13, 2019 В 12.03.2019 в 10:13, Saab95 сказал: А у рдп или телефонии нет некого внешнего IP, на который соединения устанавливаются? Тогда можно не порты и типы вылавливать, а соединения по этому направлению. у рдп есть локальный IP, между офисами ipsec туннели телефонию телефонисты тоже завернули через ipsec хотя сервак смотрит наружу с белым IP x_X Вставить ник Quote
r1sh Posted March 25, 2019 Author Posted March 25, 2019 всем спасибо!) с проблемой разобрался) Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.