pf + cbq пакеты попадают в default

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Kim006
проходил мимо
Сообщения: 8
Зарегистрирован: 2010-05-05 16:54:38

pf + cbq пакеты попадают в default

Непрочитанное сообщение Kim006 » 2010-06-17 12:32:04

не могу заставить работать сие чудо

канал: вх/исх 512/256
скорость скачивания 60К

почемуто очередь 5% на входе и выходе вообще не используется

queue user1_in on bge0 bandwidth 24Kb
[ pkts: 0 bytes: 0 dropped pkts: 0 bytes: 0 ]
[ qlength: 0/ 50 borrows: 0 suspends: 0 ]
queue user1_out on tun0 bandwidth 11Kb
[ pkts: 0 bytes: 0 dropped pkts: 0 bytes: 0 ]
[ qlength: 0/ 50 borrows: 0 suspends: 0 ]

зато пакеты идут через очередь default
и скорость на этих 5% почти максимальная...

что здесь может быть не так ?

(я уже повсякому извращался, результат тот-же и не только у меня)

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

ether_nc="bge0" #local network
inter_nc="tun0"  #ADSL ppp
local_net="192.168.251.0/24"

## lan <- internet
altq on $ether_nc cbq bandwidth 100Mb queue {inet_in, default_in}
queue inet_in bandwidth 480Kb {user1_in, user2_in}
        queue user1_in bandwidth 5% cbq(red)
        queue user2_in bandwidth 95% cbq(red, borrow)
queue default_in bandwidth 99% cbq(default)

## lan -> internet
altq on $inter_nc cbq bandwidth 100Mb queue {inet_out, default_out}
queue inet_out bandwidth 220Kb {user1_out, user2_out}
        queue user1_out bandwidth 5% cbq(red)
        queue user2_out bandwidth 95% cbq(red, borrow)
queue default_out bandwidth 99% cbq(default)


pass in on $ether_nc from 192.168.251.2 to !$local_net queue user1_out no state
pass out on $ether_nc from !$local_net to 192.168.251.2 queue user1_in no state

pass in on $ether_nc from {192.168.251.0/24, !192.168.251.2} to !$local_net queue user2_out no state
pass out on $ether_nc from !$local_net to {192.168.251.0/24, !192.168.251.2} queue user2_in no state

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Kim006
проходил мимо
Сообщения: 8
Зарегистрирован: 2010-05-05 16:54:38

Re: pf + cbq пакеты попадают в default

Непрочитанное сообщение Kim006 » 2010-06-19 10:07:53

Как всегда сам разобрался 8)

может кому нужно....

есть:
две сетевые 100Mb каждая
интерент канал 512/256
ADSL модем, в brige, соединение PPPoE поднимает сама FreeBSD через PPP.
bge0 (int_if) - Смотрит в локальную сеть
tun0 (ext_if) - В сторону модема
на PF включен NAT. перенпрвление на SQUID
настроена самба.


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

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

                        altq on $ext_if       
          |--------------------------------------|
                                                        |
          |       |-----------------------------|----|
       | in| ---->|                                    |     |<------- in
LAN              |int_if     FreeBSD       ext_if |                  PPPoE
       |out|<----|     |                                    |--------> out
          |        |----|-----------------------------|
          |                 |
          |--------------|
          altq on $int_if



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


int_if="bge0" #local network
ext_if="tun0" #ADSL 

local_net="192.167.253.0/24"

loopb_nc="lo0"  
loopb_ip="127.0.0.1"

#ip которые не будут попадать в логи SQUID
table <vipip> { 192.167.253.0/24, !192.167.253.45, !192.167.253.48, !192.167.253.49}

#default behavior for filter rules
set block-policy drop
set skip on $loopb_ip

#packet normalization 
scrub in all 
scrub out all

#### CBQ Shaping ######################################################

## internet -> lan (100Mb, 1000Mb - channel width) (пропускная сетевой)
altq on $int_if cbq bandwidth 100Mb queue {def_in, inet_in}
queue def_in bandwidth 99% cbq(default) 
queue inet_in bandwidth 480Kb qlimit 1000 cbq(borrow) {user1_in, user2_in}
	queue user1_in bandwidth 90% cbq(red, borrow)
	queue user2_in bandwidth 10% cbq(red, borrow)


## lan -> internet
altq on $ext_if cbq bandwidth 100Mb queue {def_out, inet_out}
queue def_out bandwidth 99% cbq(default)
queue inet_out bandwidth 220Kb qlimit 1000 cbq(borrow) {user1_out, user2_out}
	queue user1_out bandwidth 90% cbq(red, borrow)
	queue user2_out bandwidth 10% cbq(red, borrow)

#99% cbq(default)  - все что не попадает в остальные очереди, попадает сюда
#altq on $int_if cbq bandwidth 100Mb queue {def_in, inet_in} - потому что при работе с самбой
#пакеты от других ip будут проходить тоже через шейпер через очередь default со скоростью почти 100Mb
#######################################################################


#### HFSC Shaping #####################################################

## internet -> lan (100Mb, 1000Mb - channel width) 480
#altq on $int_if bandwidth 100Mb hfsc queue {def_in, inet_in}
#queue def_in bandwidth 99% priority 0 hfsc(default)
#queue inet_in bandwidth 480Kb priority 7 hfsc{user1_in, user2_in}
#        queue user1_in bandwidth 80Kb priority 5 hfsc(realtime 80Kb upperlimit 480Kb)
#        queue user2_in bandwidth 400Kb priority 5 hfsc(realtime 400Kb upperlimit 480Kb)


## lan -> internet 220
#altq on $ext_if bandwidth 100Mb hfsc queue {def_out, inet_out}
#queue def_out bandwidth 99% priority 0 hfsc(default)
#queue inet_out bandwidth 220Kb priority 7 hfsc{user1_out, user2_out}
#        queue user1_out bandwidth 20Kb priority 5 hfsc(realtime 20Kb upperlimit 220Kb)
#        queue user2_out bandwidth 200Kb priority 5 hfsc(realtime 200Kb upperlimit 220Kb)


#######################################################################



#nat && rdr
nat on $ext_if from !$ext_if to any -> {$ext_if}

#trnasparent squid
rdr on $int_if proto tcp from <vipip> to any port www -> $loopb_ip  port $proxy_port

antispoof quick for $ext_if


#block on {$int_if} all
#pass in  on $int_if proto tcp from 192.168.251.0/24 to $int_if port 22
#pass out on $int_if proto tcp from $int_if port 22 to 192.168.251.0/24

# lan -> internet
pass in  on $int_if from 192.167.253.22   to !$local_net queue user1_out no state
pass in  on $int_if from 192.167.253.222 to !$local_net queue user2_out no state

# internet -> lan
pass out on $int_if from !$local_net to 192.167.253.22   queue user1_in no state
pass out on $int_if from !$local_net to 192.167.253.222 queue user2_in no state

#пакеты не попадающие под эти правила пойдут через очередь default (если не задан block on {$int_if} all)

проверить работоспособность очередей можно:
pfctl -vvsq
pfctl -vsq
pfctl -s state

като так вот.
не уверен что все правильно, но вроде работает..
если есть что поправить пишите .....