Chapitre 711 minIntermédiaire
Partage NFS pour Linux et Proxmox VE
Par Josselyn C., prof de BTS SIO. Mis à jour le .
À la fin de ce chapitre, tu sauras
- expliquer comment NFS identifie et autorise un client ;
- créer un export NFS limité à un réseau ;
- monter un partage NFS sous Linux, au démarrage compris ;
- ajouter un stockage NFS dans Proxmox VE pour les ISO et une copie de secours des sauvegardes.
4 exercices corrigés
NFS (Network File System) est le protocole de partage de fichiers des systèmes Unix et Linux : un serveur exporte un dossier, et les clients le montent dans leur arborescence, où il se comporte comme un dossier local. Sur TrueNAS, un export NFS publie un dataset pour des serveurs Linux ou pour un hyperviseur comme Proxmox VE, qui y range ses images ISO et ses modèles. Ce chapitre explique comment NFS identifie les clients, crée deux exports sur srv-nas, les monte sous Linux et les ajoute comme stockages dans Proxmox VE.
NFSv3 et NFSv4
| NFSv3 | NFSv4 (4.0, 4.1, 4.2) | |
|---|---|---|
| Ports | 2049, plus rpcbind (111) et des ports dynamiques (mountd, verrous) | 2049 seulement : simple à filtrer |
| État | Sans état : le serveur ne suit pas les fichiers ouverts | Avec état : verrous et délégations intégrés |
| Sécurité | Confiance dans l'adresse du client et l'UID qu'il annonce | Même modèle par défaut, Kerberos possible (krb5, krb5i, krb5p) |
| Apports | Le plus compatible | 4.1 : sessions, plusieurs connexions ; 4.2 : copie côté serveur, fichiers creux |
Choisis NFSv4.2 dès que les clients le permettent : Debian 13 et Proxmox VE 9 le prennent en charge. NFSv3 reste utile pour de vieux clients et pour la commande showmount, qui ne fonctionne qu'avec lui.
Comment NFS fait confiance à un client
Par défaut (mode de sécurité sys), un serveur NFS ne demande aucun mot de passe. Il vérifie que l'adresse IP du client figure dans la liste autorisée, puis il croit l'UID et le GID que le client annonce avec chaque requête. Si le client dit « je suis l'UID 3001 », le serveur applique les droits de l'UID 3001.
Conséquence : quiconque est root sur une machine dont l'adresse est autorisée peut se faire passer pour n'importe quel utilisateur. Trois protections se cumulent :
- Restreindre les clients à des adresses ou des réseaux précis, jamais « tout le monde ».
- Écraser l'identité de root (root squash) : par défaut, le
rootd'un client est ramené à l'utilisateur anonymenobodysur le serveur. Sur TrueNAS, les champs Maproot User et Maproot Group disent en quel compte transformerroot; Mapall transforme tous les utilisateurs du client en un seul compte. - Isoler le réseau de stockage, et pour des données sensibles partagées entre des machines peu sûres, passer à Kerberos (
krb5pchiffre en plus le trafic).
Les deux exports de srv-nas
| Dataset | Clients autorisés | Maproot | Usage |
|---|---|---|---|
tank/partages/linux | 192.168.10.176/28 (VLAN 20, les serveurs) | Aucun (root écrasé en nobody) | Échange de fichiers entre serveurs Linux, écriture par le compte svc-linux (UID 3001) |
tank/proxmox/iso et tank/proxmox/sauvegardes | 192.168.10.242, .243 et .244 (les trois hyperviseurs, dans le VLAN 80) | root / root | Proxmox écrit ses fichiers en tant que root |
Pour Proxmox, l'écrasement de root doit être levé : Proxmox écrit les ISO et les sauvegardes vzdump en root, qui échoueraient faute de droits. Ce n'est acceptable que parce que l'export est limité aux trois hyperviseurs, dans le VLAN 80 non routé. Proxmox Backup Server, qui est aussi dans ce VLAN, n'en a pas besoin : il n'est pas dans la liste.
Créer l'export.
- Shares, widget Unix (NFS) Shares, bouton Add.
- Path :
/mnt/tank/proxmox/sauvegardes(bouton de parcours sous/mnt). - Description : « Copie de secours vzdump de pve1, pve2 et pve3 ».
- Hosts, Add :
192.168.10.242, puis192.168.10.243et192.168.10.244. (Networks accepte un réseau entier en notation CIDR ; ici, il ouvrirait l'export à toute machine du VLAN 80.) - Advanced Options : Maproot User
root, Maproot Grouproot; Security laissé en SYS ; Read-Only décoché. - Save, puis accepter l'activation du service NFS.
On crée de même l'export de tank/proxmox/iso, et celui de tank/partages/linux limité à 192.168.10.176/28, sans maproot.
Régler le service. System > Services, ligne NFS, bouton de modification : coche NFSv4 dans les protocoles activés (NFSv3 peut rester actif pour showmount), restreins les adresses d'écoute aux interfaces utiles (192.168.10.183 et 192.168.10.241), et coche Start Automatically.
Monter un export sous Linux
Sur srv-glpi (192.168.10.184), serveur Debian 13 du VLAN 20 (cours Linux : services) :
sudo apt install nfs-common
sudo mkdir -p /srv/partage
sudo mount -t nfs -o vers=4.2 srv-nas.ad.sorbier.example:/mnt/tank/partages/linux /srv/partage
Vérifie le montage et la version négociée :
findmnt /srv/partage
nfsstat -m
/srv/partage from srv-nas.ad.sorbier.example:/mnt/tank/partages/linux
Flags: rw,relatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.168.10.184,local_lock=none,addr=192.168.10.183
Pour monter l'export à chaque démarrage, ajoute une ligne dans /etc/fstab :
srv-nas.ad.sorbier.example:/mnt/tank/partages/linux /srv/partage nfs4 vers=4.2,_netdev,nofail 0 0
L'option _netdev attend que le réseau soit prêt avant de monter ; nofail évite qu'un NAS injoignable bloque le démarrage du serveur. Teste la ligne sans redémarrer avec sudo umount /srv/partage && sudo mount -a.
Ajouter un stockage NFS à Proxmox VE
Dans l'interface de Proxmox VE 9 : Datacenter > Storage > Add > NFS.
| Champ | Valeur | Rôle |
|---|---|---|
| ID | nas-sauvegardes | Nom du stockage dans Proxmox |
| Server | 192.168.10.241 | L'adresse du NAS dans le VLAN 80 (une adresse évite d'attendre le DNS) |
| Export | /mnt/tank/proxmox/sauvegardes | Proposé par la liste si NFSv3 est actif, sinon à saisir |
| Content | VZDump backup file | Ce que Proxmox rangera sur ce stockage |
| Nodes | Tous | Le stockage est partagé par les trois nœuds |
| NFS Version (options avancées) | 4.2 | Version négociée |
Un second stockage, nas-iso, reçoit les contenus ISO image et Container template. En ligne de commande, sur n'importe quel nœud du cluster :
pvesm add nfs nas-sauvegardes --server 192.168.10.241 \
--export /mnt/tank/proxmox/sauvegardes --content backup --options vers=4.2
pvesm add nfs nas-iso --server 192.168.10.241 \
--export /mnt/tank/proxmox/iso --content iso,vztmpl --options vers=4.2
pvesm status
La configuration est écrite dans /etc/pve/storage.cfg, partagé par tout le cluster :
nfs: nas-sauvegardes
export /mnt/tank/proxmox/sauvegardes
path /mnt/pve/nas-sauvegardes
server 192.168.10.241
content backup
options vers=4.2
nfs: nas-iso
export /mnt/tank/proxmox/iso
path /mnt/pve/nas-iso
server 192.168.10.241
content iso,vztmpl
options vers=4.2
Proxmox monte chaque export sous /mnt/pve/<ID>. Chez Sorbier, les sauvegardes quotidiennes des VM partent vers Proxmox Backup Server (192.168.10.245) ; une tâche hebdomadaire (Datacenter > Backup, avec sa rétention dans l'onglet Retention) vise nas-sauvegardes pour garder une copie des VM critiques au format vzdump, sur un autre support que PBS et restaurable même si PBS est perdu. Dans une maquette sans PBS, ce même export NFS peut servir de destination principale des sauvegardes. La stratégie de sauvegarde elle-même (fréquences, rétention, copie hors site, tests de restauration) est traitée dans le cours Sauvegarde et PRA.
Exercices
Exercice 1 sur 4 L'export trop ouvert Réussi À revoir
Un stagiaire a créé cet export sur srv-nas : Path /mnt/tank/partages/linux, Networks vide, Hosts vide, Maproot User root, Maproot Group root. Quels risques ? Corrige la configuration.
Voir la réponseMasquer la réponse de l'exercice 1
Networks et Hosts vides : l'export est accessible depuis toutes les adresses qui peuvent joindre le NAS, postes et Wi-Fi compris si le filtrage le permet. Maproot root : le root de n'importe quel client garde tous les droits sur l'export, donc n'importe quel poste dont l'utilisateur est administrateur peut tout lire, modifier ou chiffrer.
Correction : Networks 192.168.10.176/28 (ou les seules adresses des serveurs concernés dans Hosts), Maproot vide pour que root soit écrasé en nobody, et des droits du dataset donnés au compte svc-linux (UID 3001). Les serveurs du VLAN 20 joignent srv-nas sans traverser pfSense : c'est la liste Networks/Hosts de l'export, et non le pare-feu, qui les filtre. Le pare-feu bloque, lui, les autres VLAN (postes, Wi-Fi) vers TCP 2049.
Tu avais trouvé ?
Exercice 2 sur 4 Pourquoi « Permission denied » ? Réussi À revoir
Sur srv-glpi (192.168.10.184), Moussa monte l'export tank/partages/linux et tente, en root, de créer un fichier : touch /srv/partage/test renvoie « Permission denied ». Le dataset appartient à svc-linux (UID 3001), droits rwxr-x---. Explique, et donne la bonne façon d'écrire dans ce dossier.
Voir la réponseMasquer la réponse de l'exercice 2
Sans maproot, le root du client est écrasé en nobody : le serveur traite la requête comme venant d'un utilisateur anonyme, qui n'a aucun droit (--- pour les autres). C'est voulu.
La bonne façon : créer sur srv-glpi le compte svc-linux avec le même UID 3001 (useradd -u 3001 svc-linux) et écrire en tant que ce compte (sudo -u svc-linux touch /srv/partage/test). Le serveur reçoit l'UID 3001 et applique les droits du propriétaire, rwx.
Tu avais trouvé ?
Exercice 3 sur 4 Le stockage de secours des sauvegardes Réussi À revoir
Écris la commande pvesm qui ajoute l'export /mnt/tank/proxmox/sauvegardes de 192.168.10.241 comme stockage nas-sauvegardes, en NFS 4.2, pour les sauvegardes uniquement (la copie hebdomadaire de secours, ou la destination principale d'une maquette sans PBS). Puis donne le chemin où Proxmox le monte et une commande pour vérifier qu'il est actif.
Voir la réponseMasquer la réponse de l'exercice 3
pvesm add nfs nas-sauvegardes --server 192.168.10.241 \
--export /mnt/tank/proxmox/sauvegardes --content backup --options vers=4.2
Proxmox le monte sous /mnt/pve/nas-sauvegardes. pvesm status doit afficher le stockage nas-sauvegardes de type nfs avec le statut active et sa capacité ; findmnt /mnt/pve/nas-sauvegardes confirme le montage et ses options.
Tu avais trouvé ?
Exercice 4 sur 4 NFS et pare-feu Réussi À revoir
Le flux NFS entre les serveurs Linux du VLAN 20 et srv-nas traverse le pare-feu de Sorbier dans une autre architecture. Quelles règles faut-il ouvrir en NFSv4 ? Et en NFSv3 ?
Voir la réponseMasquer la réponse de l'exercice 4
NFSv4 : une seule règle, des serveurs Linux autorisés vers 192.168.10.183, TCP 2049.
NFSv3 : TCP et UDP 2049 (nfsd), TCP et UDP 111 (rpcbind), plus les ports de mountd et des services de verrouillage, dynamiques par défaut, qu'il faut fixer côté serveur pour pouvoir les filtrer. C'est l'une des raisons de préférer NFSv4 : un seul port, facile à filtrer.
Tu avais trouvé ?