Problema do cliente NFS no CentOS 6: rpcbind não está escutando na porta 111

2

Estou tentando configurar um cliente NFS em um novo servidor CentOS 6.6 para um servidor NFS existente e estou tendo problemas que não consigo descobrir. Ao iniciar rpcbind / nfs , obtenho:

# /etc/init.d/rpcbind start
# /etc/init.d/nfs start
    Starting NFS services:                                     [  OK  ]
    Starting NFS quotas: Cannot register service: 
         RPC: Unable to receive; errno = Connection refused
         rpc.rquotad: unable to register (RQUOTAPROG, RQUOTAVERS, udp).
                                                               [FAILED]
    Starting NFS mountd:                                       [  OK  ]
    Starting NFS daemon:                                       [  OK  ]

rpcinfo -p funciona bem

# rpcinfo -p
program vers proto   port  service
100000    4   tcp    111  portmapper
    .. snip
100021    4   tcp  47627  nlockmgr

mas rpcinfo -p 127.0.0.1 (ou localhost) retorna um erro:

# rpcinfo -p 127.0.0.1
rpcinfo: can't contact portmapper: RPC: Remote system error - Connection refused

Verificando as portas com (netstat -an) parece que o portmap / rpcbind não está escutando na porta 111. Nada está escutando na porta 111 e o rpcbind está escutando na porta 3421 (edit: não aleatório como eu pensava inicialmente). / p>

As coisas que eu verifiquei ou experimentei incluem:

  • Desativando o selinux (não foi ativado)
  • Limpar /etc/hosts.deny
  • Limpar iptables (não tinha regras para começar)
  • Check logs (não encontrou nada relevante)
  • Servidor reiniciado (sem efeito)
  • Verificado nos servidores do CentOS 5 (o portmap está escutando lá na porta 111)
  • Verificado no Google: Muitas mensagens de erro semelhantes, mas nada especificamente sobre o rpcbind não estar escutando na porta 111 (e nenhuma solução funcionou de qualquer maneira).
  • 'telnet' para a porta 111 (tempo limite que confirma que nada está escutando lá)
  • Verificadas as configurações 127.0.0.1/localhost (elas funcionam bem)

Neste ponto, eu realmente não tenho opções ou coisas para checar e preciso de algumas idéias. Vou praticamente tentar qualquer coisa neste momento, pois o servidor é relativamente inútil sem o NFS.

Atualização 1:

A execução de rpcinfo -s localhost no cliente funciona, mas rpcinfo -s server não funciona. Eu estou querendo saber se há um problema em fazer com que o cliente seja o CentOS 6 e o servidor seja o CentOS 5.

Atualização 2:

A saída de showmount é idêntica no novo cliente e no servidor NFS:

# showmount -e 10.2.212.10
Export list for 10.2.212.10:
/shared/uesp/maps           67.205.112.104
/shared/uesp/skins          67.205.112.104
/shared/phpsessions         10.2.212.30,[...snip...],10.2.212.11
/shared/uesp/filecache      10.2.212.30,[...snip...],10.2.212.11
/shared/uesp/wikiimages     10.2.212.30,[...snip...],10.2.212.11
/shared/eqwiki/filecache    10.2.212.30,[...snip...],10.2.212.11
/shared/eqwiki/wikiimages   10.2.212.30,[...snip...],10.2.212.11
/shared/davewiki/filecache  10.2.212.30,[...snip...],10.2.212.11
/shared/davewiki/wikiimages 10.2.212.30,[...snip...],10.2.212.11

Eu cortei a longa lista de IPs, mas 10.2.212.30 é o novo cliente. Tentar montar um compartilhamento NFS no novo cliente resulta nisso:

