Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 16 Dec 2009 19:50:36 -0800
From:      Doug Hardie <bc979@lafn.org>
To:        freebsd-questions - <freebsd-questions@freebsd.org>
Subject:   Re: I am not understanding something about pf
Message-ID:  <59459CE1-CC01-40A2-88C0-7098F7D2ADE8@lafn.org>
In-Reply-To: <F382ED5D-85A1-4365-9395-4D391405ACBE@lafn.org>
References:  <F382ED5D-85A1-4365-9395-4D391405ACBE@lafn.org>

next in thread | previous in thread | raw e-mail | index | archive | help

On 11 December 2009, at 19:30, Doug Hardie wrote:

> I am running 7.2-Stable with pf.  I have the following pf.conf:
>=20
> no rdr inet proto tcp from <spamd-white-local> to any port smtp
> no rdr inet proto tcp from <spamd-white> to any port smtp
> rdr pass inet proto tcp from any to any port smtp -> 127.0.0.1 port =
spamd
>=20
> This is the basic spamd configuration with an extra table =
<spamd-white-local> which lists hosts to go directly to the mail server. =
 Everything works properly.  Hosts not in either spamd table go to spamd =
and those in either spamd table go directly to the mail server.  =
However, the pf statistics don't seem to make sense to me.  I always see =
the following:
>=20
> no rdr inet proto tcp from <spamd-white-local> to any port =3D smtp
>  [ Evaluations: 1193433   Packets: 0         Bytes: 0           =
States: 0     ]
>  [ Inserted: uid 0 pid 73310 ]
> no rdr inet proto tcp from <spamd-white> to any port =3D smtp
>  [ Evaluations: 110124    Packets: 0         Bytes: 0           =
States: 0     ]
>  [ Inserted: uid 0 pid 73310 ]
> rdr pass inet proto tcp from any to any port =3D smtp -> 127.0.0.1 =
port 8025
>  [ Evaluations: 110124    Packets: 63        Bytes: 3516        =
States: 1     ]
>  [ Inserted: uid 0 pid 73310 ]
>=20
> Where the first two entries never show any Packets and the third shows =
everything.  Does "no rdr" work differently than "rdr" with the =
statistics?  I understood from the Book of PF that the rules were =
evaluated such that the last matching rule is used.  Hence I think that =
with the above conf file the spamd-white-local table would never get =
used as the connection will match one of the 2 following rules.
>=20
> So I ran another test by putting the first rule last:
>=20
> no rdr inet proto tcp from <spamd-white> to any port smtp
> rdr pass inet proto tcp from any to any port smtp -> 127.0.0.1 port =
spamd
> no rdr inet proto tcp from <spamd-white-local> to any port smtp
>=20
> Now entries in <spamd-white-local> are ignored and, the statistics are =
quite different:
>=20
> no rdr inet proto tcp from <spamd-white> to any port =3D smtp
>  [ Evaluations: 79        Packets: 0         Bytes: 0           =
States: 0     ]
>  [ Inserted: uid 0 pid 86983 ]
> rdr pass inet proto tcp from any to any port =3D smtp -> 127.0.0.1 =
port 8025
>  [ Evaluations: 52        Packets: 25        Bytes: 1395        =
States: 1     ]
>  [ Inserted: uid 0 pid 86983 ]
> no rdr inet proto tcp from <spamd-white-local> to any port =3D smtp
>  [ Evaluations: 0         Packets: 0         Bytes: 0           =
States: 0     ]
>  [ Inserted: uid 0 pid 86983 ]
>=20
>=20
> Now the last rule says its never evaluated.  This indicates that its =
the first rule that matches that is used rather than the last.  However, =
why are there never any packets counted in the "no rdr" rules?
>=20


It appears that my reply with the full pf.conf didn't make the list.  Am =
trying again.

MAILHOSTS =3D "{zoon.lafn.org}"

table <spamd> persist
table <spamd-white> persist
table <spamd-white-local> persist file "/etc/mail/whitelist"

no rdr on { lo0, lo1 } from any to any
no rdr inet proto tcp from <spamd-white-local> to any port smtp
no rdr inet proto tcp from <spamd-white> to any port smtp
rdr pass inet proto tcp from any to any port smtp -> 127.0.0.1 port =
spamd
pass in log inet proto tcp to $MAILHOSTS port smtp keep state




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?59459CE1-CC01-40A2-88C0-7098F7D2ADE8>