Quality of Service (QoS) это комплекс мер по обеспечению качества обслуживания компьютерной сети, который можно характеризовать несколькими параметрами:
# Полоса пропускания (Bandwidth).
# Задержка при передаче пакета (Delay).
# Колебания (дрожание) задержки при передаче пакетов — джиттер (Jitter).
# Потеря пакетов (Packet loss).
В следующих примерах я продемонстрирую как организовать простой механизм ограничения скорости, используя MikroTik Router OS.
Придумаем виртуальную схему сети и создадим конфигурацию роутера для нее.
Итак, два филиала, в филиале А находится несколько рабочих мест, почтовый сервер и web сервер, роутер этого филиала подключен одновременно к двум провайдерам, провайдер ISP1 предоставляет 100Мб внутри своей сети, внутренний трафик не тарифицируется, второй провайдер ISP2 предоставляет безлимитный доступ к сети Internet. В филиале В находится терминальный сервер, этот филиал так же подключен к провайдеру ISP1.
Вся дальнейшая настройка будет делаться для роутера филиала А.
В этой статье дается описание настройки ограничения по скорости доступа все остальные настройки можно найти в предыдущих статьях.
Необходимо:
- Работа по каналу провайдера ISP2
- Ограничить скорость доступа офисным машинам к сети Internet:
- Машины 192.168.1.10-192.168.1.15 - Download = 64kb/s, Upload = 32kb/s
- Машина 192.168.1.20 - Download = 256kb/s, Upload = 128kb/s
- Ограничить скорость доступа почтового сервера - Donwload = 1Mb/s, Upload = 1Mb/s
- Ограничить скорость доступа web сервера - Download = 1Mb/s, Upload = 4Mb/s
- Работа по каналу провайдера IPS1
- Ограничить скорость доступа офисным машинам 192.168.1.10-192.168.1.15 до уровня, достаточного для работы с 1-2 одновременными терминальными сеансами (RDP) - 1Mb/s
- Ограничить скорость доступа машины 192.168.1.20 до 10Mb/s
- Ограничить скорость доступа серверов до 10Mb/s
Т.к. оговорено, что провайдер IPS1 предоставляет доступ ко внутренней сети, то известна подсеть, которую будут использовать филиалы для совместной работы.
Первым шагом создадим правила для серверов.
[mkt@MikroTik] > queue simple add name="mail to branch" target-addresses=192.168.1.2
dst-address=195.82.111.0/24 interface=ISP1 max-limit=10000000/10000000
target-addresses - адрес, который ограничиваем.dst-address - назначение, в нашем случае это подсеть внутри провайдера.
interface - интрефес, через который буду проходить пакеты от target-addresses к dst-address.
max-limit - значение максимальной скорости (target upload/download)
Теперь тоже, но для веб сервера и 192.168.1.20.
[mkt@MikroTik] > queue simple add name="web to branch" target-addresses=192.168.1.3
dst-address=195.82.111.0/24 interface=ISP1 max-limit=10000000/10000000
[mkt@MikroTik] > queue simple add name="192.168.1.20 to branch"
target-addresses=192.168.1.20 dst-address=195.82.111.0/24 interface=ISP1
max-limit=10000000/10000000
Значение name должно быть уникальным!
Теперь правило для машин 192.168.1.10-192.168.1.15.
[mkt@MikroTik] > queue simple add name="192.168.1.10-15 to branch"
target-addresses=192.168.1.10,192.168.1.11,192.168.1.12,192.168.1.13,192.168.1.14,
192.168.1.15 dst-address=195.82.111.0/24 interface=ISP1 max-limit=1000000/1000000
В target-addresses можно указать перечисление адресов, на которые распространяется это правило.
Считаем, что с правилами маршрутизации проблем нет и то, что должно пойти по не тарифицируемому каналу, то по нему пойдет и не свернет случайно на второй интерфейс, который со стороны филиала А безлимитный, а вот со стороны филиала В находится уже другой провайдер, который выставит счет за такую ошибку. А вдруг что то не так? Или этими настройками занимается другой человек, лучше себя подстраховать!
Защитится от этого можно одним простым правилом, все, что не предназначено подсети, в которой находятся наши филиалы, должно быть ограничено до скорости в 10b/s.
Можно перефразировать задачу по другому, учитывая, что правилами, которые стоят выше, оговорены ограничения для доступа к филиалам через интерфейс ISP1, остальные соединения, проходящие через интерфейс ISP1 ограничить скоростью в 10b/s.
[mkt@MikroTik] > queue simple add name="not to branch" interface=ISP1
max-limit=10/10
Теперь настало время прописать ограничения для работы со вторым провайдером.
Начнем так же с серверов.
Почтовый серер - 1Mb/s, Upload = 1Mb/s
[mkt@MikroTik] > queue simple add name="mail to external"
target-addresses=192.168.1.2 interface=ISP2 max-limit=1000000/1000000
Веб сервер - Download = 1Mb/s, Upload = 4Mb/s.
[mkt@MikroTik] > queue simple add name="web to external"
target-addresses=192.168.1.3 interface=ISP2 max-limit=4000000/1000000
Теперь машина 192.168.1.20 - Download = 256kb/s, Upload = 128kb/s
[mkt@MikroTik] > queue simple add name="192.168.1.20 to external"
target-addresses=192.168.1.20 interface=ISP2 max-limit=128000/256000
В заключение одним правилом для машин 192.168.1.10-192.168.1.15 - Download = 64kb/s, Upload = 32kb/s
[mkt@MikroTik] > queue simple add name="192.168.1.10-15 to external"
target-addresses=192.168.1.10,192.168.1.11,192.168.1.12,192.168.1.13,192.168.1.14,
192.168.1.15 interface=ISP2 max-limit=32000/64000
Продублируем защиту для интрефейса ISP2, что бы все выходящее с него в подсеть филиалов ограничивалось скоростью в 10b/s.
[mkt@MikroTik] > queue simple add name="ISP2 to branch" dst-address=195.82.111.0/24
interface=ISP2 max-limit=10/10
Посмотрим, что у нас получилось.[mkt@MikroTik] > queue simple print
Flags: X - disabled, I - invalid, D - dynamic
0 name="web to branch" target-addresses=192.168.1.3/32
dst-address=195.82.111.0/24 interface=ISP1 parent=none direction=both
priority=8 queue=default-small/default-small limit-at=0/0
max-limit=10000000/10000000 burst-limit=0/0 burst-threshold=0/0
burst-time=0s/0s total-queue=default-small
1 name="192.168.1.20 to branch" target-addresses=192.168.1.20/32
dst-address=195.82.111.0/24 interface=ISP1 parent=none direction=both
priority=8 queue=default-small/default-small limit-at=0/0
max-limit=10000000/10000000 burst-limit=0/0 burst-threshold=0/0
burst-time=0s/0s total-queue=default-small
2 name="192.168.1.10-15 to branch"
target-addresses=192.168.1.10/32,192.168.1.11/32,192.168.1.12/32,
192.168.1.13/32,192.168.1.14/32,192.168.1.15/32
dst-address=195.82.111.0/24 interface=ISP1 parent=none direction=both
priority=8 queue=default-small/default-small limit-at=0/0
max-limit=1000000/1000000 burst-limit=0/0 burst-threshold=0/0
burst-time=0s/0s total-queue=default-small
3 name="not to branch" dst-address=0.0.0.0/0 interface=ISP1 parent=none
direction=both priority=8 queue=default-small/default-small
limit-at=0/0 max-limit=10/10 burst-limit=0/0 burst-threshold=0/0
burst-time=0s/0s total-queue=default-small
4 name="mail to external" target-addresses=192.168.1.2/32
dst-address=0.0.0.0/0 interface=ISP2 parent=none direction=both
priority=8 queue=default-small/default-small limit-at=0/0
max-limit=1000000/1000000 burst-limit=0/0 burst-threshold=0/0
burst-time=0s/0s total-queue=default-small
5 name="web to external" target-addresses=192.168.1.3/32
dst-address=0.0.0.0/0 interface=ISP2 parent=none direction=both
priority=8 queue=default-small/default-small limit-at=0/0
max-limit=4000000/1000000 burst-limit=0/0 burst-threshold=0/0
burst-time=0s/0s total-queue=default-small
6 name="192.168.1.20 to external" target-addresses=192.168.1.20/32
dst-address=0.0.0.0/0 interface=ISP2 parent=none direction=both
priority=8 queue=default-small/default-small limit-at=0/0
max-limit=128000/256000 burst-limit=0/0 burst-threshold=0/0
burst-time=0s/0s total-queue=default-small
7 name="192.168.1.10-15 to external"
target-addresses=192.168.1.10/32,192.168.1.11/32,192.168.1.12/32,
192.168.1.13/32,192.168.1.14/32,192.168.1.15/32
dst-address=0.0.0.0/0 interface=ISP2 parent=none direction=both
priority=8 queue=default-small/default-small limit-at=0/0
max-limit=32000/64000 burst-limit=0/0 burst-threshold=0/0
burst-time=0s/0s total-queue=default-small
8 name="ISP2 to branch" dst-address=195.82.111.0/24 interface=ISP2
parent=none direction=both priority=8 queue=default-small/default-small
limit-at=0/0 max-limit=10/10 burst-limit=0/0 burst-threshold=0/0
burst-time=0s/0s total-queue=default-small
Это самый простой из механизмов ограничения скорости и обеспечения качества сервиса.
Продолжение следует...
Жаль что в таргет адресс симпл-кью нельзя сразу указать адресс-лист.
ОтветитьУдалитьКак можно избежать внесения адресов в таргет-адресс и привязать лимиты скоростей к адресс-листам?
Натолкнула статья:
http://wiki.mikrotik.com/wiki/How_to_apply_different_limits_for_Local/Overseas_traffic
Неудобно пользователям выписывать отдельно доступ и скорости по ресурсам внутрестраны/миру.
> Как можно избежать внесения адресов в таргет-адресс
ОтветитьУдалить> и привязать лимиты скоростей к адресс-листам?
Если так же опираться на статью, т.е. маркируем соединения с конкретным ip, там уже по этому маркеру делается ограничение, то основная трудность это в заполнении адрес листа и определении ip адресов, связанных с этим сайтом.
Для себя я делал черный список сайтов, там так же вносились ip адреса сайтов в группу block, а потом этой группе в правилах фаервола был прописан запрет.
Отдельно на одном из серверов вертится в планировщике скрипт на питоне, который открывает текстовый файл, в нем перечислены имена сайтов, он берет по одному имени, делает запрос на www.dnswatch.info/dns/dnslookup?la=en&type=A&submit=Resolve&host=АДРЕС_САЙТА в ответ приходит страничка, в которой по регулярному выражению выбираются записи типа А. Так собираем базу ip адресов, не забываем делать паузу в 5-ть сек между запросами, а то забанят быстро :) Потом с этой базой ip-шников скрипт подключается к миротику по телнету, командой /ip firewall address-list remove [/ip firewall address-list find list=block] убивает уже созданные записи в этой группе и создает новые. Под конец скрипт запоминает в файл дату создания и размер файла со списком сайтов, что бы при следующем запуске сверить их и не делать все эти операции, если файл ни кто не менял.
Тот же механизм можно прикрутить и сюда :)
Но тогда надо будет создавать на каждый тарифный план свои маркировки внутрестраны/зарубежа с уточнением сорс адрес-листа который может использовать это подключение. А это в десятки раз больше маркировок пакетов что будет нагружать процессор роутера.
ОтветитьУдалитьВопрос может не в тему, но:
Есть в сети спаммеры и/или внешний белый адрес попал под какие-то спам-сервисы которые делают более 500 сессий с каждого уникального хоста к моему белому, причем сессия не адресуется за нат кому либо в сети.. Спамеры же поднимают более 50000 сессий и инет блокирует провайдер/или канал падает..
Когда ставлю в фаерволе дроп Конешн-лимит 200, протокол ТСП, форвард.. и правило с добавлением сорс и дестини адресов в банлист.. то сессии переваливают за глобальный лимит, спаммер попадает в банлист а инет то всем блокируют.
При этом процессор трудяга работает при свободном канале на 30% (без правил был 1%) и общая скорость скачивания падает почти в два раза.
Роутербоадрды вроде идут с процессорами класса пентиум1-пентиум2 и наверное же как-то рассчитаны на такие правила/нагрузки? (у меня роутер на виа-епиа-мл-итх-600мгц)
Может я неправильно понимаю принцип работы с сессиями клиентов/входящими сессиями? Подскажите как правильно разгрузить процессор и банить злоумышленников (лимитировать сессии).
Очень смущает список ип адресов. что делать если их тысячи? нельзя написать 192.168.10-192.168.1.15 ?
ОтветитьУдалить> Очень смущает список ип адресов. что делать если
ОтветитьУдалить> их тысячи? нельзя написать 192.168.10-192.168.1.15 ?
Можно писать через маску, 192.168.1.0/24
Сергей, а можно ли использовать такую систему для машины которая прописана в hotspot > ip binding?
ОтветитьУдалитьнеужели нельзя через винбокс сделать, обязательно мозг командной строкой забивать
ОтветитьУдалитьЧестно? Нет. =)
УдалитьЕсли вы находитесь удаленно, и как разумный админ (или админ с параноидальными наклонностями) отключили варианты удаленного подключения http и winbox, то вас спасёт только telnet и ssh подключение, которые, как вам известно, не очень-то дружат с GUI. Я вот так и сделал, потому-как эту железку поставили в офисе только после 6и дабы не прерывать работу фирмы и приспокойненько настраивал из дома по telnet