Network File System est un mécanisme de partage de fichiers, ou plutôt de points de montage, entre un serveur et un client. Il repose sur le mécanisme rpc.
Activez les services suivant dans votre configuration:
rpcbind_enable="YES" nfs_server_enable="YES" mountd_enable="YES" mountd_flags="-p 797" rpc_lockd_enable="YES" rpc_lockd_flags="-p 16001" rpc_statd_enable="YES" rpc_statd_flags="-p 719"
Le service principal est le premier: rpcbind(8). C'est le mécanisme qui va permettre à un client d'identifier les services utiles:
Ces derniers s'attribuent par défaut un port dynamiquement, ce qui va poser problème si vous êtes derrière un pare-feu. C'est pourquoi les ports sont fixés dans la configuration.
Vérifiez la liste des services avec rpcinfo(8) depuis un client et les ports en écoute avec sockstat(8) sur le serveur.
Il faut définir la liste des répertoires à exporter, dans /etc/exports
:
/data -maproot=david -alldirs -ro -network 192.168.1.1/24
Consultez le manuel de exports(5) pour le détail des options. Si vous utilisez des dataset ZFS, vous pouvez définir directement l'export grâce à la propriété sharenfs.
zfs get sharenfs zroot/DATA/master NAME PROPERTY VALUE SOURCE zroot/DATA/master sharenfs network 192.168.1.1/24,-alldirs local
Vérifier que les exports sont pris en compte:
showmount -e 192.168.1.14 Exports list on 192.168.1.14: /data Everyone
Autoriser les ports identifiés par les services du chapitre précédent, en UDP comme en TCP.
udp_nfs="{ sunrpc, 797, 719, 16001 }" tcp_nfs="{ sunrpc, nfsd,719, 16001 }" # ... pass log proto udp from { amis } to { serveur } port $udp_nfs pass log proto tcp from { amis } to { serveur } port $tcp_nfs
Les ports nommés sont issus de /etc/services
.
Depuis un client, ici debian, demander un montage NFS:
mount -t nfs -o vers=3 serveur:/montage /montage_local