J'ai un problème de montage d'un partage NFS que je ne peux pas résoudre et qui me rend fou. Voici la situation:
Trois machines impliquées:
Hôte A: Mandrake, IP 192.168.1.4, serveur NFS
Hôte B: athlon64, IP 192.168.1.64, client NFS
Hôte C: lap-fzs-2, IP 192.168.1.27, client NFS
L'hôte A dispose d'un serveur NFS en cours d'exécution qui exporte un répertoire monté par l'hôte B. Cela fonctionne parfaitement et fonctionne depuis des siècles. Pas de problème. Maintenant, l'hôte C entre en scène. Ubuntu 12.04 LTS, système moderne. J'ai essayé de monter le même partage à partir de l'hôte A mais j'ai une erreur d'autorisation refusée:
root@lap-fzs-2:~# mount -t nfs Mandrake:/data /data -onfsvers=2
mount.nfs: access denied by server while mounting Mandrake:/data
Le fait que cela fonctionne entre les hôtes A et B devrait prouver que l’exportation NFS en soi fonctionne. Voici les informations que je peux donner qui me font penser que cela devrait fonctionner. Peut-être que quelqu'un voit ce que je ne vois pas et sait pourquoi cela échoue sur le nouvel hôte C.
Exportations de serveur:
[root@Mandrake /root]# cat /etc/exports
/suse 192.168.1.0/16(ro,no_root_squash)
/data 192.168.1.0/24(rw)
#/data3 192.168.2.0/24(rw)
#/data 192.168.2.0/16(rw,all_squash,anonuid=500,anongid=500)
#/data3 192.168.2.0/16(rw,all_squash,anonuid=500,anongid=500)
[root@Mandrake /root]# exportfs
/suse 192.168.1.0/16
/data 192.168.1.0/24
Le mappeur de port est en cours d'exécution, les exportations sont connues et montées par l'hôte B "athlon64".
[root@Mandrake /root]# showmount -e
Export list for Mandrake:
/data 192.168.1.0/24
/suse 192.168.1.0/16
[root@Mandrake /root]# showmount -a
All mount points on Mandrake:
atlhon64.acme.local:/data
Lorsque l'hôte athlon64 monte le partage NFS, le journal du serveur indique que l'opération a abouti:
Feb 11 20:06:46 Mandrake mountd[460]: authenticated mount request from atlhon64.acme.local:770 for /data (/data)
Mais lorsque l'hôte C tente de monter le même partage, le journal du serveur indique:
Feb 11 20:12:42 Mandrake mountd[460]: refused mount request from lap-fzs-2 for /data (/): no export entry
L'hôte C voit le serveur, atteint le mappeur de ports et le nfsd, mais échoue aux autorisations.
root@lap-fzs-2:~# showmount -e 192.168.1.4
Export list for 192.168.1.4:
/data 192.168.1.0/24
/suse 192.168.1.0/16
root@lap-fzs-2:~# mount -t nfs -v Mandrake:/data /data -onfsvers=2,proto=udp
mount.nfs: timeout set for Mon Feb 11 21:49:23 2013
mount.nfs: trying text-based options 'nfsvers=2,proto=udp,addr=192.168.1.4'
mount.nfs: prog 100003, trying vers=2, prot=17
mount.nfs: trying 192.168.1.4 prog 100003 vers 2 prot UDP port 2049
mount.nfs: prog 100005, trying vers=1, prot=17
mount.nfs: trying 192.168.1.4 prog 100005 vers 1 prot UDP port 636
mount.nfs: mount(2): Permission denied
mount.nfs: access denied by server while mounting Mandrake:/data
Je dois utiliser NFSv2 sur le client. L'utilisation de NFSv4 échouera car le serveur ne le prend pas en charge. Il échoue car il essaie de se connecter via TCP directement à 2049 mais le port n'est pas ouvert. Aucune solution de rechange ne se produit. L'utilisation de NFSv3 entraînera une incompatibilité programme/version RPC.
Qu'est-ce que je rate?
Mise à jour:
Les trois machines sont sur un réseau local, sur le même commutateur. Il n'y a pas de pare-feu actif sur l'hôte C:
root@lap-fzs-2:~# iptables -vnL
Chain INPUT (policy ACCEPT 17 packets, 1853 bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 20 packets, 5611 bytes)
pkts bytes target prot opt in out source destination
Ni sur l'hôte A:
[root@Mandrake /root]# ipchains -L
Chain input (policy ACCEPT):
Chain forward (policy ACCEPT):
Chain output (policy ACCEPT):
Feb 11 20:12:42 Mandrake mountd [460]: demande de montage refusée de lap-fzs-2 pour/data (/): aucune entrée d'exportation
Puisque la notification de rejet du serveur affirme qu'il y a "aucune entrée d'exportation" pour l'hôte C, vous devriez peut-être essayer une ligne non ambiguë dans le fichier /etc/exports
avec le nom d'hôte explicite ou l'adresse IP complète de C.
Essayez également d’émettre une commande exportfs -a
sur le serveur.
J'ai souvent des problèmes pour accéder à mon serveur NFS, même après un redémarrage. Émettre explicitement la commande exportfs -a
est la solution fiable (pour moi).
Dans mon cas, -o vers = 3 est la réponse:
$ Sudo mount -o vers=3 192.168.172.1:/A/DIR /mnt
Vérifiez et voyez si les UID et GUID des utilisateurs NFS sont identiques sur le serveur et le client. Assurez-vous également que le dossier sur le serveur porte l’autorisation 777. Il s’agit de mon fichier/etc/exports sur mon serveur auquel le client peut accéder.
Créez un répertoire de partage NFS: (Créez chaque serveur avec IP, espace séparé)
mkdir/var/nfs vim/etc/exports/var/nfs 10.180.82.250 (rw, sync, root_squash, anonuid = 530, anongid = 530, no_subtree_check)