mount.nfs: acesso negado pelo servidor durante a montagem

5

Eu tenho um problema no googling por pelo menos 6 horas 28 horas sem sorte. Sempre que tento montar um diretório, recebo o seguinte erro (versão detalhada no final):

  

mount.nfs: acesso negado pelo servidor durante a montagem:

Inicialmente eu estava usando computer1 como o servidor nfs, mas mudei para computer2 e estou tentando montar em computers3-8 . Como nota adicional, computer2 agora está agindo como o roteador dhcp para todos os outros computadores (mesmo computer1 ), mas estou quase certo de que o problema tem a ver com as configurações de computer2 de nfs, já que tentei o seguinte:

  1. Tente montar uma pasta do servidor computer1 original em um dos computers3-8 clients - SUCCESS
  2. Tente montar uma pasta do servidor computer1 original para o novo computer2 server - SUCCESS
  3. Tente montar uma pasta do novo servidor computer2 em um dos computers3-8 clients - FAILURE
  4. Tente montar uma pasta do novo servidor computer2 para o antigo computer1 server - FAILURE
  5. Tente exportar e, em seguida, monte qualquer outra pasta em computer2 - FAILURE
  6. ssh para e de computer2 - SUCESSO

Além disso, também verifiquei se as partes relevantes do arquivo /etc/exports não apresentam erros. Portanto, estou quase absolutamente certo de que isso não é um problema de permissão.

Pergunta: Dado que este não é um erro de rede, alguém pode me aconselhar sobre como eu posso começar a depurar este problema.

Saída detalhada:

mount: proc already mounted on /proc
mount: /dev/mmcblk0p5 already mounted on /boot
mount: tmpfs already mounted on /var/tmp
mount: tmpfs already mounted on /var/log
mount.nfs: timeout set for Fri Nov 15 07:27:02 2013
mount.nfs: trying text-based options 'vers=3,rsize=8192,wsize=8192,nolock,addr=192.168.7.1'
mount.nfs: prog 100003, trying vers=3, prot=6
mount.nfs: trying 192.168.7.1 prog 100003 vers 3 prot TCP port 2049
mount.nfs: prog 100005, trying vers=3, prot=17
mount.nfs: trying 192.168.7.1 prog 100005 vers 3 prot UDP port 37300
mount.nfs: mount(2): Permission denied
mount.nfs: access denied by server while mounting 192.168.7.1:/home/raspi/Documents/raspi/raspi

Saída detalhada 2:

Aqui está uma abordagem mais direta que isola a montagem apenas para o diretório em questão aqui:

$ sudo mount -v -o "vers=3" 192.168.7.1:/home/raspi/Documents/raspi/raspi /home/raspi/test
mount: no type was given - I'll assume nfs because of the colon
mount.nfs: timeout set for Fri Nov 15 07:47:38 2013
mount.nfs: rpc.statd is not running but is required for remote locking.
mount.nfs: Either use '-o nolock' to keep locks local, or start statd.
mount.nfs: an incorrect mount option was specified

Eu já tinha encontrado esse rpc.statd is not running but is required for remote locking de erro antes, mas todo o googling no mundo não me ajudou em nada ...

EDITAR :

O Caos me pediu para executar os seguintes comandos e exibir os resultados:

Primeiro no servidor:

SERVER$ sudo exportfs -rv
exporting raspi1:/home/raspi/Documents/raspi/raspi
exporting raspi2:/home/raspi/Documents/raspi/raspi
exporting raspi3:/home/raspi/Documents/raspi/raspi
exporting raspi4:/home/raspi/Documents/raspi/raspi
exporting raspi5:/home/raspi/Documents/raspi/raspi
exporting raspi6:/home/raspi/Documents/raspi/raspi
exporting raspi7:/home/raspi/Documents/raspi/raspi
exporting raspi8:/home/raspi/Documents/raspi/raspi
exporting raspi9:/home/raspi/Documents/raspi/raspi
exporting raspi10:/home/raspi/Documents/raspi/raspi
exporting raspi11:/home/raspi/Documents/raspi/raspi
exporting raspi12:/home/raspi/Documents/raspi/raspi
exporting raspi13:/home/raspi/Documents/raspi/raspi
exporting raspi14:/home/raspi/Documents/raspi/raspi
exporting raspi15:/home/raspi/Documents/raspi/raspi
exporting raspi16:/home/raspi/Documents/raspi/raspi
exporting raspi17:/home/raspi/Documents/raspi/raspi
exporting raspi18:/home/raspi/Documents/raspi/raspi
exporting raspi19:/home/raspi/Documents/raspi/raspi
exporting raspi20:/home/raspi/Documents/raspi/raspi
exporting raspi21:/home/raspi/Documents/raspi/raspi
exporting raspi22:/home/raspi/Documents/raspi/raspi
exporting raspi23:/home/raspi/Documents/raspi/raspi
exporting raspi24:/home/raspi/Documents/raspi/raspi
exporting raspi25:/home/raspi/Documents/raspi/raspi
exporting raspi26:/home/raspi/Documents/raspi/raspi
exporting raspi27:/home/raspi/Documents/raspi/raspi
exporting raspi28:/home/raspi/Documents/raspi/raspi
exporting raspi29:/home/raspi/Documents/raspi/raspi
exporting raspi30:/home/raspi/Documents/raspi/raspi
exporting raspi5:/home/raspi/Downloads
exporting 192.168.7.105:/home/raspi/Documents/raspi

