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

pf проблемы в работе

Добавлено: 2014-03-24 19:50:22
admin_sv
проблема вот в чем: пишу такое правило

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

pass in route-to ($pppoe $gw_pppoe) from <stream_B> to !$me keep state
В таблицу вношу 2 ip -все работает, добавляю еще один и вот у него не работает, тоже происходит с последующими. :shock:

Re: pf проблемы в работе

Добавлено: 2014-05-26 10:28:03
admin_sv
Проблема была в малом значении полей для таблицы keep state.
Найдена новая странность:

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

pass in on $lan from {$lan_ip !<stream_A> !<stream_B> !<stream_C>} to any flags S/SA probability $PA keep state (max-src-conn-rate 1/60, overload <stream_A> flush global)
pass in on $lan from {$lan_ip !<stream_A> !<stream_B> !<stream_C>} to any flags S/SA probability $PB keep state (max-src-conn-rate 1/60, overload <stream_B> flush global)
pass in on $lan from {$lan_ip !<stream_A> !<stream_B> !<stream_C>} to any flags S/SA probability $PC keep state (max-src-conn-rate 1/60, overload <stream_C> flush global)
есть вот такой набор правил который должен выполнятся с указанной вероятностью, но отрабатывает только последнее правило с не 0 вероятностью. Вопрос почему?

Re: pf проблемы в работе

Добавлено: 2014-05-26 14:24:28
skeletor
Потому что так работает pf: выполняется только последнее совпавшее. Если надо первое - используй quick

Re: pf проблемы в работе

Добавлено: 2014-05-26 18:04:06
admin_sv
там в правиле вероятность выполнения указана
probability $PC
и соответственно PC="20%". Так вот почему он так работает?

Re: pf проблемы в работе

Добавлено: 2014-05-26 19:03:54
skeletor
У вас 3 одинаковых правила и срабатывает только последнее, причём с вероятностью $PC.

Re: pf проблемы в работе

Добавлено: 2014-05-27 9:12:16
admin_sv
Я с вами не согласен, проблему нашел. Она не там где вы говорите. Правила построены так что в какую то единицу времени есть только 1 или 2 правила. Проблема состоит в крутости представления pf и серьезной разницей в реализации, а именно мое 1 правило трансформируется в 3 и с вероятностью в 40% оно фактически существует всегда.

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

pass in on em2 inet from 192.168.8.0/24 to any flags S/SA keep state probability 10% (source-track rule, max-src-conn-rate 1/60, overload <stream_A> flush global, src.track 60)
pass in on em2 from ! <stream_A> to any flags S/SA keep state probability 10% (source-track rule, max-src-conn-rate 1/60, overload <stream_A> flush global, src.track 60)
pass in on em2 from ! <stream_B> to any flags S/SA keep state probability 10% (source-track rule, max-src-conn-rate 1/60, overload <stream_A> flush global, src.track 60)
pass in on em2 from ! <stream_C> to any flags S/SA keep state probability 10% (source-track rule, max-src-conn-rate 1/60, overload <stream_A> flush global, src.track 60)
pass in on em2 inet from 192.168.8.0/24 to any flags S/SA keep state probability 50% (source-track rule, max-src-conn-rate 1/60, overload <stream_B> flush global, src.track 60)
pass in on em2 from ! <stream_A> to any flags S/SA keep state probability 50% (source-track rule, max-src-conn-rate 1/60, overload <stream_B> flush global, src.track 60)
pass in on em2 from ! <stream_B> to any flags S/SA keep state probability 50% (source-track rule, max-src-conn-rate 1/60, overload <stream_B> flush global, src.track 60)
pass in on em2 from ! <stream_C> to any flags S/SA keep state probability 50% (source-track rule, max-src-conn-rate 1/60, overload <stream_B> flush global, src.track 60)
pass in on em2 inet from 192.168.8.0/24 to any flags S/SA keep state probability 40% (source-track rule, max-src-conn-rate 1/60, overload <stream_C> flush global, src.track 60)
pass in on em2 from ! <stream_A> to any flags S/SA keep state probability 40% (source-track rule, max-src-conn-rate 1/60, overload <stream_C> flush global, src.track 60)
pass in on em2 from ! <stream_B> to any flags S/SA keep state probability 40% (source-track rule, max-src-conn-rate 1/60, overload <stream_C> flush global, src.track 60)
pass in on em2 from ! <stream_C> to any flags S/SA keep state probability 40% (source-track rule, max-src-conn-rate 1/60, overload <stream_C> flush global, src.track 60)
обманулся немного, но для 2 каналов эта схема работает. А вот для 3 буду думать :) skeletor спасибо за время потраченное на меня.

Re: pf проблемы в работе

Добавлено: 2014-05-27 20:02:33
skeletor
Для 2-х работает потому что, каждая probability одного правила дополняет probability в другом. А для 3-ох поэтому и не работает.

Re: pf проблемы в работе

Добавлено: 2014-05-28 11:44:46
admin_sv
skeletor писал(а):Для 2-х работает потому что, каждая probability одного правила дополняет probability в другом. А для 3-ох поэтому и не работает.
Нет такой тип правил не работает для 2, его необходимо модернизировать.