Dentro da VM, o endereço do host é 10.0.2.2, o endereço local é 10.0.2.15. (VirtualBox). Isso é traduzido para 127.0.0.1 no lado do host. Para conectar:
sudo mount -vvvt nfs4 -o clientaddr=127.0.0.1 10.0.2.2:/srv /mnt
Eu especifiquei clientaddr porque percebi que o problema poderia ser devido a não correspondência dos endereços, mas isso não muda nada. Após alguns minutos, o cliente retorna a mensagem Permissão Negada, acesso negado pelo servidor.
No lado do servidor, corro
# rpc.mountd -d all -F
# rpc.idmapd -vvvf
# rpc.nfsd -d
Eu uso o systemd, então também estou monitorando o diário para qualquer saída. Quando faço a solicitação de montagem, o seguinte é visível na rede:
reply ERR 20: Auth Bogus Credentials (seal broken)
mas nada aparece no diário (que deve ter a saída de rpc.nfsd) ou na saída de rpc.mountd ou rpc.idmapd, além de algumas mensagens de inicialização. Na verdade, no caso do rpc.mountd, recebo o seguinte ocasionalmente:
rpc.mountd: auth_unix_ip: inbuf 'nfsd 127.0.0.1'
rpc.mountd: auth_unix_ip: client (nil) 'DEFAULT'
Tanto quanto eu sei (por favor, corrija-me!) não há outra fonte de informações sobre o funcionamento do NFS, e também não há configuração envolvida. Eu especifiquei os modos verbosos para cada comando, então estou com uma perda de como devo diagnosticar este problema.
Estou assumindo que é um problema com meu arquivo de exportação, que é o seguinte:
/srv 127.0.0.1(rw,sync,no_subtree_check,no_root_squash)
Mas eu prefiro obter algum feedback do sistema sobre o que está errado do que mexer no meu arquivo de exportação por tentativa e erro. Então, alguém sabe onde eu posso descobrir mais sobre o que está acontecendo?
Obrigado!
EDITAR
Eu recentemente corri exportfs -rav
e agora o cliente retorna imediatamente as saídas 'Operação não permitida' e rpc.mountd:
rpc.mountd: auth_unix_ip: inbuf 'nfsd 127.0.0.1'
rpc.mountd: v4root_create: path '/' flags 0x12401
rpc.mountd: v4root_create: path '/srv' flags 0x10401
rpc.mountd: auth_unix_ip: client 0x1d69d70 '127.0.0.1'
rpc.mountd: nfsd_fh: inbuf '127.0.0.1 1 \x00000000'
rpc.mountd: nfsd_fh: found 0x1d73e90 path /
mas esta saída pode estar relacionada apenas a ter executado o exportfs. (Note que eu reiniciei os daemons várias vezes antes, então eu não sei como exportfs fez diferença)
OK, parece que adicionar a opção 'insegura' corrigiu:
secure This option requires that requests originate on an Internet port less than
IPPORT_RESERVED. (1024). This option is on by default. To turn it off, specify
insecure.
Isso é estranho, já que eu estava executando o cliente NFS como root.
De qualquer forma, por que esse problema não ficou evidente para o operador (eu mesmo)? Eu não vejo como um software pode ser considerado adequado para uso em produção se o seu diagnóstico for mantido completamente oculto, de modo a torná-lo inacessível para não-especialistas. Eu não quero estragar o NFS aqui, mas parece como um sistema notoriamente ofuscado que poderia realmente usar um pouco mais de transparência, dada a freqüência com que é usado. De qualquer forma, obrigado pela leitura.