on startup gateway & dns- options in /etc/network/interfaces are not always set

Bug #1628552 reported by just me
20
This bug affects 3 people
Affects Status Importance Assigned to Milestone
ifupdown (Ubuntu)
Expired
Undecided
Unassigned
resolvconf (Ubuntu)
Expired
Undecided
Unassigned

Bug Description

recently i have upgraded 4 VM-based systems to 16.04.1 LTS (Xenial Xerus). on startup, settings within /etc/network/interfaces do not appear to be taking effect reliably. specifically, the gateway and dns- settings have been problematic for me. on subsequent restarts, all or some of the settings take effect other times the gateway is set and the dns- options are not set. very problematic when the default gateway is not added to the routing table.

the dns- settings were a bit easier to illustrate the issue. i added a comment to /etc/resolvconf/resolv.conf.d/base (# base) & etc/resolvconf/resolv.conf.d/tail (# tail).

$ cat /etc/resolvconf/resolv.conf.d/*
# base
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
# tail

on startup on 1 of the systems showed this:
$ cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
# tail

you can see the "# base" comment wasn't added.
let me know if i can add anymore details or if this should be posted somewhere else.

$ lsb_release -rd
Description: Ubuntu 16.04.1 LTS
Release: 16.04

$ apt-cache policy ifupdown
ifupdown:
  Installed: 0.8.10ubuntu1.1
  Candidate: 0.8.10ubuntu1.1
  Version table:
 *** 0.8.10ubuntu1.1 500
        500 http://us.archive.ubuntu.com/ubuntu xenial-updates/main amd64 Packages
        100 /var/lib/dpkg/status
     0.8.10ubuntu1 500
        500 http://us.archive.ubuntu.com/ubuntu xenial/main amd64 Packages

$ apt-cache policy resolvconf
resolvconf:
  Installed: 1.78ubuntu2
  Candidate: 1.78ubuntu2
  Version table:
 *** 1.78ubuntu2 500
        500 http://us.archive.ubuntu.com/ubuntu xenial/main amd64 Packages
        500 http://us.archive.ubuntu.com/ubuntu xenial/main i386 Packages
        100 /var/lib/dpkg/status

Revision history for this message
Thomas Hood (jdthood) wrote :

Comment lines from the "base" file are always omitted from resolv.conf. Try adding a line "search bogus.com“ and see if "bogus.com" shows up on the "search" line in resolv.conf.

Revision history for this message
just me (nevdull) wrote :

thank you. that of course worked (apologies for not fully understanding the parsing of the base file). interestingly enough, with that search addition in the base file, now the settings from /etc/network/interfaces are now showing up in resolv.conf (bogus.com is appended to the other dns-search settings) .... and on 3 successive startups.

Revision history for this message
Thomas Hood (jdthood) wrote :

Obviously the presence of material in the "base" file should have no effect on the processing of material from /etc/network/interfaces. Are you still sure that material from /e/n/i is sometimes incorrectly omitted from the /etc/resolv.conf file?

Revision history for this message
just me (nevdull) wrote :

well i've now been able to restart 3 of the 4 systems about 5-10x each through the day. all have had their gateway and dns- settings from /e/n/i reliably set. that is, until now. i've got one system that did not get gateway or dns- settings.

is there a way to check for a failure status code tied to ifup or resolvconf runs during startup?

$ cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
  address x.y.105.96
  netmask 255.255.252.0
# network x.y.104.0
  broadcast x.y.107.255
  gateway x.y.107.250
# dns-* options are implemented by the resolvconf package, if installed
  dns-nameserver x.y.105.44
  dns-nameserver x.y.147.98
  dns-search r.mydomain s.mydomain t.mydomain

$ cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN

note: i have since removed the comments from base & tail.

Revision history for this message
just me (nevdull) wrote :

note see package ifupdown bug #1573272. it would seem related but note that dns- settings are also problematic.

Revision history for this message
Thomas Hood (jdthood) wrote :

Are there cases where the interface is configured properly but resolv.conf is not updated to include material from the dns-* lines?

Revision history for this message
just me (nevdull) wrote :

yes i think all of them. the interface appears to always be configured correctly. however, sometimes the default gateway is not set, other times the dns- settings are not set, and still other times neither are set.

Revision history for this message
just me (nevdull) wrote :

bump! definitely a repeatable issue albeit sporadically. lost another system on reboot - no default gateway installed although it's set in /e/n/i. have to manually add route via rc.local and symlink /etc/resolv.conf.d/resolv.conf original to tail as workarounds.

Revision history for this message
Dan Streetman (ddstreet) wrote :

> well i've now been able to restart 3 of the 4 systems about 5-10x each through the day. all have
> had their gateway and dns- settings from /e/n/i reliably set. that is, until now. i've got one
> system that did not get gateway or dns- settings.

The gateway is set directly from ifup (by calling 'ip route add default via ...'). But the resolv.conf entries are set by the /etc/network/if-up.d/000resolvconf script, which is only run if all other interface configuration succeeded, so if you're missing the dns that could just mean some other part of the interface setup failed (e.g. setting the gateway).

> is there a way to check for a failure status code tied to ifup or resolvconf runs during startup?

are you using upstart or systemd? For upstart look in the /var/log/upstart/network* log files, for systemd look in /var/log/syslog.

Thomas Hood (jdthood)
Changed in resolvconf (Ubuntu):
status: New → Incomplete
Changed in ifupdown (Ubuntu):
status: New → Incomplete
Revision history for this message
Launchpad Janitor (janitor) wrote :

[Expired for resolvconf (Ubuntu) because there has been no activity for 60 days.]

Changed in resolvconf (Ubuntu):
status: Incomplete → Expired
Revision history for this message
Launchpad Janitor (janitor) wrote :

[Expired for ifupdown (Ubuntu) because there has been no activity for 60 days.]

Changed in ifupdown (Ubuntu):
status: Incomplete → Expired
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.