Страница 1 из 1

pf и урезать трафик

Добавлено: 2009-11-05 10:57:12
c4sin
Привет всем.

Поставили задачу урезать скорость не только по HTTP но и по всем портам каждого пользователя
Почитал что можно сделать это pf-ом, но если у меня больше 100 пользователей что для каждого мне надо писать правило для очереди
нет более простого решения? всем нужна одинаковая скорость не больше не меньше скажем 256кбит и нет нужды если канал не забит другим пользователям повышать скорость.

Re: pf и урезать трафик

Добавлено: 2009-11-05 13:38:25
---nebo---
если у меня больше 100 пользователей что для каждого мне надо писать правило для очереди
У вас пользователи вероятно как-то сгрупированы, я имею ввиду по IP, вы ведь не выдавали адреса рандомно. Управляете группой.
Вот например если ваши 100 пользователей находятся в сети: 192.168.0.0/25.

Тогда как и делаете:
1) создаете очередь

Код: Выделить всё

altq on $NET cbq bandwidth 1Mb queue {me , users} 
queue me   bandwidth 75% priority 1
queue users  bandwidth 25% priority 2 cbq (default)
здесь канал 1М, но рекомендовано ставить значение 90% от реальной полосы.

2)пускаете всех пользователей через эту очередь

Код: Выделить всё

pass out on $NET from 192.168.0.0/25 to any queue users

Re: pf и урезать трафик

Добавлено: 2009-11-05 13:54:59
c4sin
и получается что для всех скорость 256, правильно? то есть в вашем примере 25%
и если один забивает канал на 25% то всё ок, а вот если 10 пользователей пытаются одновременно чтото скачать, то 25% эти делятся на них 10терых

или я не так всё понимаю

Re: pf и урезать трафик

Добавлено: 2009-11-05 13:59:59
kabachok

Re: pf и урезать трафик

Добавлено: 2009-11-08 22:29:30
c4sin
вообщем попытался сделать по примеру ---nebo---

вот такой сделал конфиг

Код: Выделить всё

altq on $NET cbq bandwidth 1940Mb queue {me , users, user_256} 
queue me   bandwidth  1000Mb priority 1
queue users  bandwidth 128Kb priority 2 cbq (default)
queue users_256  bandwidth 256Kb priority 2 cbq 


pass out on $NET from 192.168.0.60 to any queue users_256
pass out on $NET from 192.168.0.0/25 to any queue users
но пользователя с ip - 192.168.0.60 пускает по дефолтной очереди то есть на скорости 128, что не так делаю, подскажите. Почему не срабатывает его очередь в 256

Re: pf и урезать трафик

Добавлено: 2009-11-09 0:01:35
---nebo---
c4sin, все правильно работает, соответственно конфигу :smile: .
Если взять фаер IPFW, то логика его работы такова, что пакет "выскакивает" на первом удовлетворяющем правиле.
В PF все несколько иначе. Проходя правила, удовлетворяющие правила запоминаются и к пакету применяется ПОСЛЕДНЕЕ удовлетворившее(грубо говоря наоборот). Но если есть желание, то на этот процес можно повлиять, используя параметр quick. Тогда, если пакет удовлетворит правилам, то он будет сразу по ним(правилам) обработан.

У вас адрес 192.168.0.60 входит в подсеть 192.168.0.0/25, поетому и первое, и второе правило подходят для даного пакета.
Решение:
или

Код: Выделить всё

pass out on $NET from 192.168.0.0/25 to any queue users
pass out on $NET from 192.168.0.60 to any queue users_256
или

Код: Выделить всё

pass out quick on $NET from 192.168.0.60 to any queue users_256
pass out on $NET from 192.168.0.0/25 to any queue users