This kind of stunt is why I dislike Linux


  • Fri 12 December 2014
  • misc

Everyone who's configured Debian-flavored Linux to use static addresses (like, say, a server) is familiar with /etc/network/interfaces.

This is where you configure your nameservers too. There's a stanza under the interface definition called "dns-nameservers". You can put one or more nameservers there, to be propagated into /etc/resolv.conf by a program called "resolvconf".

So far so good. On Ubuntu 14.04LTS (at least), there is the following behavior:

If your list of nameservers begins with 127.0.0.1, then only 127.0.0.1 is put in /etc/resolv.conf If your list of nameservers has 127.0.0.1 in it, but does not begin with 127.0.0.1, then all addresses are put in resolv.conf. If your list of nameservers doesn't have 127.0.0.1 in it, then all addresses are put in resolv.conf.

This looks to me like violating the Principle of Least Astonishment in the name of facilitating some kind of thing-that-makes-stuff-work-better-for-n00bs. I have no way of knowing for sure though... because of course this behavior is not documented in the man page. And I don't happen to have a spare hour to download source code and dig through it, having already burned that hour trying to debug this behavior.