> [Test plan]

Please could you add to the test plan testing to ensure that the new
configurable timeout actually works? There's a lot of code being added
just to make this configurable, including an entirely new configuration
file and extensive by-hand C parsing code. I think we should ensure that
this code actually works - otherwise I don't think including it all is
justified.

> [Where problems could occur]

Am I right in thinking that it will no longer be possible to set an
infinite lifetime, even by configuration? If we can't think of any case
where a user would want this then I think it's fine to proceed as-is,
but it's worth calling it out as a place where problems might occur.

--

One minor issue that's maybe worth fixing before landing this: the new
manpage (including upstream) refers to a different configuration file
path than where the code actually looks. Please could you patch to make
them match - including in Jammy? Otherwise we rather defeat the point of
including the new manpage in this SRU.

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to keyutils in Ubuntu.
https://bugs.launchpad.net/bugs/1962453

Title:
  Apply default TTL to records obtained from getaddrinfo()

Status in keyutils package in Ubuntu:
  Fix Released
Status in keyutils source package in Focal:
  New
Status in keyutils source package in Impish:
  New

Bug description:
  [Impact]
  ========

  There's a strong dependency for cifs.ko (and nfs.ko) on keyutils for
  DNS resolution. The keyutils package contains the userspace utility to
  update the kernel keyring with the DNS mapping to IP address. Prior to
  1.6.2, this utility may erroneously set unlimited lifetime for this
  keyring in the kernel.

  [Test plan]
  ===========

  1. Create a file share on an SMB server (can be a samba server) with
  two IP addresses. Make sure that FQDN of the server resolves to one of
  these addresses.

  2. mount the created share on the cifs client using the FQDN for the
  server. Make sure that the mount point is accessible.

  3. Using the ss command on the client, to kill the sockets that
  connect to the server: sudo ss -K dport :445

  4. Now update the DNS entry to make sure that the server FQDN now
  resolves to the second IP address of the server. Make sure that
  nslookup on the client now resolves to the new IP address.

  5. Repeat step 3 to kill the sockets that connect to server to force
  re-connection again.

  Without the fix, after step 5, with the "ss -t" command, you'll see
  that the client has reconnected to the old IP address, even when DNS
  lookups return the new IP.

  With the fix (after a reboot of the client machine to make sure that
  kernel keys are refreshed), you'll see that the client reconnects to
  the new IP address.

  The bug is due to unlimited lifetime set by key.dns_resolver (which is
  part of keyutils package). As a result, even if IP address for the DNS
  entries change, the kernel filesystems would continue to use old IP
  address, due to the cached keys. This issue causes clients to
  misbehave when Azure Files service endpoints move to a different
  cluster.

  [Where problems could occur]
  ============================

  Address records obtained from getaddrinfo() don't come with any TTL
  information, even if they're obtained from the DNS, so if someone is
  relying on this particularly, might face some problem/regression but I
  don't think they would face that as it would still be highly
  configurable.

  [Other information]
  ===================

  This request is essentially from one of our cloud partners and they're
  highly affected by this.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/keyutils/+bug/1962453/+subscriptions


-- 
Mailing list: https://launchpad.net/~touch-packages
Post to     : touch-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~touch-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to