<div dir="ltr">20-60 second retry is probably better than 10.  Also when you start the script in /etc/rc.local you can run it at nice +20 or something so it isn't given cpu priority.  And you can get a lot more sophisticated too, retrying more often just after the script starts and less often afterwords.<div><br></div><div>-Matt</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Sep 5, 2016 at 4:50 AM, Richard Nyberg <span dir="ltr"><<a href="mailto:rnyberg@murmeldjur.se" target="_blank">rnyberg@murmeldjur.se</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">The script will be a useful workaround. Many thanks!<br>
<br>
Regards,<br>
-Richard<br>
<div class="HOEnZb"><div class="h5"><br>
On 5 September 2016 at 07:35, Matthew Dillon <<a href="mailto:dillon@backplane.com">dillon@backplane.com</a>> wrote:<br>
> I have this problem too, its likely a bug in our PF implementation.  What I<br>
> do is have a little script which I start in the background (using the notty<br>
> command) from /etc/rc.local which checks whether the DHCP assignment has<br>
> changed on the interface and then reloads the PF rules if it has.<br>
><br>
> To reload the rules:<br>
><br>
> pfctl -d<br>
> pfctl -F all<br>
> pfctl -f /etc/pf.conf<br>
> pfctl -e<br>
><br>
> There are a few ways to detect whether the DHCP assignment has changed.  The<br>
> easiest is for the script to save the output from the ifconfig command<br>
> filtering for 'inet'.  e.g.  something like this:<br>
><br>
> # set fubar1 to force initial reload<br>
> #<br>
> set fubar1 = "xx"<br>
><br>
> while (1)<br>
>     set fubar2 = `ifconfig igb0 | fgrep inet`<br>
>     if ( "$fubar1" != "$fubar2" ) then<br>
>         (reload PF rules here)<br>
>     endif<br>
>     sleep 10<br>
>     set fubar1 = "$fubar2"<br>
> end<br>
><br>
> Obviously not the best solution but it works as a monitor.<br>
><br>
> I think PF is supposed to pick-up changes automatically when an interface is<br>
> specified like that, but our PF doesn't appear to.<br>
><br>
> -Matt<br>
><br>
> On Sun, Sep 4, 2016 at 2:33 AM, Richard Nyberg <<a href="mailto:rnyberg@murmeldjur.se">rnyberg@murmeldjur.se</a>><br>
> wrote:<br>
>><br>
>> Hello users,<br>
>><br>
>> I've set up a df4.6 box as an internet gateway and samba fileserver at<br>
>> home. It gets it's external IP address via dhcp on re0. The problem is<br>
>> that after this machine has booted, I need to run "rcrestart pf".<br>
>> Otherwise the machines on the internal network can't access the<br>
>> internet.<br>
>><br>
>> Any thought on this? The servers rc.conf and pf.conf are below.<br>
>><br>
>> ### pf.conf begin<br>
>><br>
>> ext_if="re0"<br>
>> int_if="em0"<br>
>><br>
>> scrub in<br>
>><br>
>> nat on $ext_if from $int_if:network -> ($ext_if)<br>
>><br>
>> block in<br>
>> pass out keep state<br>
>><br>
>> pass quick on { lo $int_if }<br>
>><br>
>> pass in on $ext_if proto tcp to ($ext_if) port ssh keep state<br>
>> pass in on $ext_if proto { tcp udp } to ($ext_if) port 51403 keep state<br>
>> pass in on $ext_if proto { tcp udp } to ($ext_if) port 51413 keep state<br>
>><br>
>> ### pf.conf end<br>
>><br>
>> ### rc.conf begin<br>
>><br>
>> powerd_enable="YES"<br>
>> dntpd_enable="YES"<br>
>> samba_enable="YES"<br>
>> sshd_enable="YES"<br>
>><br>
>> dbus_enable="YES"<br>
>> avahi_daemon_enable="YES"<br>
>><br>
>> dhcpd_enable="YES"<br>
>> dhcpd_flags="-q"<br>
>> dhcpd_conf="/usr/local/etc/<wbr>dhcpd.conf"<br>
>> dhcpd_ifaces="em0"<br>
>> dhcpd_withumask="022"<br>
>><br>
>> dumpdev="/dev/serno/<wbr>S246J90Z339652.s1b"<br>
>><br>
>> hostname="gorg.lan"<br>
>><br>
>> ifconfig_re0="DHCP"<br>
>> ifconfig_em0="inet 10.5.2.1 netmask 0xffffff00"<br>
>><br>
>> gateway_enable="YES"<br>
>> pf_enable="YES"<br>
>><br>
>> ### rc.conf end<br>
>><br>
>> Best regards,<br>
>> -Richard<br>
><br>
><br>
</div></div></blockquote></div><br></div>