NFS clientaddr sobre VPN: decida por la versión menor, no por costumbre
clientaddr anuncia una dirección de devolución de llamada solo para NFSv4.0. Lea la versión menor negociada, compruebe la ruta de retorno y sepárela de los fallos de montaje.
clientaddr es una de esas opciones de montaje que se copian en una línea de comandos mucho después de que la razón para ella haya desaparecido. Le dice a un servidor NFSv4.0 dónde devolver la llamada al cliente. No elige el servidor, no ata cada petición a una dirección de origen ni empuja el tráfico hacia un túnel. En un portátil con varias direcciones, decidir si se aplica siquiera requiere tres preguntas.
Tres condiciones deciden si la opción importa
La primera es la versión menor negociada, porque 4.1 y 4.2 tratan las devoluciones de llamada de forma distinta. La segunda es si el servidor puede alcanzar la dirección que usted anunciaría, cosa que un túnel enrutado suele permitir y una ruta traducida suele no permitir. La tercera es si el fallo que persigue es siquiera un fallo de devolución de llamada.
| Condition | If yes | If no |
|---|---|---|
| Version is 4.0 | The option can matter | Skip it; inspect the session instead |
| Server can reach the address | Advertise it | Fix reachability first |
| Failure is a callback | Diagnose callback path | Look at mount and export |
Responderlas en el orden equivocado es como la gente acaba añadiendo una dirección de devolución de llamada a un montaje 4.2 y concluyendo que la opción está rota.
Lea primero la versión menor
nfsstat -m
Para un montaje existente, esto imprime la información y los indicadores del montaje, incluida la versión efectiva como vers=4.0, vers=4.1 o vers=4.2. Una nota que solo dice “NFSv4” omite el único detalle que decide si esta opción es relevante. Lea el número, no la palabra.
Si la cadena de versión vino de un valor predeterminado del servidor y no de su línea de comandos, pregunte qué versión menor se negoció. Un servidor puede rechazar una versión menor superior y retroceder, y ese retroceso es exactamente el caso en que una devolución de llamada de repente importa. La línea de montaje que escribió puede no describir el montaje que tiene.
Para 4.0, anuncie una dirección que el servidor pueda alcanzar
Un servidor NFSv4.0 puede necesitar una conexión separada de vuelta al cliente, por ejemplo cuando revoca una delegación. Con varias interfaces o una tabla de rutas inusual, el descubrimiento automático de una dirección de devolución de llamada puede elegir una que el servidor no pueda usar.
mount -t nfs -o vers=4.0,clientaddr=10.8.0.6 10.8.0.1:/export /mnt/share
La dirección antes de los dos puntos es el servidor y sigue siendo el destino. La dirección de devolución de llamada pertenece al cliente y debe ser alcanzable desde el lado del servidor del túnel. Una dirección de bucle devuelve el servidor hacia sí mismo. Una dirección privada de cliente sin ruta de retorno es igual de inútil, aunque parezca correcta en el cliente.
Use esto como ilustración, no como razón para degradar un montaje que funciona. Sustituya las direcciones y la ruta de exportación, y conserve la autenticación y las demás opciones que exige el servidor. Omitirlas para que encaje un ejemplo es otro cambio con otro resultado, y en un servidor que impone un tipo de seguridad falla antes de que se intente cualquier devolución de llamada.
4.1 y 4.2 no usan la opción
Linux NFSv4.1 y 4.2 llevan las devoluciones de llamada por conexiones que el cliente ha establecido, y 4.1 llama a esa instalación el backchannel. No dependen de que el servidor abra una conexión nueva a una dirección anunciada, así que clientaddr no repara una ruta de devolución de llamada de 4.1 ni de 4.2.
Eso no significa que 4.1 y 4.2 no tengan problemas de devoluciones de llamada. Significa que el diagnóstico es distinto: examine la sesión establecida y el estado de su backchannel en lugar de buscar un puerto de devolución de llamada entrante que nunca debió existir. Una regla de entrada ausente es el estado esperado, no un fallo que corregir.
Separe un fallo de montaje de un fallo de devolución de llamada
Establezca primero si el cliente llega al servicio NFS y si el servidor acepta la exportación y la petición de autenticación. Un tiempo de espera antes de ese intercambio no dice nada sobre una dirección de devolución de llamada. Cambiar una mientras el montaje sigue fallando no acerca la investigación y esconde el error original detrás de una nueva opción de montaje.
Solo cuando las pruebas muestran una devolución de llamada 4.0 fallida importa la dirección anunciada, junto con la ruta de retorno del servidor, el receptor del lado del cliente y cualquier filtrado entre ellos. Cambiar el número de la opción de montaje no puede crear esas rutas; solo puede apuntar a una que ya existe. Anote cuál de esas cuatro verificó, porque el próximo informe llegará sin ninguna de ellas.
Una raíz NFS de arranque temprano es un entorno aparte con sus propios requisitos: el initramfs necesita las herramientas y la red antes de que pueda ocurrir el montaje. Un montaje que funciona tras iniciar sesión no demuestra nada sobre esa secuencia, y el fallo en el arranque rara vez menciona el initramfs o la red.