Bug 203901

Summary: 'service local_unbound reload' stops name resolution inside jails (but not on host)
Product: Base System Reporter: fre.fbsdpr
Component: binAssignee: Dag-Erling Smørgrav <des>
Status: Closed FIXED    
Severity: Affects Many People CC: des
Priority: --- Flags: des: mfc-stable10+
des: mfc-stable9-
des: mfc-stable8-
Version: 10.1-RELEASE   
Hardware: Any   
OS: Any   
Attachments:
Description Flags
local_unbound verbosity 4 debug output none

Description fre.fbsdpr 2015-10-20 18:15:27 UTC
Created attachment 162258 [details]
local_unbound verbosity 4 debug output

Hi,

I did some unbound config changes and, since this was on a critical production system, thought a 'reload' would be more safe than a 'restart'.  This, however, bit me, since I did only check if name resolution was still working on the host.

A 'service local_unbound restart' will make it work inside jails again.

Jails are configured on a separate loopback interface (not lo0) and on a host local 10.x.x.x/28 network.  Host has "nameserver 127.0.0.1" in /etc/resolv.conf and jails have "nameserver 10.x.x.1".

Something that also caught my eye was, when doing a

  host# service local_unbound reload
  unbound-checkconf: no errors in /var/unbound/unbound.conf

I see a "Restart" message in /var/log/messages,

  Oct 20 00:04:07 host unbound: [59371:0] notice: Restart of unbound 1.4.22.
  Oct 20 00:04:07 host unbound: [59371:0] notice: init module 0: validator
  Oct 20 00:04:07 host unbound: [59371:0] notice: init module 1: iterator

whereas, for a

  host# service local_unbound restart
  Stopping local_unbound.
  Waiting for PIDS: 59371.
  Starting local_unbound.

I do not,

  Oct 20 00:03:25 host unbound: [59371:0] notice: init module 0: validator
  Oct 20 00:03:25 host unbound: [59371:0] notice: init module 1: iterator

For verbosity level 4 debug output for the 'reload'/SIGHUP and 'restart'/SIGTERM respectively, see attached file.
  
There are some differences but, lacking time and resources, we have not investigated further.  Instead we came to the conclusion that, for now, a 'service local_unbound reload' is unsafe and should never be used.
Comment 1 Dag-Erling Smørgrav freebsd_committer freebsd_triage 2015-12-01 13:24:42 UTC
Known bug in Unbound 1.5.4 and older, fixed in 1.5.5.  See r287918 for a patch.
Comment 2 Dag-Erling Smørgrav freebsd_committer freebsd_triage 2015-12-17 18:50:18 UTC
Can you confirm that this is fixed in stable/10, which now has 1.5.5?
Comment 3 fre.fbsdpr 2015-12-21 17:56:08 UTC
I'm sorry, I don't run any systems tracking stable/10, at least not yet.
Comment 4 Dag-Erling Smørgrav freebsd_committer freebsd_triage 2015-12-21 19:54:38 UTC
You can build and install Unbound alone:

% svn co svn://svn.freebsd.org/base/stable/10 stable10
% cd stable10/lib/libunbound
% make obj && make depend && make && sudo make install
% cd ../../usr.sbin/unbound
% make obj && make depend && make && sudo make install

Should only take a couple of minutes.  You need write access to /usr/obj/$PATH_TO_SRC_DIR (or drop the "make obj" step).