NFSv4 através do portforward

3

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 /
    
por Stone 21.02.2014 / 14:19

1 resposta

3

Meu colega identificou a solução no tcpdump , que a única outra diferença entre as tentativas de conexão boas e ruins é a porta de origem.

Então o Google me disse que eu preciso da opção insecure para a exportação, porque depois do encaminhamento a porta de origem está acima de 1024 e no caso normal fica abaixo de 1024 e insecure informa ao servidor que ele pode aceitar clientes com porta de origem acima de 1024.

    
por 21.02.2014 / 16:34