I think this can be explained by the default state policy (which is
floating) in pf. Consult the man page and look for 'set state-policy'.
I think that by default, because you're letting the packets through in
your first 'pass' rule you create state. When you get to the outside
interface you match this existing state (because the state policy is
set to floating) and your second 'pass' rule never evaluates.

One quick way to determine this is to set your state policy to
'if-bound' and then check whether or not you have the same behavior.

-Martin

On 3/14/07, Ryan Corder <[EMAIL PROTECTED]> wrote:
I have a fairly simple ruleset and it doesn't seem to be working right
for me...at least it doesn't make much since.

========

ext_if="bge0"
int_if="bge1"

table <outside> const { 10.0.1.0/24, 10.0.2.0/24, 10.0.3.0/24 }
table <inside>  const { 10.0.4.0/24, 10.0.5.0/24 }
table <others>  const { 172.18.114.35 }

block log all label "default block"

pass  in on $int_if from <inside> to any tag INSIDE keep state
pass out on $ext_if from <inside> to { !<outside>, !<others> } tagged
INSIDE keep state flags S/SA

========

here is the problem, from a machine on the 10.0.5.0/24 subnet, I can
connect to any IP and any port on the 10.0.3.0/24 subnet.  the way the
two pass rules are written, I was thinking that I would be able to
connect to anything EXCEPT the subnets listed in <outside> and <others>.

what am I missing here?

thanks.
ryanc

--
Ryan Corder <[EMAIL PROTECTED]>
Systems Engineer, NovaSys Health LLC.
501-219-4444 ext. 646

[demime 1.01d removed an attachment of type application/pgp-signature which had 
a name of signature.asc]




--
"Suburbia is where the developer bulldozes out the trees, then names
the streets after them."

                                                  --Bill Vaughan

Reply via email to