[Bug 1641328] Re: Ordering of mdns4_minimal and resolve in /etc/nsswitch.conf causes mDNS lookups to fail -- breaks network printing
Robie Basak
1641328 at bugs.launchpad.net
Mon May 8 11:05:39 UTC 2017
Hi Mark!
Thank you for pointing me to this bug. I spent some time looking into
this.
It seems that there is currently no established mechanism for ordering
NSS modules into nsswitch.conf automatically. Instead every package is
doing its own parsing mangling of the file on install. libnss-resolve is
appending "[!UNAVAIL=return]" which causes the mdns4_minimal entry to
get shadowed, depending on installation order of the packages involved
(libnss-mdns and libnss-resolve).
A workaround was implemented in Debian in
https://anonscm.debian.org/cgit/collab-maint/nss-
mdns.git/commit/?id=44550bcc6b49116f927dea52395867ff47d7d3b9 (tests in
https://anonscm.debian.org/cgit/collab-maint/nss-
mdns.git/commit/?id=0e9b82b91cd9bf9464cf63df2c3f1cbbec3553e0) which
appears in Zesty (17.04) which will explain why Zesty appears to work
correctly. Though this is still a hack, I think it should work in both
ordering cases, so in the short term this should be fixed from a user's
perspective.
In the long term, Debian have a bug open (https://bugs.debian.org/cgi-
bin/bugreport.cgi?bug=846944) to fix the hack. It may be that mDNS
resolution moves to libnss-resolve, or that some kind of configuration
wrapper is arranged to improve on the ad-hoc mangling of nsswitch.conf.
So, for Ubuntu:
This is fixed in Zesty onwards.
The workaround for Yakkety (as you explained) is to edit
/etc/nsswitch.conf and bring "mdns4_minimal [NOTFOUND=return]" in front
of "resolve [!UNAVAIL=return]".
We could propose an update for Yakkety (16.10). But we have to do it
carefully - if there is a bug in the update, we could break DNS
resolution for all users. However, Debian have already written the
essential "swap it round" code so that will already have had some real
world testing. But Yakkety has only two months left before it EOLs, and
the workaround for affected users is fairly trivial. So is it worth
trying? Opinions welcome.
For bug triage, there are effectively two bugs. 1) The fact that it
doesn't work for users in Yakkety; and 2) the bigger picture fix for the
hack or move of mDNS resolution to libnss-resolve. I see this bug as
having been reported for the first issue, and the Debian bug as tracking
the second. So I'll mark the systemd task as Invalid, as the fix for
this bug was in libnss-mdns (and we can track any SRU for libnss-mdns
here). I'm not linking the Debian bug, as that's the separate second
issue. If we want to track that in Launchpad, we should file a separate
bug for it, so as not to mix up the separate statuses of the two issues.
** Bug watch added: Debian Bug tracker #846944
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=846944
** Changed in: systemd (Ubuntu)
Status: Confirmed => Invalid
** Also affects: nss-mdns (Ubuntu Yakkety)
Importance: Undecided
Status: New
** Also affects: systemd (Ubuntu Yakkety)
Importance: Undecided
Status: New
** Changed in: systemd (Ubuntu Yakkety)
Status: New => Invalid
** Changed in: nss-mdns (Ubuntu)
Status: Confirmed => Fix Released
** Changed in: nss-mdns (Ubuntu Yakkety)
Status: New => Triaged
** Changed in: nss-mdns (Ubuntu Yakkety)
Importance: Undecided => Medium
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to systemd in Ubuntu.
https://bugs.launchpad.net/bugs/1641328
Title:
Ordering of mdns4_minimal and resolve in /etc/nsswitch.conf causes
mDNS lookups to fail -- breaks network printing
Status in nss-mdns package in Ubuntu:
Fix Released
Status in systemd package in Ubuntu:
Invalid
Status in nss-mdns source package in Yakkety:
Triaged
Status in systemd source package in Yakkety:
Invalid
Bug description:
(See also libnss-resolve:amd64 231-9ubuntu1 amd64 nss module
to resolve names via systemd-resolved)
# fresh install of yakkety
mtearle at liberation:/etc$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.10
Release: 16.10
Codename: yakkety
# package details
mtearle at liberation:~$ apt-cache policy libnss-resolve
libnss-resolve:
Installed: 231-9ubuntu1
Candidate: 231-9ubuntu1
Version table:
*** 231-9ubuntu1 500
500 http://mirror.rackspace.com/ubuntu yakkety-updates/main amd64 Packages
100 /var/lib/dpkg/status
231-9git1 500
500 http://mirror.rackspace.com/ubuntu yakkety/main amd64 Packages
mtearle at liberation:~$ apt-cache policy systemd
systemd:
Installed: 231-9ubuntu1
Candidate: 231-9ubuntu1
Version table:
*** 231-9ubuntu1 500
500 http://mirror.rackspace.com/ubuntu yakkety-updates/main amd64 Packages
100 /var/lib/dpkg/status
231-9git1 500
500 http://mirror.rackspace.com/ubuntu yakkety/main amd64 Packages
# attempt to ping VM elsewhere on network with mDNS hostname
mtearle at liberation:/etc$ ping bazzavan.local
ping: bazzavan.local: Name or service not known
# can find both ipv4 and ipv6 addresses for the host
mtearle at liberation:/etc$ avahi-resolve-host-name bazzavan.local
bazzavan.local fe80::a00:27ff:fea5:3f51
mtearle at liberation:/etc$ avahi-resolve-host-name -4 bazzavan.local
bazzavan.local 172.16.44.48
# can ping it
mtearle at liberation:/etc$ ping -c 1 172.16.44.48
PING 172.16.44.48 (172.16.44.48) 56(84) bytes of data.
64 bytes from 172.16.44.48: icmp_seq=1 ttl=64 time=0.265 ms
--- 172.16.44.48 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.265/0.265/0.265/0.000 ms
# original ordering
mtearle at liberation:/etc$ grep hosts /etc/nsswitch.conf
hosts: files resolve [!UNAVAIL=return] mdns4_minimal [NOTFOUND=return] dns
# go away and edit /etc/nsswitch.conf
# change ordering of resolve and mdns4_minimal
mtearle at liberation:/etc$ grep hosts /etc/nsswitch.conf
hosts: files mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] dns
# check mdns lookups now work, and it now pings
mtearle at liberation:/etc$ ping -c 1 bazzavan.local
PING bazzavan.local (172.16.44.48) 56(84) bytes of data.
64 bytes from 172.16.44.48 (172.16.44.48): icmp_seq=1 ttl=64 time=0.161 ms
--- bazzavan.local ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.161/0.161/0.161/0.000 ms
# check libnss-resolve is still doing its thing
mtearle at liberation:/etc$ ping -c 1 localhost.localdomain
PING localhost.localdomain(localhost (::1%1)) 56 data bytes
64 bytes from localhost (::1): icmp_seq=1 ttl=64 time=0.016 ms
--- localhost.localdomain ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.016/0.016/0.016/0.000 ms
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/nss-mdns/+bug/1641328/+subscriptions
More information about the foundations-bugs
mailing list