Mikrotik - QoS / Bandwidth Control / Индивидуальные правила

 

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

Начнем как всегда - с обрисовки ситуации, которую необходимо решить.

Есть офис с доступом к сети Интернет через одного провайдера, этот провайдер предоставляет скорость равную 2Мб/с. В офисе есть два сервера, почтовый и web, которым необходимо обеспечить стабильный канал независимо как от рабочих станций, так и от самих себя. Так же в офисе есть несколько рабочих мест, которые имеют доступ к сервисам web и icq, так же есть машина системного администратора, которая имею доступ к сервисам без ограничений, но с внутренними правилами распределения трафика.

 

Чем сложнее задача, тем меньше шансов решить ее в одно-два действия.

Начнем с серверов, считаем, что им для нормальной работы требуется скорость в 512Кб/с, но если канал будет свободен, то пускай пользуются им во всю.

Первым шагом выделим все соединения, которые открывают сервера. Для этого маркируем все соединения, которые открывает web сервер маркером c-srv-web, а соединения, которые открывает почтовый сервер маркером c-srv-mail.

[mkt@OFFICE] > ip firewall mangle add chain=prerouting src-address="192.168.1.1"
action=mark-connection new-connection-mark="c-srv-web"

[mkt@OFFICE] > ip firewall mangle add chain=prerouting src-address="192.168.1.2"
action=mark-connection new-connection-mark="c-srv-mail"


Маркируем все пакеты от веб сервера маркером p-srv-web.

[mkt@OFFICE] > ip firewall mangle add chain=prerouting connection-mark="c-srv-web"
action=mark-packet new-packet-mark="p-srv-web"


Для работы же почтового сервера требуется большее количество портов (smtp, pop, imap...), может быть бывают ситуации, когда необходимо серверу закручивать гайки на столько, что бы ограничивать в скорости каждый сервис индивидуально, но у нас простой случай, по этому маркируем весь трафик почтового сервера маркером p-srv-mail.

[mkt@OFFICE] > ip firewall mangle add chain=prerouting connection-mark="c-srv-mail"
action=mark-packet new-packet-mark="p-srv-mail"

 

Теперь настало время создать правила для ограничения скорости. Первое условие - сервера гарантированно получают по 512кб/с, второе условие - не мешать друг другу (т.е. нельзя занимать весь канал, даже если он свободен), как следствие из второго максимальное ограничение это весь канал, минус гарантированная ширина для второго сервера, т.е. 1,5Мб/с.

[mkt@OFFICE] > queue tree add name="web server" parent=global-total
packet-mark=p-srv-web limit-at=512000 max-limit=1500000

[mkt@OFFICE] > queue tree add name="mail server" parent=global-total
packet-mark=p-srv-mail limit-at=512000 max-limit=1500000


Создадим правила для рядовых пользователей, считаем, что все они объединены общей группой client, лимит для них 64кб/с - гарантировано и 128кб/с - верхний предел на download и 32кб/с - гарантированно и 64кб/с - верхний предел на upload.

[mkt@OFFICE] > ip firewall mangle add chain=prerouting src-address-list=client
action=mark-connection new-connection-mark=c-client

[mkt@OFFICE] > ip firewall mangle add chain=prerouting connection-mark=c-client
action=mark-packet new-packet-mark=p-client

[mkt@OFFICE] > queue tree add name="client download" parent=local
packet-mark=p-client limit-at=64000 max-limit=128000

[mkt@OFFICE] > queue tree add name="client upload" parent=isp
packet-mark=p-client limit-at=32000 max-limit=64000

local - это локальный интерфейс, а isp - это интерфейс, смотрящий в внешнюю сеть.

При таких лимитах у нас смогут спокойно работать до 16 клиентов не мешая друг другу и серверам, занимая при этом весь позволенный им канал (гарантированный), в реальности же придется давать кому то большую скорость, кому то меньшую.

Осталось настроить машину системного админисратора, которая не имеет ограничений по сервисам, но имеет общий лимит по скорости, а так же внутри этого лимита есть лимиты между сервисами. Допустим, что общий лимит это 256кб/с - гарантированно и 512кб/с - верхний предел. Для доступа к web лимит в 64кб/с - гарантировано и 256кб/с верхний предел, для доступа к p2p сетям 128 кб/с - гарантированно и 512кб/с - верхний предел, остальной трафик получает весь оставшийся канал, который остается исходя из общего лимита.

Маркируем соединения.

[mkt@OFFICE] > ip firewall mangle add chain=prerouting src-address="192.168.1.100"
action=mark-connection new-connection-mark=c-admin

Теперь маркируем все пакеты, пакеты с 80 порта, и пакеты с p2p сетей.

[mkt@OFFICE] > ip firewall mangle add chain=prerouting connection-mark=c-admin
action=mark-packet new-packet-mark=p-admin-total

[mkt@OFFICE] > ip firewall mangle add chain=prerouting protocol=tcp src-port=80
connection-mark=c-admin action=mark-packet new-packet-mark=p-admin-web

[mkt@OFFICE] > ip firewall mangle add chain=prerouting p2p=all-p2p
connection-mark=c-admin action=mark-packet new-packet-mark=p-admin-p2p


Создаем ограничения, первое это общее ограничение, потом два дочерних от него, для web и p2p.

[mkt@OFFICE] > queue tree add name="admin-total" parent=global-total
packet-mark=p-admin-total limit-at=256000 max-limit=512000

[mkt@OFFICE] > queue tree add name="admin-web" parent=admin-total
packet-mark=p-admin-web limit-at=64000 max-limit=256000

[mkt@OFFICE] > queue tree add name="admin-p2p" parent=admin-total
packet-mark=p-admin-p2p limit-at=128000 max-limit=512000



В результате получим такую "ступеньку".

 

Автор: Sergey Lagovskiy

 





Рейтинг@Mail.ru
Яндекс цитирования

Григорьев Дмитрий Владимирович (Inlarion) 2010-2016 (C) Все права защищены. При копировании материалов с сайта, ссылка на автора и источник обязательны!!!