Привет всем. Решил перейти с ipfw на pf(packet filter). Вот немогу никак разобраться с скоростью Вот схема сети
(inet)---(freebsd 192.168.100.1)---(linux 192.168.100.2, 192.168.0.1)---(users 192.168.0.0)
в линухе все прозрачно в фаерволе все разрешено
Версия FreeBSD 7.1-Release
Проблема заключается в том что исходящий трафик нормально в очередь становится и забивается под пропускную способность, которую я указал, но вот вхоящий вообще мимо очереди проходит.
Вот мой конфиг pf
#-------------------------
# Variables and Macros
#-------------------------
# interfaces
inet_if = "tun0"
ext_if = "em0"
int_if = "xl0"
#-------------------------
# ip addresses
#-------------------------
extnet = "{ 10.0.0.0/8, 192.168.252.0/24 }"
lannet = "{ 192.168.0.0/24, 192.168.2.0/24, 192.168.100.0/24 }"
ext_ip = "xxx"
lhc = "192.168.100.1"
server = "192.168.0.1"
igmp_net = "224.0.0.0/4"
private_nets = "{ 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 }"
table <uaix> persist file "/etc/pf/prefixes.txt"
#-------------------------
# Ports
#-------------------------
sshlhc = "54390"
sshserver = "54391"
server_ports = "{ http, " $sshlhc $sshserver ", rdp, smtp, pop3, ftp, ftp-data, domain }"
#-------------------------
# Options
#-------------------------
# Default policy
set block-policy drop
# Type of optimization
set optimization normal
# State-policy
set state-policy floating
# skip pf on lo0 interface
set skip on lo0
# Normaliztion for all interfaces
scrub in all
set ruleset-optimization basic
#-------------------------
# Queue & Speed Control
#-------------------------
# altqs
altq on $int_if cbq bandwidth 1000Mb queue { def_download }
altq on $inet_if cbq bandwidth 1000Mb queue { def_upload }
queue def_download on $int_if bandwidth 100% cbq(default) { 192.168.0.10_ii, 192.168.0.10_ui }
queue def_upload on $inet_if bandwidth 100% cbq(default) { 192.168.0.10_io, 192.168.0.10_uo }
# users1 queues
# users2 queues
queue 192.168.0.10_ii bandwidth 512Kb cbq(ecn)
queue 192.168.0.10_io bandwidth 256Kb cbq(ecn)
queue 192.168.0.10_ui bandwidth 5120Kb cbq(ecn)
queue 192.168.0.10_uo bandwidth 512Kb cbq(ecn)
#--------------------------
# NAT & Redirect
#--------------------------
# Nat from local net to inet
nat on $inet_if from $lannet to any -> $ext_ip
# Nat from local net to ext_net
nat on $ext_if from $lannet to $extnet -> ($ext_if)
# Redirect ports
# to server ssh
rdr on $inet_if proto tcp from any to $ext_ip port 54391 -> $server port 22
# to igor
rdr on $inet_if proto tcp from any to $ext_ip port rdp -> 192.168.0.8 port 3389
# to virtual terminal
#rdr on $inet_if proto tcp from any to $ext_ip port 3390 -> 192.168.0.17 port 3389
#--------------------------
# Filter Rules
#--------------------------
block all
#--------------------------
# Out Connections
#--------------------------
pass out from (self) to any
#--------------------------
# Inet to Users
#--------------------------
# users1 filters
# users2 filters
pass out on $inet_if from any to 192.168.0.10 queue 192.168.0.10_ii
pass in on $int_if from 192.168.0.10 to any queue 192.168.0.10_io
# unlim users filters
когда я комментирую строчку pass out on $inet_if from any to 192.168.0.10 queue 192.168.0.10_ii , то интернет у пользователя всеравно есть.
Я заметил на то что pass out from (self) to any это правило влияет.
Вот непонятно почему пакет не проходит по pass out on $inet_if from any to 192.168.0.10 queue 192.168.0.10_ii этому правилу?? как сделать чтобы он прошел по нему?
Я уже измучался. Заранее благодарю