mount.nfs4 clientaddr= option inconsistent behaviour

Gabriel Barazer gabriel at oxeva.fr
Sat Aug 4 11:33:49 EDT 2007


Hi,

There is an inconsistent behaviour of mount.nfs4 regarding how to 
detect/handle the client IP address.
The "clientaddr" option is allowed for mount.nfs4, but this address is 
not used for the client IP address, and if there is any DNS failure or 
misconfiguration, mount.nfs4 will fail.

The error is in get_my_ipv4addr() at nfs4mount.c:170 (nfs-utils-1.1.0). 
This function fills *ip_addr with the client address, detected from the 
resolved machine name (gethostname() which is tried to be resolved in 
fill_ipv4_sockaddr). This cannot work if the machine name is not (yet) 
properly resolvable in DNS at mount time (e.g. we are nfs4-mounting the 
root filesystem very early). Using the clientaddr option provided before 
trying to resolve the gethostname() hostname, would be IMHO a more 
consistent behaviour.

This can cause much trouble too with multihomed clients. The right way 
would be to detect the client IP from the server IP (or resolved IP) 
(and deal with clients with multiple addresses per subnet, by taking the 
lowest address only)

Patch for this is easy (the first part, not the ip detection code), and 
can be provided if necessary.

Gabriel


More information about the NFSv4 mailing list