Comment 4 for bug 1384394

Steve Langasek (vorlon) wrote :

Ok. So the crucial thing shown here is that in addition to the br interfaces, you have NetworkManager. NetworkManager sets 'nameserver 127.0.1.1', which by design will redirect DNS requests to a local dnsmasq proxy, with dnsmasq itself picking up the configured nameservers instead; and when set, resolvconf will truncate the dns server list (because 127.*.*.* is special), so you won't see these in /etc/resolv.conf.

The only thing I can't figure out is why changing the order of processing of the interfaces has any effect at all for you, since NetworkManager should still be processed and the 127.0.1.1 should still take precedence.

So the root problem is that dnsmasq doesn't have an interface that allows injecting of individual dns servers into its config, which means it can only interface with a single client at a time - in this case, NetworkManager, which doesn't know about network interfaces that are configured via ifupdown.

NetworkManager and ifupdown can coexist rather reasonably together, and have done so for quite a while, but they can't coexist very well when dnsmasq is used.

So there are several workarounds you could employ at the configuration level:
 - change /etc/NetworkManager/NetworkManager.conf to not use 'dns=dnsmasq'
 - if you aren't using any interfaces other than the bridges, disable use of NetworkManager altogether.

Regardless, it's a limitation of dnsmasq that it doesn't have a proper dbus interface for controlling dns servers.