Gostaria de alcançar meus servidores NFSv4 por meio da porta. O grande plano será um cluster de servidores NFSv4 com balanceamento de carga com HAProxy em execução no host local. Mas isso não é realmente importante agora.
No servidor, o /etc/exports
tem esta aparência
/mnt/x 192.168.0.0/16(rw,sync,no_subtree_check,no_root_squash,fsid=1)
Eu posso conectar do meu cliente ao servidor no TCP 2049 e montar o compartilhamento como este
mount -t nfs4 -o proto=tcp,port=2049 192.168.2.25:/mnt/x /mnt
Eu testei que o NFVs4 está feliz com apenas essa porta TCP aberta, filtrando todas as outras comunicações entre as duas máquinas.
Então, acho que o NFS funciona bem.
Mas quando eu encaminhar uma porta por exemplo com redir
no cliente para o servidor como
redir --lport=3049 --cport=2049 --caddr=192.168.2.25
e deseja montá-lo da seguinte forma
mount -t nfs4 -o proto=tcp,port=3049 127.0.0.1:/mnt/x /mnt
eu obtenho
mount.nfs4: Operation not permitted
O que eu sinto falta? Não consigo ver nenhuma informação relevante nos registros do servidor.
Atualização:
Capturei a tentativa de conexão boa e ruim, no começo eles são os mesmos, então o cliente envia um
PUTROOTFH,GETFH,GETATTR
comando
. No bom caso, os servidores respondem
PUTROOTFH-NFS4_OK,GETFH-NFS4_OK,GETATTR-NFS4_OK
no caso ruim (encaminhado) responde
PUTROOTFH-NFS4_OK,GETFH-NFS4_OK,GETATTR-NFS4ERR_PERM
Nesse ponto eu mudei a exportação para
/mnt/x 0.0.0.0/0.0.0.0(rw,sync,no_subtree_check,no_root_squash,fsid=1)
mas o erro é o mesmo.
No caso positivo, os logs do servidor são
rpc.mountd[1711]: nfsd_export: inbuf '0.0.0.0/0.0.0.0 /'
rpc.mountd[1711]: nfsd_export: found 0x12dfeb0 path /
rpc.mountd[1711]: nfsd_export: inbuf '0.0.0.0/0.0.0.0 /mnt'
rpc.mountd[1711]: nfsd_export: found 0x12e2810 path /mnt
no pior dos casos
rpc.mountd[1711]: nfsd_export: inbuf '0.0.0.0/0.0.0.0 /'
rpc.mountd[1711]: nfsd_export: found 0x12dfeb0 path /