# mount -v 10.2.212.10:/shared/phpsessions /mnt/phpsessions
mount: no type was given - I'll assume nfs because of the colon
mount.nfs: timeout set for Thu Jan 15 18:53:43 2015
mount.nfs: trying text-based options 'vers=4,addr=10.2.212.10,clientaddr=10.2.212.30'
mount.nfs: mount(2): Operation not permitted
mount.nfs: trying text-based options 'addr=10.2.212.10'
mount.nfs: prog 100003, trying vers=3, prot=6
mount.nfs: portmap query retrying: RPC: Unable to receive
mount.nfs: prog 100003, trying vers=3, prot=17
mount.nfs: portmap query failed: RPC: Unable to receive - Connection refused
mount.nfs: trying text-based options 'vers=4,addr=10.2.212.10,clientaddr=10.2.212.30'
mount.nfs: mount(2): Operation not permitted
mount.nfs: trying text-based options 'addr=10.2.212.10'
mount.nfs: prog 100003, trying vers=3, prot=6
mount.nfs: portmap query retrying: RPC: Unable to receive
mount.nfs: prog 100003, trying vers=3, prot=17
mount.nfs: portmap query failed: RPC: Unable to receive - Connection refused
...

As últimas linhas são repetidas até expirar.

Atualização 3:

Portanto, se eu usar iptables para redirecionar a porta 111 para a porta rpcbind que está usando no cliente, posso obter rpcinfo -p localhost para trabalhar no cliente. No entanto, isso não faz nada com os problemas de montagem. Eu tentei forçar o NFS a usar o v2 como:

# mount -v -t nfs -o nfsvers=3 10.2.212.10:/shared/phpsessions /mnt/phpsessions

mas isso resulta na mesma mensagem de erro acima. O fato de que quando eu corro no cliente eu recebo:

# rpcinfo -s server
rpcinfo: can't contact rpcbind: : RPC: Unable to receive; errno = Connection refused

que é a mesma mensagem de erro da montagem. Eu estou supondo que a montagem no cliente do CentOS 6 está tentando usar o "novo" rpcbind no servidor CentOS 5 que está executando o portmap "antigo" por isso está falhando. Eu diria que deveria ser possível misturar versões do CentOS assim de alguma forma.

Atualização 4:

Eu criei um compartilhamento NFS de teste no cliente e consegui montá-lo com êxito no servidor. Isso parece combinar com a teoria de que é algo a ver com uma incompatibilidade de portmap / rpcbind. O cliente pode atuar como um servidor NFS, já que o rpcbind (rpc v3 / 4) é retrocompatível com o portmap (rpc v2), mas o portmap não é compatível com o rpcbind.

Atualização 5 (solução possível)

Olhando o cliente com mais cuidado, notei que rpcbind parece estar sempre na porta 3421 (achei que era aleatório inicialmente). No servidor, usei iptables para encaminhar a porta 3421 para a porta 111. Depois disso, consegui montar com êxito o compartilhamento a NFS do servidor no cliente. Esta pode ser uma solução válida, pois eu só terei uma mistura de servidores CentOS 5/6 por algumas semanas enquanto eu atualizo todos os servidores para o CentOS 6.

A menos que uma resposta melhor seja respondida, responderei a minha própria pergunta em alguns dias.

    
por uesp 15.01.2015 / 19:53

1 resposta

2

O problema raiz acabou sendo uma incompatibilidade de porta para portmap / rpcbind . No CentOS 6 meu rpcbind estava escutando na porta 3421 em vez do esperado 111 como portmap no CentOS 5. Isso causou o problema de iniciar nfs e a montagem de compartilhamentos entre as duas máquinas.

A solução foi usar itpables para redirecionar a porta 111 no CentOS 6 para a porta 3421:

iptables -t nat -I PREROUTING -p tcp --dport 111 -j REDIRECT --to-ports 3421
iptables -t nat -I PREROUTING -p udp --dport 111 -j REDIRECT --to-ports 3421
iptables -t nat -I OUTPUT -p tcp -o lo --dport 111 -j REDIRECT --to-ports 3421
iptables -t nat -I OUTPUT -p udb -o lo --dport 111 -j REDIRECT --to-ports 3421

A mesma coisa foi feita no servidor CentOS 5, exceto no sentido inverso, redirecionando a porta 3421 para 111. Depois disso, consegui montar com êxito o compartilhamento NFS do servidor CentOS 5 no cliente CentOS 6.

Para obter nfs trabalhando completamente no servidor do CentOS 6, também tive que remover o comentário de todas as linhas relacionadas à porta em /etc/sysconfig/nfs para usar endereços de porta fixos. Antes de fazer isso, tive problemas intermitentes com o serviço lockd não respondendo.

    
por 20.01.2015 / 19:26