Перейти до

Красивый и правильный шейпинг


Рекомендованные сообщения

На шлюзе стоит фря 6.2 с PF'ом. Возникла потребность сделать тарифы с зарезанием скорости на мир. Пожонглировав с altq не получилось нормально разобраться с шейпингом. Более того, нашёл в нете, что работает он только для исходящего трафика. Также придётся заводить каждому пользователю свою очередь и писать свои правила. Как я понял, altq - больше предназначен для QoS'a, чем для обычного зарезания скорости.

 

Посоветуйте, пожалуйста, правильное решение для моего случая. От PF'a отказываться не хочу, т.к. он привлекает своей гибкостью, простотой и скоростью работы на высокой нагрузке.

Ссылка на сообщение
Поделиться на других сайтах
На шлюзе стоит фря 6.2 с PF'ом. Возникла потребность сделать тарифы с зарезанием скорости на мир. Пожонглировав с altq не получилось нормально разобраться с шейпингом. Более того, нашёл в нете, что работает он только для исходящего трафика. Также придётся заводить каждому пользователю свою очередь и писать свои правила. Как я понял, altq - больше предназначен для QoS'a, чем для обычного зарезания скорости.

 

Посоветуйте, пожалуйста, правильное решение для моего случая. От PF'a отказываться не хочу, т.к. он привлекает своей гибкостью, простотой и скоростью работы на высокой нагрузке.

Так вроде же можно совмещать pf и ipfw :)

Ссылка на сообщение
Поделиться на других сайтах
Более того, нашёл в нете, что работает он только для исходящего трафика

Шейпи вход и исход на разных сетевых интерфейсах.

 

Почитай ещё раз мануал, pf+altq отлично все шейпит.

Ссылка на сообщение
Поделиться на других сайтах
Так вроде же можно совмещать pf и ipfw :)

Меньше всего накручено - меньше проблем :(

 

Шейпи вход и исход на разных сетевых интерфейсах.

 

Почитай ещё раз мануал, pf+altq отлично все шейпит.

 

Я такой вариант тоже рассмотрел. Но тут получается не так хорошо, как хотелось бы. На каждого пользователся тогда придётся создавать по 2 правила и по 2 очереди - ua-ix и мир (поправьте если ошибся). Я рассчитывал на то, что это можно как-то просто и аккуратно сделать, используя, например, сторонний демон.

 

З.Ы. Сейчас у меня стоит возможность отключать направления. Для этого в PF'е устроено так:

 

table <uaix> persist file "/etc/pf_ua-ix.txt" # украинские сети

table <uausr> persist # список юзеров, у которых включен ua-ix

table <wusr> persist # список юзеров, у которых включен мир

 

 

далее, в конце всех правил стоит такое:

 

pass quick from <uausr> to <uaix>

pass quick from <uaix> to <uausr>

block log quick from <uaix>

block log quick to <uaix>

pass quick from <wusr>

pass quick to <wusr>

 

Каждого безлимитчика придётся исключить из таблиц wusr и uausr, чтобы создать им отдельные правила со своими очередями. Это приведёт к громоздкости pf.conf и замедлению его работы. К тому же надо дописывать в OnConnect и OnDisconnect скрипты для постоянного дёрганья pf.conf и перезапуска файрвола. Это тоже не есть гуд.

 

Можно ли это сделать как-то иначе?

Ссылка на сообщение
Поделиться на других сайтах

Итак, всё получилось более-менее по-человечески.

 

Немножко правим правила, выпускающие на мир:

 

anchor world_shape_out from <wusr>
anchor world_shape_in to <wusr>

 

т.е. делаем из них поднабор правил.

 

Далее, в начале pf.conf пишем правила для загрузки этих поднаборов:

 

load anchor world_shape_in from "/etc/pf_subrules/world_shaping_in"
load anchor world_shape_out from "/etc/pf_subrules/world_shaping_out"

 

Создаём два файла с правилами в /etc/pf_subrules:

 

world_shaping_in

#queeq
pass quick to 192.168.0.11 queue queeq_512k_in



pass quick to any

 

world_shaping_out

#queeq
pass quick from 192.168.0.11 queue queeq_512k_out



pass quick from any

 

Не забываем оставить одну пустую строку в конце. Здесь queeq - экспериментальный пользователь. Для каждого безлимитчика придётся вписывать своё правило в каждый из файлов (вполне можно автоматизировать), а также свою очередь. На данный момент очереди выглядят так (в самом начале pf.conf):

 

altq on $ext_if cbq bandwidth 100Mb queue { default_out, queeq_512k_out }
altq on $int_if cbq bandwidth 100Mb queue { default_in, queeq_512k_in }

queue default_out bandwidth 10Mb cbq(default borrow)
queue default_in bandwidth 10Mb cbq(default borrow)


#unlimited users queues

queue queeq_512k_out bandwidth 512Kb priority 4 cbq
queue queeq_512k_in bandwidth 512Kb priority 4 cbq

 

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

Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.

×
×
  • Створити нове...