Trying to figure out what's going wrong here, and at this point, I'm
stumped.  I'm trying to place traffic being served from apache above
that of bulk transfers (BitTorrent, primarily), yet according to pfctl
-vvsq, they're both ending up in the 'bulk' queue as defined by my
rules.  Since the 'user www' rule comes AFTER the default queue, I would
think all traffic originated by the server would get the higher
priority, but it isn't.  Suggestions?

# cat /etc/pf.conf
# Define interfaces
int_if = "sis1"
dmz_if = "sis2"
ext_if = "pppoe0"
laptop = "192.168.0.3"
xp = "192.168.0.4"
priv_nets = "{ 127.0.0.0/8, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 }"

set optimization aggressive
scrub in all
scrub out on $ext_if max-mss 1440

# Queueing
# TCP/ACK frames get first dibs, followed by DNS, surfing, webserver, and
# the unwashed masses.
altq on $ext_if priq bandwidth 768Kb queue { bulk, server, web_req,
dns_out, tcp_ack_out }
queue bulk priq(default)
queue server priority 2
queue web_req priority 4
queue dns_out priority 5
queue tcp_ack_out priority 6

nat-anchor "ftp-proxy/*"
rdr-anchor "ftp-proxy/*"
nat on $ext_if from !($ext_if) -> ($ext_if:0) static-port
rdr pass on $int_if proto tcp to port ftp -> 127.0.0.1 port 8021
rdr pass on $ext_if proto { tcp, udp } from any to any port 9980:9989 ->
$xp port 9980:*
rdr pass on $ext_if proto { tcp, udp } from any to any port 6081 -> $xp
port 6081
rdr pass on $ext_if proto tcp from any to any port 9990:9999 -> $laptop
port 9990:*
rdr pass on $ext_if proto tcp from any to any port 9000 -> 192.168.0.2
port 80

# Filtering begins
anchor "ftp-proxy/*"
pass quick on $int_if all keep state
pass quick on $dmz_if all keep state
pass quick on 127.0.0.1 all keep state
block drop on $ext_if all

# Microsoft has pissed me off for the last time
block quick from any to 207.46.0.0/12

# Clean invalid SRC/DST packets
block in  quick on $ext_if from $priv_nets to any
block out quick on $ext_if from any to $priv_nets

# Pass in allowed servers/proxies
pass in on $ext_if proto tcp from any to ($ext_if) port ssh flags S/SA
keep state
pass in on $ext_if proto tcp from any to ($ext_if) port www flags S/SA
keep state
pass in on $ext_if proto tcp from any to ($ext_if) port smtp flags S/SA
keep state

# Out to the 'net
pass out on $ext_if from ($ext_if) to any modulate state queue(bulk,
tcp_ack_out)
pass out on $ext_if proto tcp from ($ext_if) to any user www modulate
state queue server
pass out on $ext_if proto { tcp, udp } from ($ext_if) to any port {
http, https } modulate state queue (web_req, tcp_ack_out
)
pass out on $ext_if proto { tcp, udp } from ($ext_if) to any port domain
modulate state queue dns_out
# End

Reply via email to