Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 28 Jan 2007 12:37:15 -0500
From:      Richard Coleman <rcoleman@criticalmagic.com>
To:        Max Laier <max@love2party.net>
Cc:        "Bruce M. Simpson" <bms@freebsd.org>, freebsd-stable@freebsd.org, Pete French <petefrench@ticketswitch.com>
Subject:   Re: impossible rc.d ordering problem with stf and pf ?
Message-ID:  <45BCDF4B.5050002@criticalmagic.com>
In-Reply-To: <200701281815.37558.max@love2party.net>
References:  <E1HAsD1-0004VZ-3B@dilbert.ticketswitch.com>	<45BC97E2.4050603@FreeBSD.org> <45BCC255.3010101@criticalmagic.com> <200701281815.37558.max@love2party.net>

next in thread | previous in thread | raw e-mail | index | archive | help
Max Laier wrote:
> On Sunday 28 January 2007 16:33, Richard Coleman wrote:
>> Bruce M. Simpson wrote:
>>> Pete French wrote:
>>>> Am trying to solve a little problem with 'pf'. I have a ruleset
>>>> which has some firewall rules for the IPv6 interface stf0. This
>>>> works fine, except when I rreboot the machine, as the pf script is
>>>> run before the network_ipv6 script - so stf0 does not exist. but I
>>>> cannot work out how to arrange for stf0 to be created before the pf
>>>> script is run - as network_ipv6 requires 'routing', but the pf
>>>> script says it must be run before 'routing', if I am reading the
>>>> 'REQUIRE' and 'BEFORE' lines correctly.
>>> Just chiming in to confirm that this problem definitely exists.
>>> I don't have a solution, however, my IPv6 tunnels at home have all
>>> expired, so I may well get spare cycles to look at this the same time
>>> that I get spare cycles to revive the tunnels.
>>>
>>> BMS
>> Essentially the same problem exists with pf and ppp.  The tun device
>> (on which most of my pf rules depend) does not yet exist when pf is
>> started.
>>
>> Apparently, someone has looked at this before, since there are commands
>> to resync pf and ipf inside the rc.d script for ppp (in ppp_postcmd). 
>> But this still doesn't work, since ppp is still negotiating the
>> connection when this function is run, so pf fails a second time.  My
>> solution was to jam a "sleep 15" inside ppp_postcmd() right before the
>> point the commands to reload pf and ipf are run.  It's major ugly, but
>> it works.  Hopefully someone will find a better solution to these
>> problems.
> 
> In oder to solve these problems you have to understand why pf is failing.  
> This can be for three reasons:
> 
> 1) You use the interface name as address w/o dynamic lookup.  i.e. "... 
> from stf0 ..."
> 2) You use "set loginterface sft0"
> 3) You use the interface with ALTQ "altq on stf0 ..." (now this doesn't 
> work and wouldn't be a good idea either, but for tun0 it makes slightly 
> more sense).
> 
> To 1 and 2 there is a simple sollution: Don't do that then!  1 can easily 
> be defused by adding parentheses. i.e. "... from (stf0) ...".  If more 
> control is required you have to write explicit addresses in your 
> configuration anyway.  2 is obsolete by "pfctl -vvsI -i stf0" which has 
> all the counters for all the interfaces.  ALTQ is the only remaining 
> problem.  I did do some initial patches to tear down altq on interface 
> removal, which could be extended to work the other way 'round on 
> interface arrival - if only I had more time :-\

I remember trying a dynamic interface for tun before, and it failed.  But I now see that it was 
because I also use "set logininterface".  I didn't think to remove that.  Thanks for the help.  I'll 
give it a try.

Richard Coleman
rcoleman@criticalmagic.com



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?45BCDF4B.5050002>