web-dev-qa-db-fra.com

Pourquoi NFS ne me permet-il pas de monter un partage?

l'hôte

J'ai un hôte qui exécute Ubuntu 12.04 à l'adresse 10.0.0.202. Il fournit un partage NFS pour les autres machines du réseau. Voici le contenu de /etc/exports:

/media/storagedrive 10.0.0.0/24(rw,sync,no_subtree_check)

L'intention est ici de partager le contenu de /media/storagedrive avec d'autres machines du réseau dans la plage d'adresses IP 10.0.0.0 - 10.0.0.255.

Client de travail

Cela fonctionne correctement avec un ordinateur client à 10.0.0.40, exécutant Ubuntu 13.10, connu sous le nom de MattDev. Le /etc/fstab de cette machine ressemble à ceci:

UUID=8f8c838e-3ea2-457a-87f0-57b12dfab06c /               ext4    errors=remount-ro 0       1
UUID=427089d4-46a2-432d-9df4-7016bdfc7df2 none            swap    sw              0       0
10.0.0.202:/media/storagedrive /mnt/NetworkStorageDrive nfs rsize=8192,wsize=8192,timeo=14,intr

Et ls -al /mnt/ sur cette machine ressemble à ceci:

total 12K
drwxr-xr-x  3 root root    4.0K Feb  4 17:48 .
drwxr-xr-x 23 root root    4.0K Feb  5 08:44 ..
drwxrwxr-x  7 root plugdev 4.0K Feb  5 11:43 NetworkStorageDrive

La sortie de id se présente comme suit:

uid=1000(matt) gid=1000(matt) groups=1000(matt),4(adm),24(cdrom),27(Sudo),30(dip),33(www-data),46(plugdev),112(lpadmin),124(sambashare)

client virtuel non opérationnel

J'ai un deuxième ordinateur client, exécutant Ubuntu 12.10, en tant qu'OS invité sur un ordinateur hôte Windows 7. La machine hôte se trouve sur le réseau en tant que 10.0.0.28. La machine invitée est gérée par Vagrant, utilisant VirtualBox 4.3.6 en tant que fournisseur. J'appellerai l'hôte Windows 7 AlexDevHost et l'invité Ubuntu AlexDevGuest.

Lancer showmount -e 10.0.0.202 sur AlexDevGuest produit:

Export list for 10.0.0.202:
/media/storagedrive 10.0.0.0/24

Cependant, lorsque j'essaie de monter le partage, il échoue:

$ Sudo mount 10.0.0.202:/media/storagedrive /mnt/NetworkStorageDrive
mount.nfs: access denied by server while mounting 10.0.0.202:/media/storagedrive

Alors j'ai commencé à chercher des problèmes:

$ ls -alh /mnt/
total 12K
drwxr-xr-x  3 root root 4.0K Feb  5 12:23 .
drwxr-xr-x 26 root root 4.0K Feb  5 12:23 ..
drwxr-xr-x  2 root root 4.0K Feb  5 12:23 NetworkStorageDrive
$ id
uid=1001(vagrant) gid=1001(vagrant) groups=1001(vagrant)
$

Cet uid et gid est différent de l'utilisateur Matt sur MattDev. J'ai donc jonglé avec l'utilisation de l'utilitaire pour vagrant, car j'ai lu que l'accès NFS est contrôlé en faisant correspondre l'adresse IP et les uids. Alors maintenant:

$ id
uid=1000(vagrant) gid=1001(vagrant) groups=1001(vagrant)
$ Sudo mount 10.0.0.202:/media/storagedrive /mnt/NetworkStorageDrive
mount.nfs: access denied by server while mounting 10.0.0.202:/media/storagedrive
$

Toujours pas de succès. Alors maintenant, je manque d'idées.

  1. Qu'est-ce que je fais mal?
  2. Si la partie uid est correcte, puis-je vérifier que le serveur NFS voit ma tentative d'accès provenir de 10.0.0.28 et non d'une autre adresse IP ne figurant pas dans la plage autorisée?
14
Alex

D'accord, j'ai résolu le problème (ou du moins, je l'ai fait fonctionner et je pense savoir ce qui le causait).

J'ai ajouté l'indicateur insecure à la ligne /etc/exports sur le serveur NFS, elle ressemble donc maintenant à ceci:

/media/storagedrive 10.0.0.0/24(rw,sync,no_subtree_check,insecure)

Cet indicateur autorise les connexions à partir de ports clients supérieurs à IPPORT_RESERVED (1024).

La commande mount fonctionne maintenant.

Je suppose que le problème vient de l'absence de l'indicateur insecure, car VirtualBox utilisait NAT pour transmettre la demande au réseau physique. en dessous de 1024, le port traduit sur l'hôte Windows 7 (AlexDevHost) était probablement supérieur à 1024, et donc bloqué. Définir l’indicateur insecure signifiait que cela était autorisé.

Ce problème n'affecte évidemment pas la machine non virtuelle DevMatt.

15
Alex