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Мб/с.
Создадим правила для рядовых
пользователей, считаем, что все они объединены общей группой 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
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