E depois no cliente

CLIENT$ showmount -e 192.168.7.1
Export list for 192.168.7.1:
/home/raspi/Documents/raspi       192.168.7.105
/home/raspi/Documents/raspi/raspi raspi30,raspi29,raspi28,raspi27,raspi26,raspi25,raspi24,raspi23,raspi22,raspi21,raspi20,raspi19,raspi18,raspi17,raspi16,raspi15,raspi14,raspi13,raspi12,raspi11,raspi10,raspi9,raspi8,raspi7,raspi6,raspi5,raspi4,raspi3,raspi2,raspi1
/home/raspi/Downloads             raspi5

CLIENT$ sudo mount -a
mount.nfs: access denied by server while mounting 192.168.7.1:/home/raspi/Documents/raspi/raspi

CLIENT$ sudo tail -f /var/log/daemon.log 2>&1
Nov 15 21:35:55 raspi5 dhclient: bound to 192.168.7.105 -- renewal in 250 seconds.
Nov 15 21:40:05 raspi5 dhclient: DHCPREQUEST on eth0 to 192.168.7.1 port 67
Nov 15 21:40:05 raspi5 dhclient: DHCPACK from 192.168.7.1
Nov 15 21:40:05 raspi5 dhclient: bound to 192.168.7.105 -- renewal in 294 seconds.
Nov 15 21:44:59 raspi5 dhclient: DHCPREQUEST on eth0 to 192.168.7.1 port 67
Nov 15 21:44:59 raspi5 dhclient: DHCPACK from 192.168.7.1
Nov 15 21:44:59 raspi5 dhclient: bound to 192.168.7.105 -- renewal in 262 seconds.
Nov 15 21:49:21 raspi5 dhclient: DHCPREQUEST on eth0 to 192.168.7.1 port 67
Nov 15 21:49:21 raspi5 dhclient: DHCPACK from 192.168.7.1
Nov 15 21:49:21 raspi5 dhclient: bound to 192.168.7.105 -- renewal in 273 seconds.

EDIT 2 :

O Caos me pediu para continuar a executar os seguintes comandos e exibir os resultados:

SERVER$ ping raspi5
PING raspi5 (192.168.7.105) 56(84) bytes of data.
64 bytes from raspi5 (192.168.7.105): icmp_seq=1 ttl=64 time=0.699 ms
64 bytes from raspi5 (192.168.7.105): icmp_seq=2 ttl=64 time=0.683 ms

SERVER$ sudo tail -f /var/log/daemon.log
tail: cannot open ‘/var/log/daemon.log’ for reading: No such file or directory

Aqui está o meu arquivo /etc/exports no servidor. Como você pode ver, estou tentando usar seu nome como definido em /etc/hosts , seu endereço IP e também estou tentando exportar pastas diferentes. Todas as outras linhas que eu omiti como são apenas duplicatas da última linha, apenas redirecionadas para diferentes raspis.

# /etc/exports: the access control list for filesystems which may be exported
#       to NFS clients.  See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes       hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4        gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes  gss/krb5i(rw,sync,no_subtree_check)
#

/home/raspi/Downloads raspi5(rw,sync,no_subtree_check,no_root_squash)
/home/raspi/Documents/raspi/ 192.168.7.105(rw,sync,no_subtree_check,no_root_squash,fsid=0)
/home/raspi/Documents/raspi/raspi raspi5(rw,sync,no_subtree_check,no_root_squash,fsid=0)

Aqui está o meu arquivo /etc/fstab no meu cliente raspi5

proc            /proc           proc    defaults          0       0
/dev/mmcblk0p5  /boot           vfat    defaults          0       2
/dev/mmcblk0p6 /               ext4    defaults,noatime  0       1
# a swapfile is not a swap partition, so no using swapon|off from here on, use  dphys-swapfile swap[on|off]  for that

#automatically mount the shared raspi folder(s)
# Remember that NFS4 is AIDS, so use NFS3
192.168.7.1:/home/raspi/Documents/raspi/raspi /home/raspi/ nfs nfsvers=3,rsize=8192,wsize=8192,rw,auto,nolock 0 0

