On Thu, Jan 07, 2016 at 08:11:48PM +0100, Christoph Anton Mitterer wrote:

> > First, this is not a critical bug. No unrelated software is actually
> > broken, it's just that at boot, apparently some services are started
> > earlier than your network devices are configured.
> Quoting:
> >critical
> >makes unrelated software on the system (or the whole system) break
> ...
> 
> Other software cannot even start anymore because of that...
> If ssh would be affected (which it probably could be, just based on
> timing) one may not even be able to log-in anymore.
> 
> What else would you call breaking unrelated software?
> ;-)

Suppose the battery of your car key was dead, and it wouldn't unlock
your car anymore. Does this break your car? Sure, you cannot drive your
car anymore which is really annoying, but the car itself is perfectly
fine and not broken.

This issue with ifupdown does not *break* any other software. Breaking
is when the ifupdown package would start overwriting files from other
packages or doing other stuff that would prevent them from working
correctly even if you manually started them.

> > From your /etc/network/interfaces:
> > 
> > > allow-hotplug   eth0
> > 
> > If you do this, eth0 will be brought up by hotplugging events, which are
> > handled completely asynchronous wrt. the normal bootup sequence. So it
> > could very well be that systemd tries to start named, bind and sks
> > before eth0 is configured.
> 
> I think that was also the reason last time, and IIRC Michael added back
> some udevadm settle... or so which solved it.

Indeed.

> >  Please change that line to:
> > 
> > auto eth0
> It does, but the question is whether we can already consider this fixed
> by that.

I think you can, since this will cause the configuration of eth0 to be
done by networking.service, which is always run before
network-online.target, so is also run before services like bind, sks,
et cetera. Try it out!

> IIRC, the installer does allow-hotplug per default... so many if not
> most systems will use this to bring up their ifaces, especially on
> server systems, where NM hasn't started its invasion yet ;)

The problem in your case is that you explicitly bind services to
specific IP addresses. If you didn't, then they would allow incoming
traffic on any IP address, and they wouldn't care which addresses were
already configured by the time those services were started. So you
created a situation where some services depend on specific addresses.
There is currently unfortunately nothing in the whole boot process,
whether you are using systemd or sysvinit, or ifupdown or
network-manager, that will ensure such a dependency is satisfied.

In fact, it was pure luck that your setup worked with ifupdown 0.7.54,
because even then there was nothing explicitly ensuring that hotplug
interfaces were configured before networking services were started.

Because the installer cannot tell whether a network device is something
that is onboard or whether it is something that is plugged in later, it
defaults to allow-hotplug (which covers both cases). This also works
fine with the default configuration of almost all network services.

But of course, there are cases such as yours where it doesn't work like
you want it to. One idea we have is to add a systemd service that delays
network-online.target until some (configurable) condition is met. The
question is then what that condition is. Some possibilities are:

* Wait for a default gateway to be configured
* Wait for a specific interface to be brought up
* Wait for a specific address to be configured on any interface

I guess the latter two would work equally well for you. Once I have a
package that implements this, I'll ask you to test it.

-- 
Met vriendelijke groet / with kind regards,
      Guus Sliepen <g...@debian.org>

Attachment: signature.asc
Description: Digital signature

Reply via email to