On Tue, 18 Mar 2014 01:15:16 +0000 (UTC)
Stuart Henderson <s...@spacehopper.org> wrote:

> The ruleset is now traversed in order, changes made in match rules
> are "sticky" and affect rules lower down in the ruleset. More
> predictable, no more "oh this 'nat pass' rule which you included
> halfway down the ruleset actually takes effect before the
> 'block quick' rule right at the top"... so besides allowing for
> cleaner rulesets, you could say it's a security fix too.

I am using "new" syntax for years now, and although there are a lot of
improvements, there is also downside.

I have /24 public network, where I need to have one "catch all" NAT
rule, but also exceptions (smtp servers translate to other public IPs,
vpn clients to their own public IPs etc).

If I have a lot of subnets behind NAT firewall, I need to specify them
all for "catch all" NAT rule, listing exceptions (this is of course
shortened, actually I need to declare 100 or so networks and dozens of
exceptions):

table <catchallnat> { 10.20.69.0/24 10.43.26.0/22 \
                      !10.20.69.15 !10.43.26.29 }
smtp = { 10.20.69.15 }
vpn  = { 10.43.26.29 }
...
match out on $ext_if inet from <catchallnat> to any nat-to $catchallnat
match out on $ext_if inet from $smtp to any nat-to $smtp-nat
match out on $ext_if inet from $vpn  to any nat-to $vpn-nat

I don't know if there would be negative consequences for other pf
aspects, but for me it would be better if more specific match rules
overrided more general match rules. This way I would not have to
maintain <catchallnat> table with list of subnets and exceptions.
-- 
Marko Cupać

Reply via email to