Aller au contenu principal
Sujet: Création d'un partage NFS sous Leap 15.x (Lu 151 fois) sujet précédent - sujet suivant

Création d'un partage NFS sous Leap 15.x

Bonjour

Je vois souvent des problèmes avec les montages et partages en SAMBA.
Ce mode de partage est probablement incontournable avec des machines sous Windows. Mais si vous restez dans l'univers Linux ou si vous avez des applications mobiles qui gèrent le partage NFS, ce mode NFS est, d'après mon expérience, beaucoup plus stable.

Par contre, depuis l'arrivée de Leap (peu ou prou), YaST n'est plus aussi bien automatisé, notamment par rapport à la gestion du pare-feu. Cela demande donc plus d'efforts et je n'ai rien trouvé sur le web qui décrive la procédure complète (corrigez moi si je me trompe).

Je me propose donc de partager ma recette ; si cela peut vous aider, j'en serais ravi.
N'hésitez pas aussi à l'améliorer !

Mise en place du serveur
Installer yast2-nfs-server qui doit installer nfs-kernel-server en dépendance.
sudo zypper in yast2-nfs-server

Les répertoires partagés seront isolés du reste du système grâce à un montage BIND. Cela renforce la sécurité apparemment.
Pour cela, ce sont les répertoires dans le dossier /export qui seront accessibles.

Il faut donc créer cette zone tampon à partager. Le nom de cette zone tampon est ici "partage" mais vous pouvez le changer à votre guise. Pour cela, la commande est :
sudo mkdir -p /export/partage

Il faut ensuite lier ce répertoire avec le contenu du vrai répertoire à partager grâce à un montage au démarrage.
En supposant que le répertoire à partager est /home/user/Musique, il faut ajouter la section suivante au fichier /etc/fstab.

sudo nano /etc/fstab
puis ajouter le paragraphe suivant en fin de fichier :
#bind pour export NFS 
/home/user/Musique /export/partage none bind 0 0

Pour partager plusieurs répertoires, répéter les opérations ci-dessus pour chacun.

Nous allons maintenant créer le partage NFS avec YaST. Pour cela, ouvrir le GUI YaST et chercher Serveur NFS dans la section Services réseau.

Vous arrivez sur la fenêtre d'accueil :

Vous sélectionnez alors "Démarrer" dans la zone Serveur NFS puis vous cliquez sur le bouton Suivant qui est alors apparu.

Vous êtes maintenant sur la fenêtre pour ajouter les répertoires à partager. Pour cela, vous cliquez sur le bouton "Ajouter répertoire" et vous sélectionnez /export/partage :


Vous avez un pop-up qui s'affiche avec les options "ro,root_squash,sync,no_subtree_check". Il faut bien revenir au début de la ligne dans ce pop-up pour voir l'option "ro".
Si vous voulez que le répertoire ne soit partagé qu'en lecture seule, vous laissez l'option "ro" telle que. Si vous voulez que le contenu de ce répertoire soit modifiable depuis les machines et utilisateurs distants, vous changez "ro" par "rw".


Vous cliquez alors sur le bouton "Terminer".

A ce stade, votre partage NFS est opérationnel. Le seul souci est qu'il faut que la pare-feu autorise la connexion à ces répertoires.
C'est là où cela se complique par rapport à des anciennes versions d'openSUSE qui s'occupaient d'ouvrir les bons ports.
Ce qui se passe est que les numéros de ces ports vont changer dynamiquement d'une session à une autre. Il faut donc commencer par assigner des ports statiques à votre partage NFS.

Pour cela nous allons installer un utilitaire par :
sudo zypper in firewalld-rpcbind-helper

Il faut ensuite assigner les ports statiques comme expliqué précédemment. La commande ci-dessous va modifier le fichier /etc/sysconfig/nfs
sudo firewall-rpc-helper.py --static-config -p nfs-server --non-interactive --port-config "mountd=20100 status=20200 nlockmgr=20300 rquotad=20400"
Cependant, pour une raison qui m'échappe, rquotad n'est pas pris en compte. Peut-être le sera-t-il dans des versions futures ?
En attendant, il faut éditer /etc/sysconfig/nfs
sudo nano /etc/sysconfig/nfs
et ajouter la ligne suivante en fin de fichier :
RQUOTAD_PORT="20400"

Il y a un certain nombre de services à redémarrer et je ne les ai pas tous identifiés. Ma solution à ce stade est de redémarrer complètement la machine.
systemctl reboot

Après redémarrage, vérification des ports statiques alloués par la commande :
sudo firewall-rpc-helper.py -r -p nfs-server
qui retourne :
20100/tcp 20100/udp 20200/udp 20200/tcp 20300/udp 20300/tcp

Nous allons maintenant créer un service pour ouvrir ces ports dans firewalld :
sudo firewall-rpc-helper.py -p nfs-server --create-firewalld-service nfs-server-static

Vérification du contenu par :
sudo firewall-cmd --info-service nfs-server-static
qui retourne :
nfs-server-static
  ports: 20400/udp 20400/tcp 20100/udp 20100/tcp 20200/udp 20200/tcp 20300/udp 20300/tcp 2049/tcp 2049/udp
  protocols:
  source-ports:
  modules:
  destination:

ajout à la zone du pare-feu que vous utilisez ; ici, public :
sudo firewall-cmd --add-service=nfs-server-static --zone=public

Recharger le firewall par :
sudo firewall-cmd --reload

Ouvrir le pare-feu dans Yast et vérifier que vous avez nfs-server-static et rpc-bind ouverts dans la zone public (zone par défaut) ou la zone que vous utilisez. S'ils ne le sont pas, ajoutez les.

Votre serveur est maintenant opérationnel.

Configuration de la machine cliente

Pour accéder à ces répertoires NFS depuis une machine cliente distante, il faut les monter. Par exemple, éditer /etc/fstab et ajouter le bloc suivant :
192.168.1.20:/export/partage   /data/share/musique  nfs  noauto,x-systemd.automount,x-systemd.device-timeout=10,timeo=14,x-systemd.idle-timeout=1min 0 0

où :
  • 192.168.1.20 est l'adresse IP local du serveur NFS (machine où le répertoire à partager se trouve). A ajuster selon la votre.
  • /data/share/musique est le répertoire sur la machine client qui sera à l'image du répertoire partagé depuis le serveur. A ajuster selon vos souhaits. Bien entendu, il faut au préalable créer ce répertoire /data/share/musique par sudo mkdir -p /data/share/musique

Donc le répertoire /home/user/Musique de la machine serveur sera accessible en tant que /data/share/musique sur la machine cliente.

Avec certaines distributions, il faudra peut-être installer des paquets pour gérer le partage NFS sur la machine cliente.
J'ai en tête nfs-common avec Linux Mint ou nfs-utils avec Arch. Regarder les wiki de vos distributions, c'est en général bien expliqué.

Voilà. Dites moi si vous avez repéré des problèmes ou si ce n'est pas assez clair.

A+