[Pkg-utopia-maintainers] Bug#898527: libnss-mdns: Adding ipv6 scope id breaks NFS mounts

Ross Vandegrift ross at kallisti.us
Tue May 15 03:46:33 BST 2018


On Mon, May 14, 2018 at 01:38:15PM +0100, Simon McVittie wrote:
> On Sat, 12 May 2018 at 18:26:11 -0700, Ross Vandegrift wrote:
> > It looks like the scope id was added in #644912.  This may be a kernel bug if
> > the scope id should be accepted.
> 
> I think this might be a bug in whatever user-space tool calls
> getaddrinfo() and passes its result to the kernel, which probably means
> mount.nfs? If the kernel doesn't want to see scope IDs in this context,
> then the user-space tool shouldn't provide them: returning scope IDs is
> part of the getaddrinfo() API.

I did some digging, here's what I found.

mount.nfs accepts scoped ipv6 addresses:
  $ sudo mount.nfs -vf '[fd7d:612b:f36c:0:4d15:7364:6589:dbef%2]:/' /mnt/tmp -o nfsvers=4.2
  mount.nfs: timeout set for Mon May 14 19:11:01 2018
  mount.nfs: trying text-based options 'vers=4.2,addr=fd7d:612b:f36c:0:4d15:7364:6589:dbef%2,clientaddr=fd7d:612b:f36c::4c5'

But mount(2) fails:
  $ sudo mount.nfs -v '[fd7d:612b:f36c:0:4d15:7364:6589:dbef%2]:/' /mnt/tmp -o nfsvers=4.2
  mount.nfs: timeout set for Mon May 14 19:12:48 2018
  mount.nfs: trying text-based options 'nfsvers=4.2,addr=fd7d:612b:f36c:0:4d15:7364:6589:dbef%2,clientaddr=fd7d:612b:f36c::4c5'
  mount.nfs: mount(2): Invalid argument
  mount.nfs: an incorrect mount option was specified

nfs(5) has the following to say about the source argument:
  The server's hostname can be an unqualified hostname, a fully qualified
  domain name, a dotted quad IPv4 address, or an IPv6 address enclosed in square
  brackets.  Link-local and site-local IPv6 addresses must be accompanied by an
  interface identifier.  See ipv6(7) for details on specifying raw IPv6
  addresses.

And ipv6(7) has this to say about the scope id field:
  sin6_scope_id is an ID depending on the scope of the address.  It is new in
  Linux 2.4.  Linux supports it only for link-local addresses, in that case
  sin6_scope_id contains the interface index (see netdevice(7))


Best as I can figure there's three wishlist bugs here:

1. nss-mdns should not return scope id for global addresses
2. mount.nfs should strip scope id unless the address is link-local
3. the kernel should accept & ignore scope id on non-global addresses

Does this seems like a reasonable reading?

Ross



More information about the Pkg-utopia-maintainers mailing list