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
|