LINUX.ORG.RU
ФорумAdmin

openbsd pf отказывается шейпить трафик

 , , ,


0

1

конфиг pf :

ext_if = "em0"
int_if = "em1"
localnet = "192.168.0.0/24"

set block-policy return
set skip on lo
match in all scrub (no-df)

queue rootq on em0 bandwidth  100M
 queue inetq parent rootq bandwidth 22M
  queue ssh  parent inetq bandwidth 1M
  queue icmp parent inetq bandwidth 1M
  queue dns  parent inetq bandwidth 1M
  queue bulk parent inetq bandwidth 1M
  queue tor  parent inetq bandwidth 1M
  queue std  parent inetq bandwidth 1M default
  queue http parent inetq bandwidth 1M
  queue games parent inetq bandwidth 1M

pass on $int_if

pass out on $ext_if

pass on $ext_if

pass out on ext_if from $localnet to any nat-to ($ext_if)

block return out on $int_if inet all set queue std
pass in  on $int_if inet proto icmp from any to any \ set queue (icmp)
pass in  on $int_if inet proto udp  from any to any port 6881 \ set queue (tor)
pass in on  $int_if inet proto tcp  from any to any port 80 \ set queue (http)
pass in on  $int_if inet proto tcp  from any to any port 80 \ set queue (http)

pass in on  $int_if  inet proto tcp  from any to any port 80 \ set queue (games)
pass out on $ext_if from $localnet to any nat-to ($ext_if)

Конфиг файл таков, но работает так, будто никаких queues нет вообще, пропускает все на скорости, которую дает провайдер. Ставим качаться какой нибудь торент, смотрим очереди, и :

https://hostingkartinok.com/show-image.php?id=edda3cc92b581de3dc91eb627e59b5c7

https://hostingkartinok.com/show-image.php?id=86d6c39a599bf2d96d4cdd77218793d8

ничего не работает :(

А если заменить

queue rootq on em0 bandwidth 100M

на

queue rootq on $ext_if bandwidth 100M

iZEN ★★★★★ ()
Ответ на: комментарий от iZEN

Ничего не изменилось конфиг : ext_if = «em0» int_if = «em1» localnet = «192.168.0.0/24»

set block-policy return set skip on lo match in all scrub (no-df)

queue rootq on $ext_if bandwidth 100M queue inetq parent rootq bandwidth 22M queue ssh parent inetq bandwidth 1M queue icmp parent inetq bandwidth 1M queue dns parent inetq bandwidth 1M queue bulk parent inetq bandwidth 1M queue tor parent inetq bandwidth 1M queue std parent inetq bandwidth 1M default queue http parent inetq bandwidth 1M queue games parent inetq bandwidth 1M

pass on $int_if

pass out on $ext_if

pass on $ext_if

pass out on ext_if from $localnet to any nat-to ($ext_if)

block return out on $int_if inet all set queue std pass in on $int_if inet proto icmp from any to any \ set queue (icmp) pass in on $int_if inet proto udp from any to any port 6881 \ set queue (tor) pass in on $int_if inet proto tcp from any to any port 80 \ set queue (http) pass in on $int_if inet proto tcp from any to any port 80 \ set queue (http) pass in on $int_if inet proto tcp from any to any port 80 \ set queue (games)

результат : https://hostingkartinok.com/show-image.php?id=033eaaaa9f7acf946c58d0a620e989b7 и очень странным мне кажется что pfctl и торент клиент разные цифры показывают

asch11 ()

опреденный прогрес есть но все очень плохо. Конфиг : ext_if = «em0» int_if = «em1» localnet = «192.168.0.0/24»

set block-policy return set skip on lo match in all scrub (no-df)

queue root on $int_if bandwidth 10M max 10M queue bulk parent root bandwidth 1M default queue ack parent root bandwidth 4M queue dns parent root bandwidth 500K

pass on $int_if

pass out on $ext_if pass on $ext_if pass out on ext_if from $localnet to any nat-to ($ext_if)

match on em1 proto tcp to port {21,80,443,5223} set queue (bulk,ack) set prio (3,6) match out on em1 proto udp set prio 4 match out on em1 proto {tcp,udp} from any to any port 53 set queue dns set prio 7

pass out on $ext_if from $localnet to any nat-to ($ext_if)

Сделал все как в гайде https://chibug.org/talks/2016-10-05-jimh-pf_queuing.pdf // Пришло понимание правила нада делать не внутреннем интерфейсе. em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 lladdr ac:22:0b:4c:ad:9c index 1 priority 0 llprio 3 groups: egress media: Ethernet autoselect (1000baseT full-duplex) status: active inet 172.28.204.201 netmask 0xffff0000 broadcast 172.28.255.255 em1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 lladdr 2e:53:1b:f5:50:72 index 2 priority 0 llprio 3 media: Ethernet autoselect (1000baseT full-duplex) status: active inet 192.168.0.199 netmask 0xffffff00 broadcast 192.168.0.255

И в принципе работает, замерею скорость спидтестом, показывает 10 мбит, то есть у меня работает только одно правило : queue root on $int_if bandwidth 10M max 10M Говорящее о том что канал 10 мбит/с . почему не работают другие правила не пойму. скрин : https://hostingkartinok.com/show-image.php?id=df378375790426c04841571ef15efecf

то есть pf понимает что канал для этой очереди 1 мбит, но пускает 10 ? что за бред ? . Может есть какой то рабочий гайд по новой системе шейпинга ?

asch11 ()
Ответ на: комментарий от asch11

ты не понимаешь как устроен и зачем нужен шейпинг в пф. рекомендую туториал Peter'a Hansteen'a и манстраницу. в чем глубинный смысл лимитировать до 1мбит/с если канал и так пустой?

val-amart ★★★★★ ()
Ответ на: комментарий от val-amart

Спасибо, уже разобрался. Года 3 работал с альт -ку, не знаю точно по меркам джедаев понимал я его или нет,но думаю что понимал исходя из того что работало оно успешно, с новым шейпером столкнулся в первый раз и дейсвтительно пока не понимаю. По теме все заработало, не хватало всего лишь

queue bulk parent root bandwidth 1M max 1M default вместо queue bulk parent root bandwidth 1M default

Как добавил в моих синтетических тестах шейпинг заработал.

Глубинный смысл лимитировать до 1М был чтобы проверить что оно вообще работает, и когда этот счастливый момент настанет уже настраивать детельно. Как я уже понял новой работает по другому. и да похоже на заточенность под человеческое использование, но это ж BSD а не роутер тп линк , чорт :)

asch11 ()
Ответ на: комментарий от asch11

max 1M

ха, прикольно, не знал что такое теперь есть :)

val-amart ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.