Postado originalmente por
etherlink
so um exemplo...
table <interna> {192.168.2.2, 192.168.2.1, 192.168.1.1, 192.168.1.8, 192.168.1.21, 192.168.1.23, 192.168.1.30, 192.168.1.31, 192.168.1.37, 192.168.1.40, 192.168.1.41, 192.168.1.42, 192.168.1.43, 192.168.1.95, 192.168.1.70}
set loginterface $int_if
set fingerprints "/etc/pf.os"
altq on $int_if bandwidth 100Mb cbq queue { dflt_in, uext1_in, uext2_in, uext3_in, uext4_in}
altq on $ext_if bandwidth 300Kb cbq queue { dflt_out }
queue dflt_in cbq(default) bandwidth 80%
queue dflt_out cbq(default)
queue uext1_in bandwidth 30Kb
queue uext2_in bandwidth 30Kb
queue uext3_in bandwidth 30Kb
queue uext4_in bandwidth 30Kb
uext1="192.168.1.70"
uext2="192.168.1.23"
uext3="192.168.1.95"
uext4="192.168.1.30"
nat on $ext_if from <interna> to any -> ($ext_if)
pass out on $int_if from any to $uext1 queue uext1_in
pass out on $int_if from any to $uext2 queue uext2_in
pass out on $int_if from any to $uext3 queue uext3_in
pass out on $int_if from any to $uext4 queue uext4_in