Bug#846944: Installing libnss-resolve before libnss-mdns breaks mDNS name resolution
Michael Biebl
biebl at debian.org
Fri Jan 13 21:24:58 GMT 2017
Control: severity -1 normal
Hi Simon
Am 12.01.2017 um 20:10 schrieb Simon McVittie:
> Control: clone 846944 -2
> Control: reassign -2 libnss-mdns 0.10-7
>
> On Thu, 08 Dec 2016 at 15:20:34 +0100, Michael Biebl wrote:
>> With multiple packages mangling nsswitch.conf, this feels like it's
>> becoming very brittle and maybe we need a proper API like pam-auth-update.
>
> That would be nice, but let's not block on that for stretch.
Nod
> On Thu, 08 Dec 2016 at 15:30:53 +0100, Michael Biebl wrote:
>>> So maybe the "obvious" fix is to change libnss-mdns to always insert itself
>>> before dns *and* resolve? On the other hand, it's quite ugly that mdns needs to
>>> be taught to cope with this new nss module.
>
> Solving this in nss-mdns is pretty easy so I'd be OK with going ahead with
> that for stretch (and I'd be prepared to consider it RC). Cloning the
> bug accordingly. I've written autopkgtests and they seem to work.
Thanks for implementing that. Given this change in libnss-mdns, I'm
going to downgrade the severity to non-RC.
>> So, libnss-resolve's behaviour of using [!UNAVAIL=return] would break
>> LDAP hosts resolution as well.
> [...]
>> It seems like [!UNAVAIL=return] is generally not safe to use if you
>> don't know which NSS modules might come after yours.
>
> Yes. However, I can't think of any other way to get the desired
> behaviour of nss-resolve, which is: if systemd-resolved responds
> "that name doesn't exist in DNS", don't ask the dns plugin to look it up
> in DNS again.
>
> I think the real issue here is perhaps that we have modules that try to
> prioritize themselves lower than "dns", but are not a mere fallback like
> libnss-myhostname is.
>
>>> libnss-lwres - NSS-Modul um bind9-lwres als Namensdienst zu nutzen
>
> Installation is not automated, and I don't see why anyone would want to
> use this and systemd-resolved on the same system anyway (this one only
> does traditional port 53 DNS, so it's a strict subset of systemd-resolved).
>
> Perhaps libnss-resolve should just have a Conflicts on it? Using both
> makes no sense.
There are a lot of packages which don't make sense to have installed
alongside systemd. Adding Conflicts to all of them is not a path I want
to go down
>
>>> libnss-ldap - NSS-Modul für den Einsatz von LDAP als Namensdienst
>
> Installation is not automated, but the example suggests appending ldap
> after dns, so libnss-resolve will indeed break it.
>
> But it's orphaned, has many long-standing bugs that to be honest
> should probably be RC, and has enough design issues that libnss-ldapd
> was written as a replacement... so perhaps libnss-resolve should just
> conflict with it and move on. (Remember, this is the plugin that pulls
> libldap, GNUTLS, libsasl and Kerberos into every process that looks up
> usernames...)
>
> The example configuration says
>
> # consult DNS first, we will need it to resolve the LDAP host. (If we
> # can't resolve it, we're in infinite recursion, because libldap calls
> # gethostbyname(). Careful!)
> hosts: dns ldap
>
> which is just horrible tbh - as a bare minimum it should special-case
> its own server name to be skipped! libnss-ldapd fixes that design issue.
>
>>> libnss-ldapd - NSS-Modul für den Einsatz von LDAP als Namensdienst
>
> This goes at the end, so libnss-resolve will break it. But
> perhaps it shouldn't - its own documentation says
>
> # hostname lookups through ldap before dns should work now
> hosts: files ldap dns
>
>>> libnss-myhostname - nss module providing fallback resolution for the current hostname
>
> This goes at the end of the line as a fallback, but systemd-resolved
> has all the functionality of libnss-myhostname, so not running it
> is harmless.
>
>>> libnss-docker - nss module for finding Docker containers
>>> libnss-gw-name - nss module that names the current gateway’s IP address
>
> These are prioritized slightly lower than 'files', so they come before
> both mdns and resolve - conceptually, it's as though you added all
> your containers, and your gateway, to /etc/hosts. That's fine.
>
>>> libnss-mymachines - nss module to resolve hostnames for local container instances
>
> This is meant to be after files but before resolve (so the same position
> as libnss-docker and libnss-gw-name). Are you deliberately installing it with
> a lower priority than upstream's recommendation?
We'll have to look into this. This change was made by Felipe in
7da95fd9f9a2330ffd3132c6673b25f929a78f09 for #789006. Maybe it was
unintentional for mymachines (the original bug report was for myhostname)
Felipe, can you chime in here?
>>> libnss-libvirt - nss plugin providing IP add ress resolution for virtual machines
>
> Not set up automatically. I'm not sure where it's meant to go; presumably
> the same place as libnss-docker, in which case it's fine?
>
>>> libnss-sss - Nss-Modul für den SSS-Daemon (System Security Services)
>>> libnss-cache - NSS module for using nsscache-generated files
>>> libnss-extrausers - nss module to have an additional passwd, shadow and group file
>>> libnss-mysql-bg - NSS module for using MySQL as a naming service
>>> libnss-pgsql2 - NSS module for using PostgreSQL as a naming service
>>> libnss-securepass - NSS (Name Service Switch) module for Securepass
>>> libnss-db - NSS-Modul für die Verwendung der Berkeley-Datenbank als Namensdienst
>>> libnss-rainbow2 - nss library for rainbow
>>> libnss-winbind - Samba nameservice integration plugins
>>> libnss-systemd - nss module providing dynamic user and group name resolution
>
> These don't seem to do hosts.
>
>>> libnss-wrapper - NSS wrapper library
>
> False positive: it's an LD_PRELOAD hack to manipulate the nsswitch, not
> a normal nsswitch plugin.
Thanks for the detailed analysis!
Regards,
Michael
--
Why is it that all of the instruments seeking intelligent life in the
universe are pointed away from Earth?
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <http://lists.alioth.debian.org/pipermail/pkg-systemd-maintainers/attachments/20170113/d43d03df/attachment-0001.sig>
More information about the Pkg-systemd-maintainers
mailing list