pf queue без no state
Модератор: terminus
Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Услуги хостинговой компании Host-Food.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/
Тарифы на виртуальные сервера (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/
- zingel
- beastie
- Сообщения: 6204
- Зарегистрирован: 2007-10-30 3:56:49
- Откуда: Moscow
- Контактная информация:
-
- проходил мимо
Re: pf queue без no state
Не работают очереди pf.
Задача - огнаничить трафик на внутреннем le0 в подсеть 172.23.43.0/24.
Очереди:
Не работающая конструкция 1:
Не работающая конструкция 2:
Работающая конструкция:
Почему обязательно необходимо употреблять "no state" (всего на двух сайтах встретил, что no state обязателен)?
В остальных случаях советуют употреблять "keep state", но у меня с ним или просто в его отсутствии - все кидается в default очередь.
Не скажется ли это (наличие "no state") на производительности, т.к. кроме фильтрации и очередей на этой машине выполняется NAT.
Задача - огнаничить трафик на внутреннем le0 в подсеть 172.23.43.0/24.
Очереди:
Код: Выделить всё
altq on le0 cbq bandwidth 1Gb qlimit 100 queue { AAA, common }
queue AAA bandwidth 2Mb priority 0 qlimit 20 cbq
queue common bandwidth 500Mb priority 0 qlimit 100 cbq(default,borrow)
Код: Выделить всё
pass all
pass out on le0 from any to 172.23.43.0/24 keep state queue AAA
pass out on le0 from any to 172.16.0.33 keep state queue AAA
Код: Выделить всё
pass all
pass out on le0 from any to 172.23.43.0/24 queue AAA
pass out on le0 from any to 172.16.0.33 queue AAA
Код: Выделить всё
pass all no state
pass out on le0 from any to 172.23.43.0/24 no state queue AAA
pass out on le0 from any to 172.16.0.33 no state queue AAA
В остальных случаях советуют употреблять "keep state", но у меня с ним или просто в его отсутствии - все кидается в default очередь.
Не скажется ли это (наличие "no state") на производительности, т.к. кроме фильтрации и очередей на этой машине выполняется NAT.
-
- проходил мимо
Re: pf queue без no state
Код: Выделить всё
[root@FreeBSD-000 ~]# uname -a
FreeBSD FreeBSD-000.xyz.ru 7.0-RELEASE FreeBSD 7.0-RELEASE #23: Wed Apr 9 13:45:14 VLAST 2008 root@FreeBSD-000.xyz.ru:/usr/obj/usr/src/sys/FREEBSD-000 i386
Всего в двух статьях было упоминание, что pf queue без no state - не работает.
Но в остальном интернете - свободно упоминается keep-state.
Последний раз редактировалось Alex Keda 2008-12-18 12:13:05, всего редактировалось 1 раз.
Причина: Товарищщи, юзайте кнопочку [code], цените чужое время...
Причина: Товарищщи, юзайте кнопочку [code], цените чужое время...
- zingel
- beastie
- Сообщения: 6204
- Зарегистрирован: 2007-10-30 3:56:49
- Откуда: Moscow
- Контактная информация:
-
- проходил мимо
Re: pf queue без no state
НЕ работающий pf.conf:
НЕ работающий результат:
Работающий pf.conf:
Работающий результат:
В первом случае, пакеты не ловятся правилом, и не отправляются в нужную очередь (AAA). Все отправляется в default очередь (common):
Во втором случае, пакеты ловятся правилом, и отправляются в нужную очередь (AAA):
Код: Выделить всё
[root@FreeBSD-000 ~]# cat /etc/pf.conf
altq on le0 cbq bandwidth 1000Kb qlimit 100 queue { AAA, common }
queue AAA on le0 bandwidth 200Kb priority 0 qlimit 20 cbq
queue common on le0 bandwidth 650Kb priority 0 qlimit 100 cbq(default,borrow)
nat on vlan701 from 172.16.0.33 to any -> XXX.YYY.196.76
pass all
pass on le0 from any to 172.16.0.33 queue AAA
[root@FreeBSD-000 ~]#
Код: Выделить всё
[root@FreeBSD-000 ~]# pfctl -v -v -g -s all
TRANSLATION RULES:
@0 nat on vlan701 inet from 172.16.0.33 to any -> XXX.YYY.196.76
[ Skip steps: i=end d=end f=end p=end sa=end sp=end da=end dp=end ]
[ queue: qname= qid=0 pqname= pqid=0 ]
[ Evaluations: 2735 Packets: 17808 Bytes: 16769032 States: 1 ]
FILTER RULES:
@0 pass all flags S/SA keep state
[ Skip steps: d=end p=end sa=end sp=end dp=end ]
[ queue: qname= qid=0 pqname= pqid=0 ]
[ Evaluations: 5586 Packets: 35828 Bytes: 33599240 States: 8 ]
@1 pass on le0 inet from any to 172.16.0.33 flags S/SA keep state queue AAA
[ Skip steps: i=end d=end f=end p=end sa=end sp=end da=end dp=end ]
[ queue: qname=AAA qid=2 pqname= pqid=2 ]
[ Evaluations: 5590 Packets: 0 Bytes: 0 States: 0 ]
ALTQ:
queue root_le0 on le0 bandwidth 1Mb priority 0 qlimit 100 cbq( wrr root ) {AAA, common}
[ pkts: 20462 bytes: 19288896 dropped pkts: 0 bytes: 0 ]
[ qlength: 0/100 borrows: 0 suspends: 0 ]
[ qid=1 ifname=le0 ifbandwidth=1Mb ]
queue AAA on le0 bandwidth 200Kb priority 0 qlimit 20
[ pkts: 0 bytes: 0 dropped pkts: 0 bytes: 0 ]
[ qlength: 0/ 20 borrows: 0 suspends: 0 ]
[ qid=2 ifname=le0 ifbandwidth=1Mb ]
queue common on le0 bandwidth 650Kb priority 0 qlimit 100 cbq( borrow default )
[ pkts: 20462 bytes: 19288896 dropped pkts: 37 bytes: 49074 ]
[ qlength: 75/100 borrows: 18769 suspends: 0 ]
[ qid=3 ifname=le0 ifbandwidth=1Mb ]
STATES:
all udp 255.255.255.255:67 <- 0.0.0.0:68 NO_TRAFFIC:SINGLE
age 00:00:24, expires in 00:00:27, 6:0 pkts, 1968:0 bytes, rule 0
id: 4949f3b300000058 creatorid: e64a1758
all tcp XXX.YYY.196.77:22 <- 172.16.0.33:40532 ESTABLISHED:ESTABLISHED
[2321985920 + 105344] wscale 7 [3715782699 + 11520] wscale 5
age 00:00:23, expires in 24:00:00, 513:995 pkts, 29476:1401437 bytes, rule 0
id: 4949f3b300000059 creatorid: e64a1758
all tcp 172.16.0.33:40532 -> XXX.YYY.196.76:63283 -> XXX.YYY.196.77:22 ESTABLISHED:ESTABLISHED
[3715782699 + 11520] wscale 5 [2321985920 + 105344] wscale 7
age 00:00:23, expires in 24:00:00, 513:995 pkts, 29476:1401437 bytes, rule 0
id: 4949f3b30000005a creatorid: e64a1758
all udp 172.16.0.255:631 <- 172.16.0.33:631 NO_TRAFFIC:SINGLE
age 00:00:13, expires in 00:00:26, 3:0 pkts, 473:0 bytes, rule 0
id: 4949f3b30000005b creatorid: e64a1758
all udp 255.255.255.255:68 <- XXX.YYY.196.120:67 NO_TRAFFIC:SINGLE
age 00:00:12, expires in 00:00:20, 3:0 pkts, 984:0 bytes, rule 0
id: 4949f3b30000005c creatorid: e64a1758
all udp 255.255.255.255:68 <- XXX.YYY.196.115:67 NO_TRAFFIC:SINGLE
age 00:00:08, expires in 00:00:52, 1:0 pkts, 328:0 bytes, rule 0
id: 4949f3b30000005d creatorid: e64a1758
all udp 172.16.0.255:138 <- 172.16.0.58:138 NO_TRAFFIC:SINGLE
age 00:00:07, expires in 00:00:53, 1:0 pkts, 235:0 bytes, rule 0
id: 4949f3b30000005e creatorid: e64a1758
all udp 172.16.0.255:137 <- 172.16.0.4:137 NO_TRAFFIC:SINGLE
age 00:00:03, expires in 00:00:29, 3:0 pkts, 234:0 bytes, rule 0
id: 4949f3b30000005f creatorid: e64a1758
INFO:
Status: Enabled for 0 days 02:23:59 Debug: Urgent
Hostid: 0xe64a1758
Checksum: 0x32658ce3d9bd6d1958f3b9554dbd59c4
State Table Total Rate
current entries 8
searches 567527 65.7/s
inserts 59 0.0/s
removals 51 0.0/s
Source Tracking Table
current entries 0
searches 0 0.0/s
inserts 0 0.0/s
removals 0 0.0/s
Counters
match 517861 59.9/s
bad-offset 0 0.0/s
fragment 0 0.0/s
short 0 0.0/s
normalize 0 0.0/s
memory 0 0.0/s
bad-timestamp 0 0.0/s
congestion 0 0.0/s
ip-option 0 0.0/s
proto-cksum 0 0.0/s
state-mismatch 0 0.0/s
state-insert 0 0.0/s
state-limit 0 0.0/s
src-limit 0 0.0/s
synproxy 0 0.0/s
Limit Counters
max states per rule 0 0.0/s
max-src-states 0 0.0/s
max-src-nodes 0 0.0/s
max-src-conn 0 0.0/s
max-src-conn-rate 0 0.0/s
overload table insertion 0 0.0/s
overload flush states 0 0.0/s
TIMEOUTS:
tcp.first 120s
tcp.opening 30s
tcp.established 86400s
tcp.closing 900s
tcp.finwait 45s
tcp.closed 90s
tcp.tsdiff 30s
udp.first 60s
udp.single 30s
udp.multiple 60s
icmp.first 20s
icmp.error 10s
other.first 60s
other.single 30s
other.multiple 60s
frag 30s
interval 10s
adaptive.start 6000 states
adaptive.end 12000 states
src.track 0s
LIMITS:
states hard limit 10000
src-nodes hard limit 10000
frags hard limit 5000
tables hard limit 1000
table-entries hard limit 200000
OS FINGERPRINTS:
696 fingerprints loaded
[root@FreeBSD-000 ~]#
Код: Выделить всё
[root@FreeBSD-000 ~]# cat /etc/pf.conf
altq on le0 cbq bandwidth 1000Kb qlimit 100 queue { AAA, common }
queue AAA on le0 bandwidth 200Kb priority 0 qlimit 20 cbq
queue common on le0 bandwidth 650Kb priority 0 qlimit 100 cbq(default,borrow)
nat on vlan701 from 172.16.0.33 to any -> XXX.YYY.196.76
pass all no state
pass on le0 from any to 172.16.0.33 no state queue AAA
[root@FreeBSD-000 ~]#
Код: Выделить всё
[root@FreeBSD-000 ~]# pfctl -v -v -g -s all
TRANSLATION RULES:
@0 nat on vlan701 inet from 172.16.0.33 to any -> XXX.YYY.196.76
[ Skip steps: i=end d=end f=end p=end sa=end sp=end da=end dp=end ]
[ queue: qname= qid=0 pqname= pqid=0 ]
[ Evaluations: 494 Packets: 390 Bytes: 308345 States: 1 ]
FILTER RULES:
@0 pass all no state
[ Skip steps: d=end p=end sa=end sp=end dp=end ]
[ queue: qname= qid=0 pqname= pqid=0 ]
[ Evaluations: 989 Packets: 881 Bytes: 555496 States: 1 ]
@1 pass on le0 inet from any to 172.16.0.33 no state queue AAA
[ Skip steps: i=end d=end f=end p=end sa=end sp=end da=end dp=end ]
[ queue: qname=AAA qid=2 pqname= pqid=2 ]
[ Evaluations: 993 Packets: 507 Bytes: 539497 States: 0 ]
ALTQ:
queue root_le0 on le0 bandwidth 1Mb priority 0 qlimit 100 cbq( wrr root ) {AAA, common}
[ pkts: 625 bytes: 511175 dropped pkts: 0 bytes: 0 ]
[ qlength: 0/100 borrows: 0 suspends: 0 ]
[ qid=1 ifname=le0 ifbandwidth=1Mb ]
queue AAA on le0 bandwidth 200Kb priority 0 qlimit 20
[ pkts: 451 bytes: 495435 dropped pkts: 40 bytes: 24932 ]
[ qlength: 20/ 20 borrows: 0 suspends: 120 ]
[ qid=2 ifname=le0 ifbandwidth=1Mb ]
queue common on le0 bandwidth 650Kb priority 0 qlimit 100 cbq( borrow default )
[ pkts: 174 bytes: 15740 dropped pkts: 0 bytes: 0 ]
[ qlength: 0/100 borrows: 0 suspends: 0 ]
[ qid=3 ifname=le0 ifbandwidth=1Mb ]
STATES:
all tcp 172.16.0.33:59532 -> XXX.YYY.196.76:53717 -> XXX.YYY.196.77:22 ESTABLISHED:ESTABLISHED
[3872547513 + 11520] wscale 5 [102695580 + 32240] wscale 7
age 00:00:26, expires in 24:00:00, 174:222 pkts, 12608:299053 bytes, rule 0
id: 4949f3b300000066 creatorid: 71920f9a
INFO:
Status: Enabled for 0 days 02:25:51 Debug: Urgent
Hostid: 0x71920f9a
Checksum: 0x8c4f6df47a4b0bfa4fc07d8010bb4527
State Table Total Rate
current entries 1
searches 578778 66.1/s
inserts 66 0.0/s
removals 65 0.0/s
Source Tracking Table
current entries 0
searches 0 0.0/s
inserts 0 0.0/s
removals 0 0.0/s
Counters
match 520393 59.5/s
bad-offset 0 0.0/s
fragment 0 0.0/s
short 0 0.0/s
normalize 0 0.0/s
memory 0 0.0/s
bad-timestamp 0 0.0/s
congestion 0 0.0/s
ip-option 0 0.0/s
proto-cksum 0 0.0/s
state-mismatch 0 0.0/s
state-insert 0 0.0/s
state-limit 0 0.0/s
src-limit 0 0.0/s
synproxy 0 0.0/s
Limit Counters
max states per rule 0 0.0/s
max-src-states 0 0.0/s
max-src-nodes 0 0.0/s
max-src-conn 0 0.0/s
max-src-conn-rate 0 0.0/s
overload table insertion 0 0.0/s
overload flush states 0 0.0/s
TIMEOUTS:
tcp.first 120s
tcp.opening 30s
tcp.established 86400s
tcp.closing 900s
tcp.finwait 45s
tcp.closed 90s
tcp.tsdiff 30s
udp.first 60s
udp.single 30s
udp.multiple 60s
icmp.first 20s
icmp.error 10s
other.first 60s
other.single 30s
other.multiple 60s
frag 30s
interval 10s
adaptive.start 6000 states
adaptive.end 12000 states
src.track 0s
LIMITS:
states hard limit 10000
src-nodes hard limit 10000
frags hard limit 5000
tables hard limit 1000
table-entries hard limit 200000
OS FINGERPRINTS:
696 fingerprints loaded
[root@FreeBSD-000 ~]#
Код: Выделить всё
FILTER RULES:
...
@1 pass on le0 inet from any to 172.16.0.33 flags S/SA keep state queue AAA
[ Skip steps: i=end d=end f=end p=end sa=end sp=end da=end dp=end ]
[ queue: qname=AAA qid=2 pqname= pqid=2 ]
[ Evaluations: 5590 Packets: 0 Bytes: 0 States: 0 ]
...
ALTQ:
...
queue AAA on le0 bandwidth 200Kb priority 0 qlimit 20
[ pkts: 0 bytes: 0 dropped pkts: 0 bytes: 0 ]
[ qlength: 0/ 20 borrows: 0 suspends: 0 ]
[ qid=2 ifname=le0 ifbandwidth=1Mb ]
queue common on le0 bandwidth 650Kb priority 0 qlimit 100 cbq( borrow default )
[ pkts: 20462 bytes: 19288896 dropped pkts: 37 bytes: 49074 ]
[ qlength: 75/100 borrows: 18769 suspends: 0 ]
[ qid=3 ifname=le0 ifbandwidth=1Mb ]
Код: Выделить всё
FILTER RULES:
...
@1 pass on le0 inet from any to 172.16.0.33 no state queue AAA
[ Skip steps: i=end d=end f=end p=end sa=end sp=end da=end dp=end ]
[ queue: qname=AAA qid=2 pqname= pqid=2 ]
[ Evaluations: 993 Packets: 507 Bytes: 539497 States: 0 ]
...
ALTQ:
...
queue AAA on le0 bandwidth 200Kb priority 0 qlimit 20
[ pkts: 451 bytes: 495435 dropped pkts: 40 bytes: 24932 ]
[ qlength: 20/ 20 borrows: 0 suspends: 120 ]
[ qid=2 ifname=le0 ifbandwidth=1Mb ]
queue common on le0 bandwidth 650Kb priority 0 qlimit 100 cbq( borrow default )
[ pkts: 174 bytes: 15740 dropped pkts: 0 bytes: 0 ]
[ qlength: 0/100 borrows: 0 suspends: 0 ]
[ qid=3 ifname=le0 ifbandwidth=1Mb ]
- zingel
- beastie
- Сообщения: 6204
- Зарегистрирован: 2007-10-30 3:56:49
- Откуда: Moscow
- Контактная информация:
-
- проходил мимо
Re: pf queue без no state
Код: Выделить всё
[root@FreeBSD-000 ~]# uname -a
FreeBSD FreeBSD-000.xyz.ru 7.0-RELEASE FreeBSD 7.0-RELEASE #23: Wed Apr 9 13:45:14 VLAST 2008 root@FreeBSD-000.xyz.ru:/usr/obj/usr/src/sys/FREEBSD-000 i386
-
- проходил мимо
Re: pf queue без no state
Бился и я с ПФом, и точно также все валилось в дефолтную очередь.
Прочитав твой топик, решил попробовать с "no state"
и о чудо... Заработало...
так что, могу принять участие в тестировании...
работает:
не работает
Прочитав твой топик, решил попробовать с "no state"
и о чудо... Заработало...
так что, могу принять участие в тестировании...
работает:
Код: Выделить всё
FreeBSD x.ua 7.0-RELEASE-p5 FreeBSD 7.0-RELEASE-p5 #0: Mon Nov 10 15:09:16 EET 2008 root@x.ua:/usr/obj/usr/src/sys/GENERIC.last.ok i386
ext_if = "fxp0"
external_addr = "77.88.196.18"
int_if = "sk0"
internal_addr = "192.168.0.0/24"
rdr on $ext_if inet proto tcp from any to any port 4899 -> 192.168.0.98
rdr on $int_if inet proto tcp from $internal_addr to !192.168.0.0/24 port { 80, 3128, 8000, 8080 } -> 192.168.0.100 port 3128
nat on fxp0 from 192.168.0.0/24 to any -> 77.88.196.18
pass out on $int_if proto tcp from any to <local> no state queue http_ua label "ua_in"
pfctl -sl
dcl 4993 0 0 0 0 0 0
ua_in 3520 465 353915 0 0 465 353915
/usr/home/riser#=> pfctl -sl
dcl 6080 0 0 0 0 0 0
ua_in 4203 543 428031 0 0 543 428031
ALTQ:
queue root_sk0 on sk0 bandwidth 6Mb priority 0 cbq( wrr root ) {def, http_ua}
[ pkts: 44114 bytes: 26726321 dropped pkts: 0 bytes: 0 ]
[ qlength: 0/ 50 borrows: 0 suspends: 0 ]
[ qid=1 ifname=sk0 ifbandwidth=6Mb ]
queue def on sk0 bandwidth 1.80Mb cbq( red default )
[ pkts: 35527 bytes: 18725282 dropped pkts: 347 bytes: 209278 ]
[ qlength: 9/ 50 borrows: 0 suspends: 1348 ]
[ qid=2 ifname=sk0 ifbandwidth=6Mb ]
queue http_ua on sk0 bandwidth 4.20Mb cbq( red )
[ pkts: 8587 bytes: 8001039 dropped pkts: 0 bytes: 0 ]
[ qlength: 0/ 50 borrows: 0 suspends: 294 ]
[ qid=3 ifname=sk0 ifbandwidth=6Mb ]
Код: Выделить всё
pass out on $int_if proto tcp from !<local> to <local> flags S/SA keep state queue http_ua label "ua_in"
pfctl -sl
dcl 3861 0 0 0 0 0 0
ua_in 3692 0 0 0 0 0 0
/usr/home/riser#=> pfctl -sl
dcl 4261 0 0 0 0 0 0
ua_in 4062 0 0 0 0 0 0
/usr/home/riser#=> pfctl -sl
dcl 4704 0 0 0 0 0 0
ua_in 4485 0 0 0 0 0 0
не работает
pass out on $int_if proto tcp from any to <local> queue http_ua label "ua_in"
usr/home/riser#=> pfctl -sl
ua_in 784 0 0 0 0 0 0
/usr/home/riser#=> pfctl -sl
ua_in 1084 0 0 0 0 0 0
/usr/home/riser#=> pfctl -sl
ua_in 1350 0 0 0 0 0 0