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.