# Move highly used directories to RAM
tmpfs /var/tmp tmpfs nodev,nosuid,size=50M 0 0
tmpfs /var/log tmpfs nodev,nosuid,size=50M 0 0

EDIT 3:

Seguindo alguns dos conselhos aqui , também defino o sinal insecure nas exportações , mas sem sucesso, e aqui está a saída de rpcinfo -p no cliente e no servidor:

CLIENT$ sudo rpcinfo -p
   program vers proto   port  service
    100000    4   tcp    111  portmapper
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper
    100000    4   udp    111  portmapper
    100000    3   udp    111  portmapper
    100000    2   udp    111  portmapper
    100024    1   udp  53553  status
    100024    1   tcp  60026  status

SERVER$ rpcinfo -p
   program vers proto   port  service
    100000    4   tcp    111  portmapper
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper
    100000    4   udp    111  portmapper
    100000    3   udp    111  portmapper
    100000    2   udp    111  portmapper
    100024    1   udp  42430  status
    100024    1   tcp  49377  status
    100003    2   tcp   2049  nfs
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100227    2   tcp   2049
    100227    3   tcp   2049
    100003    2   udp   2049  nfs
    100003    3   udp   2049  nfs
    100003    4   udp   2049  nfs
    100227    2   udp   2049
    100227    3   udp   2049
    100021    1   udp  33106  nlockmgr
    100021    3   udp  33106  nlockmgr
    100021    4   udp  33106  nlockmgr
    100021    1   tcp  47922  nlockmgr
    100021    3   tcp  47922  nlockmgr
    100021    4   tcp  47922  nlockmgr
    100005    1   udp  50875  mountd
    100005    1   tcp  53329  mountd
    100005    2   udp  53583  mountd
    100005    2   tcp  42062  mountd
    100005    3   udp  36556  mountd
    100005    3   tcp  39984  mountd

EDIT 4:

Além disso, seguindo alguns dos conselhos aqui , obtive os seguintes registros de depuração:

[ 2233.803852] NFSD: Using /var/lib/nfs/v4recovery as the NFSv4 state recovery directory
[ 2233.803885] NFSD: starting 90-second grace period (net ffffffff81cd29c0)
[ 3261.750455] nfsd: last server has exited, flushing export cache
[ 3262.912654] NFSD: Using /var/lib/nfs/v4recovery as the NFSv4 state recovery directory
[ 3262.912688] NFSD: starting 90-second grace period (net ffffffff81cd29c0)
[ 5231.798334] nfsd: last server has exited, flushing export cache
[ 5232.956633] NFSD: Using /var/lib/nfs/v4recovery as the NFSv4 state recovery directory
[ 5232.956668] NFSD: starting 90-second grace period (net ffffffff81cd29c0)
[ 5350.889640] nfsd: last server has exited, flushing export cache
[ 5352.023534] NFSD: Using /var/lib/nfs/v4recovery as the NFSv4 state recovery directory
[ 5352.023577] NFSD: starting 90-second grace period (net ffffffff81cd29c0)
[ 5517.837425] nfsd: last server has exited, flushing export cache
[ 5518.987793] NFSD: Using /var/lib/nfs/v4recovery as the NFSv4 state recovery directory
[ 5518.987826] NFSD: starting 90-second grace period (net ffffffff81cd29c0)
[56604.080162] Netfilter messages via NETLINK v0.30.
[56707.453535] nfsd: last server has exited, flushing export cache
[56708.605020] NFSD: Using /var/lib/nfs/v4recovery as the NFSv4 state recovery directory
[56708.605057] NFSD: starting 90-second grace period (net ffffffff81cd29c0)
[57338.926093] NFSD: laundromat service - starting
[57338.926105] NFSD: laundromat_main - sleeping for 90 seconds
[57363.216188] nfsd: freeing readahead buffers.
[57363.216244] nfsd: last server has exited, flushing export cache
[57364.351041] set_max_drc nfsd_drc_max_mem 6008832 
[57364.354764] nfsd: creating service
[57364.354771] nfsd: allocating 32 readahead buffers.
[57364.356023] nfsd4_umh_cltrack_upcall: cltrack_prog is disabled
[57364.356040] NFSD: Using /var/lib/nfs/v4recovery as the NFSv4 state recovery directory
[57364.356072] NFSD: starting 90-second grace period (net ffffffff81cd29c0)
[57364.369688] nfsd_dispatch: vers 3 proc 0
[57372.738225] nfsd_dispatch: vers 4 proc 0
[57372.753507] nfsd_dispatch: vers 4 proc 1
[57372.753521] nfsv4 compound op #1/3: 24 (OP_PUTROOTFH)
[57372.755550] exp_export: export of invalid fs type.
[57372.755679] found domain 192.168.7.105,raspi5
[57372.755685] found fsidtype 1
[57372.755690] found fsid length 4
[57372.755695] Path seems to be <>
[57372.755722] nfsv4 compound op ffff8801a47ec080 opcnt 3 #1: 24: status 2
[57372.755731] nfsv4 compound returned 2
[57372.779429] nfsd_dispatch: vers 3 proc 0
[57372.792595] exp_export: export of invalid fs type.

EDIT 5:

Eu fiz algum progresso e deduzi o seguinte

  1. Não é um problema de porta, pois o cliente pode fazer o telnet no host telnet 192.168.7.1 2049
  2. É provavelmente que não é um problema de rede, pois o servidor nem pode ser montado em si
  3. A versão antiga que suportava (e ainda suporta) a montagem estava em execução nfs-kernel-server 1:1.2.4-1 , enquanto o novo servidor que não suporta a montagem está executando nfs-kernel-server 1:1.2.8-2
  4. O comando sudo /etc/init.d/portmap restart funciona no servidor antigo, mas não no novo, o que me diz que falta o portmap no novo servidor. No entanto, quando tento instalá-lo via sudo apt-get install portmap , ele me diz que Note, selecting 'rpcbind' instead of 'portmap', and that rpcbind já é a versão mais recente '

Editar 6:

Aqui está a saída de iptables -L no meu servidor:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere            
LOG        all  --  anywhere             anywhere             LOG level warning

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

e as portas corretas estão abertas:

CLIENT$ nmap -P0 192.168.7.1

Starting Nmap 6.00 ( http://nmap.org ) at 2013-11-16 06:44 UTC
Nmap scan report for raspiserver (192.168.7.1)
Host is up (0.0095s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
111/tcp  open  rpcbind
2049/tcp open  nfs

Nmap done: 1 IP address (1 host up) scanned in 1.55 seconds
    
por puk 13.04.2017 / 14:23

5 respostas

4

Eu tive o mesmo problema que o OP. Isso costumava funcionar para mim, mas depois de uma atualização não funcionou. A solução foi adicionar a opção "nfsvers = 3".

    
por Joe O 09.12.2014 / 12:58
1

Meus dois colegas de trabalho apenas resolveram um problema semelhante no Vagrant. O AppArmor foi o culpado, a solução pode ser encontrada aqui , citando:

mount: cannot mount block device /some/path read-only

e o dmesg mostra:

[ 6944.194280] type=1400 audit(1385049795.420:32): apparmor="DENIED" operation="mount" info="failed type match" error=-13 parent=6631 profile="lxc-container-default" name="/some/other/path" pid=6632 comm="mount" srcname="/some/path" flags="rw, bind"

O AppArmor está bloqueando o mount -o bind dentro do contêiner LXC.

Para ativar o ID, adicione em /etc/apparmor.d/lxc/lxc-default :

profile lxc-container-default flags=(attach_disconnected,mediate_deleted) {
  ...
    mount options=(rw, bind),
  ...

Recarregar apparmor:

# /etc/init.d/apparmor reload
    
por dhill 19.03.2016 / 16:14
0

Primeiro, o erro rpc.statd ocorre porque o daemon não está em execução. Inicie o daemon por:

sudo service statd start

Em segundo lugar, a opção de montagem vers=3 está errada, deve ser

nfsvers=3
    
por chaos 15.11.2013 / 09:17
0

Vale a pena mencionar (mesmo que provavelmente não seja o caso aqui) que, se de repente você receber esse erro depois de renomear uma pasta ou tentar acessar uma nova, talvez tenha esquecido que precisa especificar o servidor -o lado quais pastas são compartilhadas e quais não estão em /etc/exports - esse foi o problema no meu caso.

Depois de modificar o arquivo, você também precisa fazer sudo service nfs-kernel-server restart

    
por pzkpfw 19.12.2014 / 18:49
0

Se o servidor não estiver montando no host local, o problema não é a rede.

Dê uma olhada em /etc/hosts.deny e /etc/hosts.allow.

Apenas para problemas futuros ...: Eu joguei hoje com uma versão antiga do NFS. Eu tinha um switch intermediário entre dois hosts que permitia todas as comunicações TCP e UDP do ServerIP & lt; - & nbsp; ClientIP, o telnet funcionava em todas as portas ... mas o rpcinfo -p não o fazia.

Descobrimos que o switch tinha um recurso chamado "inspecionar" que inspecionava todos os pacotes "sunrpc" e, se a versão não estivesse nas versões "permitidas", descartava os pacotes sem registrar nada. É chamado de "Inspeção de protocolo de camada de aplicação". link

Depois disso, descobrimos que precisávamos configurar portas estáticas para firewall, mas isso é outro problema.

    
por LiPi 18.06.2015 / 12:25