0

Issue: You're running some Debian distribution, say, Ubuntu Server 18.04 or 20.04. You've specified an IP address parameter in a /etc/bind/named.conf:

  query-source address 192.168.30.2;
  listen-on { 127.0.0.1; 192.168.30.2; };

And, nutz. Now bind9 startup aborts at boot with syslog errors similar to:

Nov  8 11:06:52 cygnus named[1333]: could not get query source dispatcher (192.168.30.2#0)
Nov  8 11:06:52 cygnus named[1333]: loading configuration: address not available 
Nov  8 11:06:52 cygnus named[1333]: exiting (due to fatal error)
Nov  8 11:06:52 cygnus systemd[1]: bind9.service: Main process exited, code=exited, status=1/FAILURE
Nov  8 11:06:52 cygnus systemd[1]: bind9.service: Failed with result 'exit-code'.

But, you can run the init.d script manually, with:

/etc/init.d/bind9 start

and bind9 starts just fine. You've cranked-up debug for bind9, but logging just keeps reporting [correctly, if maybe lacking in verbosity] the necessary IP address is not available.

You search the InnerTubes and note the issue has been reported as a bug to ISC -- and rejected as not a bug -- multiple times over the past decade. [True; it's not an ISC BIND9 bug.]

Grrr.

4
  • 1
    This is a Q&A site - please move the solution into an answer. You will then be able to accept your own answer after a short grace period. – steeldriver Nov 8 '20 at 22:22
  • What does "move" mean here? There's no toggle switch for "answer" vs "question." Or, perhaps it's just hidden from my view. – MandyBaxter Nov 9 '20 at 15:28
  • Is there a "Your Answer" box below the question? I'm not sure what's visible for new users... – steeldriver Nov 9 '20 at 17:22
  • It has been several days, and OP has not corrected the post so I have moved everything after "Solution" to an answer – Nmath Nov 13 '20 at 0:52
0

The following answer was submitted by the question's author who originally posted the answer as part of the question:


Solution: Actionable clues were found at https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/

[The opening of the post is a screed describing the underlying misunderstanding of a specific systemd configuration parameter. Specifically, it notes the "network.target" argument in the *.service files does NOT mean what any normal human might expect the term "network.target" to mean. "loaded.bananas" would mean as much. So it's really not the bind9 distro managers' fault. It's not; they're normal humans, probably. Maybe?]

If you're really in a hurry, skip down to, "Cut the crap! How do I make sure that my service starts after the network is really online?" There, you'll read about what to do about the problem. To summarize for bind9 --

Edit:

vi /etc/systemd/system/multi-user.target.wants/bind9.service

replace:

After=network.target (See the FUBAR? No? Hence the screed.)

with:

After=network-online.target
Wants=network-online.target

Save the file. Reboot:

init 6

log back in, verify bind9 has started as you'd like.

root@cygnus:/etc/bind# ps ajx | grep named
    1  1704  1704  1704 ?           -1 Ssl    121   0:01 /usr/sbin/named -f -u bind
or maybe:
root@draco:/etc/bind# ps ajx | grep named
    1  1258  1258  1258 ?           -1 Ssl    110   0:02 /usr/sbin/named -f -u bind -t /var/lib/named -c /etc/bind/named.conf

P.S.: Distro folks -- please review all of the *.service configs; this insidious "network.target" misinterpretation is probably not unique.

P.P.S.: Grr: "Creating the new tags 'listen-on named network.target' requires at least 300 reputation. Try something from the existing tags list instead."

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.