web-dev-qa-db-fra.com

mount.nfs: accès refusé par le serveur pendant le montage

J'ai un problème que je recherche sur Google depuis au moins 6 heures 28 heures sans chance. Chaque fois que j'essaie de monter un répertoire, l'erreur suivante apparaît (version détaillée à la fin):

mount.nfs: accès refusé par le serveur lors du montage:

Au départ, j'utilisais computer1 comme serveur nfs, mais je l'ai déplacé vers computer2 et j'essaie de monter sur computers3-8. De plus, computer2 agit maintenant comme routeur dhcp pour tous les autres ordinateurs (même computer1), mais je suis presque certain que le problème concerne les paramètres nfs de computer2 car j'ai essayé ce qui suit:

  1. Essayez de monter un dossier du serveur computer1 d'origine sur l'un des clients computers3-8 - SUCCESS.
  2. Essayez de monter un dossier du serveur computer1 d'origine sur le nouveau serveur computer2 - SUCCESS.
  3. Essayez de monter un dossier du nouveau serveur computer2 sur l’un des clients computers3-8 - FAILURE
  4. Essayez de monter un dossier du nouveau serveur computer2 sur l’ancien serveur computer1 - FAILURE
  5. Essayez d’exporter puis de monter tout autre dossier sur computer2 - FAILURE
  6. ssh vers et depuis computer2 - SUCCESS

De plus, j'ai vérifié que les parties pertinentes du fichier /etc/exports ne contenaient aucune erreur. Par conséquent, je suis presque absolument certain qu'il ne s'agit pas d'un problème d'autorisation.

Question: Étant donné qu'il ne s'agit pas d'une erreur de réseau, quelqu'un peut-il me dire comment lancer le débogage de ce problème?.

Sortie verbeuse:

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

Sortie verbeuse 2:

Voici une approche plus directe qui isole le montage sur le seul répertoire en question ici:

$ 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

J'avais déjà rencontré cette erreur rpc.statd is not running but is required for remote locking auparavant, mais toutes les recherches sur Google du monde ne m'ont pas aidée du tout ...

EDIT:

Chaos m'a demandé d'exécuter les commandes suivantes et d'afficher les résultats:

D'abord sur le serveur:

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

Et puis sur le client

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 :

Chaos m'a demandé de poursuivre l'exécution des commandes suivantes et d'afficher les résultats:

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

Voici mon fichier /etc/exports sur le serveur. Comme vous pouvez le constater, j'essaie d'utiliser son nom tel que défini dans /etc/hosts, son adresse IP, et j'essaie également d'exporter différents dossiers. Toutes les autres lignes que j'ai omises car elles ne sont que des doublons de la dernière ligne, elles sont simplement redirigées vers différents 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)

Voici mon fichier /etc/fstab sur mon client 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:

Suite à certains conseils ici J'ai également défini le drapeau insecure dans les exportations, mais en vain, et voici la sortie de rpcinfo -p sur le client et le serveur:

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:

En suivant quelques conseils ici J'ai les journaux de débogage suivants:

[ 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:

J'ai fait des progrès et en ai déduit ce qui suit

  1. Ce n'est pas un problème de port car le client peut établir une connexion telnet avec l'hôte telnet 192.168.7.1 2049
  2. C'est probablement pas un problème de réseau car le serveur ne peut même pas monter sur lui-même
  3. L'ancienne version qui supportait (et supporte toujours) le montage exécutait nfs-kernel-server 1:1.2.4-1 alors que le nouveau serveur qui ne prend pas en charge le montage exécute nfs-kernel-server 1:1.2.8-2
  4. La commande Sudo /etc/init.d/portmap restart fonctionne sur l'ancien serveur, mais pas sur le nouveau serveur, ce qui m'indique que portmap est manquant sur le nouveau serveur. Cependant, lorsque j'essaie de l'installer via Sudo apt-get install portmap, il me dit que Note, selecting 'rpcbind' instead of 'portmap', and thatrpcbind est déjà la version la plus récente`

Éditer 6:

Voici la sortie de iptables -L sur mon serveur:

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         

et les ports corrects sont ouverts:

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
5
puk

J'ai eu le même problème que l'OP. Cela fonctionnait pour moi, mais après une mise à jour, cela ne fonctionnait pas. La solution consistait à ajouter l'option "nfsvers = 3".

4
Joe O

Mes deux collègues au travail viennent de résoudre un problème similaire au sein de Vagrant. AppArmor était le coupable, une solution peut être trouvée ici , citant:

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

et dmesg montre:

[ 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"

AppArmor bloque mount -o bind à l'intérieur du conteneur LXC.

Pour activer l'identifiant, ajoutez /etc/apparmor.d/lxc/lxc-default:

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

Recharger apparmor:

# /etc/init.d/apparmor reload
1
dhill

Tout d'abord, l'erreur rpc.statd se produit car le démon n'est pas en cours d'exécution. Démarrez le démon en:

Sudo service statd start

Deuxièmement, l'option de montage vers=3 est fausse, alors qu'elle devrait l'être

nfsvers=3
0
chaos

Si le serveur ne monte pas sur localhost, le problème ne vient pas du réseau.

Jetez un coup d’œil à /etc/hosts.deny et à /etc/hosts.allow.

Seulement pour d'autres problèmes ...: J'ai joué ces jours avec une ancienne version de NFS. J'avais un commutateur intermédiaire entre deux hôtes qui autorisait toutes les communications TCP et UDP à partir de ServerIP <-> ClientIP. Telnet fonctionnait sur tous les ports ... mais pas rpcinfo -p.

Nous avons constaté que le commutateur avait une fonctionnalité appelée "inspecter" qui inspectait tous les paquets "sunrpc" et, si la version ne figurait pas dans les versions "autorisées", supprimait les paquets sans rien enregistrer. C'est ce qu'on appelle "Inspection de protocole de couche d'application". http://www.Cisco.com/c/en/us/td/docs/security/fwsm/fwsm31/configuration/guide/fwsm_cfg/inspct_f.html#wp1349924

Après cela, nous avons également constaté que nous devions configurer des ports statiques pour le pare-feu, mais c’est un autre problème.

0
LiPi

Il peut être intéressant de mentionner (même si ce n'est probablement pas le cas ici) que si vous obtenez soudainement cette erreur après avoir renommé un dossier ou tenté d'accéder à un nouveau, vous avez peut-être oublié que vous devez spécifier le côté serveur. les dossiers sont partagés et ce qui ne se trouve pas dans /etc/exports - c'était le problème dans mon cas.

Après avoir modifié ce fichier, vous devez également procéder à Sudo service nfs-kernel-server restart

0
pzkpfw