We should grep for "dns-nameservers" and not just for "dns-" in step 5 in the algorithm.
The algorithm will still fail in a case like this: === /e/n/i === auto eth0 iface eth0 inet static address 192.168.0.2 netmask 255.255.255.0 iface foo inet static dns-nameservers 1.2.3.4 ================ In this case the algorithm will fail to link tail to original (and thus, fail to cause /sbin/resolvconf to include the original as the tail of resolv.conf) because it will see a dns-nameservers line in a logical interface even though that logical interface isn't used. Perhaps we should only refrain from linking tail to original due to the presence of a dns-nameservers line if the default mapping is used and the dns- nameservers line found is in a logical interface definition whose name is listed on an "auto" line. That would be safer. (Remember, the consequences of wrongly omitting the link are worse than the consequences of wrongly creating it.) We can refine the algorithm even further but we will never be able to make it work perfectly under all possible circumstances. I've mentioned the "mapping" and "source" features but there are other ways in which the networking configuration may have been customized by the admin. There's no limit to what people may have put onto "up" lines. Because we can end up with tail linked to original in cases where it's not appropriate, it is important to minimize the negative consequences of this. I see one small way of reducing the possible negative impact of an unneeded tail->original. Consider that /sbin/resolvconf composes a resolv.conf file from: head base + dynamic content, ordered according to /etc/resolvconf/interface-order tail For nameserver addresses it's fine to include them in the tail file because any dynamically added addresses will precede them and thus override them. For "domain" and "search" lines it's not fine since, according to resolv.conf(5), the last instance wins. Thus a "domain" or "search" line in the original file will always override the dynamic "search" line. It would thus be better to include "domain" and "search" lines from the original file in the head file and not in the tail file. What I would propose is that instead of creating a symlink, the installation program splits up the original file into "head-from- original" (containing domain and/or search lines) and "tail-from- original" (including nameserver lines and anything else) and that /sbin/resolvconf builds resolv.conf from head head-from-original base + dynamic content tail-from-original tail -- Thomas -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/923685 Title: New resolver package overwrites manually created resolv.conf on server To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/resolvconf/+bug/923685/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs