Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 24 Mar 2017 09:22:00 +0000
From:      Arthur Chance <freebsd@qeng-ho.org>
To:        Odhiambo Washington <odhiambo@gmail.com>
Cc:        "James B. Byrne" <byrnejb@harte-lyne.ca>, User Questions <freebsd-questions@freebsd.org>
Subject:   Re: Restaarting PF and its effects on jails and vms
Message-ID:  <2ba51e04-6065-b21a-367f-1137ab22d2bc@qeng-ho.org>
In-Reply-To: <CAAdA2WMudfmePPrHCOY8XcgCvDn-r78Ono-vrX_RdYn37nJMqw@mail.gmail.com>
References:  <d8c45fd2a689b07df63082aa04e036e7.squirrel@webmail.harte-lyne.ca> <f208af7c-1427-ea5e-e849-3f9055d56838@qeng-ho.org> <CAAdA2WMudfmePPrHCOY8XcgCvDn-r78Ono-vrX_RdYn37nJMqw@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On 24/03/2017 09:16, Odhiambo Washington wrote:
> On 24 March 2017 at 11:20, Arthur Chance <freebsd@qeng-ho.org> wrote:
> 
>> On 23/03/2017 18:29, James B. Byrne via freebsd-questions wrote:
>>> I am revising the pf configuration for the FreeBSD-10.3 host of a
>>> number of FreeBSD-11.0 BHyve instances. When I restart PF on the host
>>> then traffic to a number of guests gets blocked even though the
>>> ruleset says it should not be.
>>>
>>> Since the incoming ports for the blocked traffic appear to be from the
>>> upper dynamic range I infer that this traffic is related to
>>> connections established before PF was restarted and are now 'orphaned'
>>> in consequence.  In other words, had the initial connection between
>>> client anf service been made while PF was already running the traffic
>>> being blocked following a restart would have been let through as being
>>> part of an established connection.
>>>
>>> What is the recommended way of dealing with this issue when restarting
>>> PF, if there is one?
>>
>> Don't restart pf, reload it. "service pf reload" goes to great lengths
>> not to interfere with existing connections whereas "service pf restart"
>> blows away everything before restarting.
>>
>> This is fresh in my mind because I made exactly the same mistake last
>> week before remembering to reload. :-)
>>
> 
> A quick one, before I get to RTFM, is there an equivalent 'reload' option
> for pfctl (9.3-STABLE)?
> 

It's all pfctl. By using service(8) I was referring to the rc.d script
for pf, but that sits over pfctl. The reload part is (on 10.3)

pf_reload()
{
        echo "Reloading pf rules."
        $pf_program -n -f "$pf_rules" || return 1
        # Flush everything but existing state entries that way when
        # rules are read in, it doesn't break established connections.
        $pf_program -Fnat -Fqueue -Frules -FSources -Finfo -FTables
-Fosfp > /dev/null 2>&1
        $pf_program -f "$pf_rules" $pf_flags
}

Apologies if my mailer breaks the long line.

-- 
By June 1949, people had begun to realize that it was not so easy to
get a program right as had at one time appeared. It was on one of my
journeys between the EDSAC room and the punching equipment that the
realization came over me with full force that a good part of the
remainder of my life was going to be spent in finding errors in my own
programs.

	-- Maurice Wilkes



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?2ba51e04-6065-b21a-367f-1137ab22d2bc>