On Tue, 1 Sep 2009 17:12:37 +0200 Henning Brauer <henn...@openbsd.org>
wrote:

> I have just committed a monster pf diff that is basically a rewrite of
> the entire NAT part.
> 
> seperate rules for nat, rdr etc are gone.
> 
> nat and rdr become actions on regular rules.
> 
> simple rulesets are converted like this:
> 
>   nat on $ext_if to ($ext_if)
> becomes
>   match out on $ext-if nat-to ($ext_if)
> 
> more complex rulesets require some thought. since the weird
> difference in matching order is gone (nat/rdr were first match) you
> might have to reverse things and use your brains :)
> 
> the new NAT code is very very very flexible. every matching "match"
> rule changes the adress on the fly (not really, but that is what it
> looks like for subsequent rules), and you can nat or rdr multiple
> times. for pass rules, only the last matching one matters.
> 
> so given
>   match out on $ext_if nat-to 1.2.3.4
>   match out on $ext_if to 1.2.3.4 nat-to 5.6.7.8
> both rules will match and 5.6.7.8 will be the new src address.
> however, with
>   pass out on $ext_if nat-to 1.2.3.4
>   pass out on $ext_if nat-to 5.6.7.8
> ONLY the second one matters for NAT. same semantic that match rules
> have for a lot of other stuff (altq, rtable, log, scrub).
> 
> the core logic, that relies on the big state table rewrite ryan and I
> (with help from otehr developers of course) did last year, allows for
> nat and rdr in any direction, but for now we prevent that in pfctl and
> force nat outbound and rdr inbound, there are nontrivial implications
> for the routing afterwards - if you rdr outbound, the packet will go
> out on the interface it was seen on, even if the route for the address
> rdr'd to actually points to a different interface. with NAT there are
> similiar implications for the return traffic. since they are useful
> nontheless I tend to remove the check in pfctl and document the
> implications, but one thing after each other.
> 
> the diff is over 3000 lines, and makes pf about 800 lines smaller
> than it was before. more cleanup is possible on top of this, but as
> said before, one step at a time.
> 
> to add another data point how important hackathons are... this was
> almost entirely written at c2k9 in edmonton and "finished" (minus a
> few bugs fixed later) the week thereafter on bob's couch. while the
> diff was almost entirely written by me, getting this actually into the
> tree was a concerted effort by many developers. claudio adjusted
> ftp-proxy, sthen ported that adjustment over to tftp-proxy, reyk
> adjusted relayd. many people were testing a lot, I'm sure I forget a
> few, but at least krw, sthen, claudio, reyk, dhill and dlg (who was
> insane enough to throw this on production firewalls with significant
> importance) helped a lot. igor did most of the manpage work. theo
> helped getting it in, a lot. thanks guys.
> 
> and now it is your time. test this as much as you can, to avoid
> surprises in 4.7, and bugs showing up after release... we really want
> to find them beforehands, right?
> 
> henning
> 

Henning and all, Fantastic Work!

One question, is this in snaps now?
Or should I wait a few days for new snaps?

-jon
-- 
J.C. Roberts

Reply via email to