====== Partager des fichier avec NFS ======
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//.
===== Services =====
Activez les services suivant dans votre [[https://www.freebsd.org/cgi/man.cgi?query=rc.conf&sektion=5|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:
- nfsd(8)
- rpc.statd(8)
- rpc.lockd(8)
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.
==== Exports ====
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
===== Parefeu =====
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''.
===== client =====
Depuis un client, ici //debian//, demander un //montage NFS//:
mount -t nfs -o vers=3 serveur:/montage /montage_local
===== En savoir plus =====
* [[ https://docs.freebsd.org/en/books/handbook/network-servers/#network-nfs | le manuel ]]