NFS clientaddr sobre VPN: decida pela versão menor, não por hábito
clientaddr anuncia um endereço de retorno de chamada apenas para NFSv4.0. Leia a versão menor negociada, verifique o caminho de retorno e separe-o das falhas de montagem.
clientaddr é uma daquelas opções de montagem que são copiadas para uma linha de comando muito depois de a razão ter desaparecido. Ela diz a um servidor NFSv4.0 onde chamar o cliente de volta. Não escolhe o servidor, não liga cada pedido a um endereço de origem nem empurra o tráfego para um túnel. Num portátil com vários endereços, decidir se ela se aplica sequer exige três perguntas.
Três condições decidem se a opção importa
A primeira é a versão menor negociada, porque 4.1 e 4.2 tratam as chamadas de retorno de forma diferente. A segunda é se o servidor consegue alcançar o endereço que você anunciaria, o que um túnel encaminhado costuma permitir e um caminho traduzido costuma não permitir. A terceira é se a falha que você persegue é sequer uma falha de chamada de retorno.
| 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 |
Responder-lhes fora de ordem é como as pessoas acabam acrescentando um endereço de chamada de retorno a uma montagem 4.2 e concluindo que a opção está avariada.
Leia a versão menor primeiro
nfsstat -m
Para uma montagem existente, isto imprime as informações e os sinalizadores da montagem, incluindo a versão efetiva como vers=4.0, vers=4.1 ou vers=4.2. Uma nota que diz apenas “NFSv4” omite o único detalhe que decide se esta opção é relevante. Leia o número, não a palavra.
Se a cadeia de versão veio de um padrão do servidor e não da sua linha de comando, pergunte qual versão menor foi negociada. Um servidor pode recusar uma versão menor mais alta e recuar, e esse recuo é exatamente o caso em que uma chamada de retorno de repente importa. A linha de montagem que escreveu pode não descrever a montagem que tem.
Para 4.0, anuncie um endereço que o servidor consiga alcançar
Um servidor NFSv4.0 pode precisar de uma conexão separada de volta ao cliente, por exemplo quando revoga uma delegação. Com várias interfaces ou uma tabela de rotas invulgar, a descoberta automática de um endereço de chamada de retorno pode escolher um que o servidor não consegue usar.
mount -t nfs -o vers=4.0,clientaddr=10.8.0.6 10.8.0.1:/export /mnt/share
O endereço antes dos dois pontos é o servidor e continua a ser o destino. O endereço de chamada de retorno pertence ao cliente e tem de ser alcançável do lado do servidor do túnel. Um endereço de loopback devolve o servidor a si próprio. Um endereço privado de cliente sem rota de retorno é igualmente inutilizável, embora pareça correto no cliente.
Use isto como ilustração, não como razão para baixar uma montagem que funciona. Substitua os endereços e o caminho de exportação, e mantenha a autenticação e as outras opções que o servidor exige. Omiti-las para que um exemplo caiba é outra alteração com outro resultado, e num servidor que impõe um tipo de segurança falha antes de se tentar qualquer chamada de retorno.
4.1 e 4.2 não usam a opção
O Linux NFSv4.1 e 4.2 transportam as chamadas de retorno por conexões estabelecidas pelo cliente, e 4.1 chama a essa instalação o backchannel. Não dependem de o servidor abrir uma nova conexão para um endereço anunciado, pelo que clientaddr não repara um caminho de chamada de retorno 4.1 ou 4.2.
Isso não significa que 4.1 e 4.2 não tenham problemas de chamadas de retorno. Significa que o diagnóstico é diferente: examine a sessão estabelecida e o estado do seu backchannel em vez de procurar uma porta de chamada de retorno de entrada que nunca deveria existir. Uma regra de entrada ausente é o estado esperado, não um defeito a corrigir.
Separe uma falha de montagem de uma falha de chamada de retorno
Estabeleça primeiro se o cliente chega ao serviço NFS e se o servidor aceita a exportação e o pedido de autenticação. Um tempo limite antes dessa troca não diz nada sobre um endereço de chamada de retorno. Alterar um enquanto a montagem continua a falhar não aproxima a investigação e esconde o erro original atrás de uma nova opção de montagem.
Só quando as provas mostram uma chamada de retorno 4.0 falhada é que o endereço anunciado importa, juntamente com o caminho de retorno do servidor, o ouvinte do lado do cliente e qualquer filtragem entre eles. Alterar o número na opção de montagem não pode criar esses caminhos; só pode apontar para um que já existe. Anote qual desses quatro verificou, porque o próximo relatório chegará sem nenhum deles.
Uma raiz NFS de arranque precoce é um ambiente à parte com os seus próprios requisitos: o initramfs precisa das ferramentas e da rede antes de a montagem poder ocorrer. Uma montagem que funciona após o início de sessão não prova nada sobre essa sequência, e a falha no arranque raramente menciona o initramfs ou a rede.