frogdev site francophone sur Gentoo
Vous êtes ici : Serveur NFS
Dernière modification : February 16 2007 21:03:40.

NFS :
Network File System (NFS), signifiant en français « Système de fichiers en réseau », est un protocole développé par Sun Microsystems qui permet à un ordinateur d'accéder à des fichiers via un réseau.
Ce système de fichier en réseau permet de partager des données principalement entre systèmes UNIX. Des implémentations existent pour Macintosh ou Microsoft Windows. NFS est compatible avec IPv6 sur la plupart des systèmes.

1. Configuration du noyau :
File Systems --->
Network File Systems --->
    <M> NFS file system support
      [*] Provide NFSv3 client support
    <M> NFS server support
       [*] Provide NFSv3 server support

Une fois le noyau installé si nfs a été compilé en module :
# modprobe nfs && modprobe nfsd
Puis ajouter à /etc/modules.autoload.d/kernel-2.6 nfs et nfsd
# modules-update

2. Installation :
# emerge emerge nfs-utils

3. Configuration :
Pour partager des dossiers il suffit d'éditer /etc/exports afin d'ajouter des lignes :
<dossier partagé> <hôte>(<options>) <hôte2>(<options>)...

Les informations se trouvant sur une ligne sont les suivantes :

  • <dossier partagé> : chemin menant au dossier partagé.
  • <hôte> : indique quel est l'hôte qui peut accéder à ce partage, l'hôte peut être définit de plusieurs manières :
    • une IP : on indique simplement l'adresse IP de la machine pouvant accéder à ce partage.
    • un nom d'hôte : on indique le nom complet de l'hôte (pour peu qu'il soit connu du système au travers d'un DNS ou du fichier hosts).
    • un nom de groupe réseau NIS (NIS netgroup) qui s'indique sous la forme @<netgroup>.
    • un domaine avec un joker qui indique les machines d'un domaine ou sous-domaine.
    • un intervalle d'IP avec le masque de sous-réseau; par exemple : 192.168.0.0/24.
  • <options> : indique les options de partage; nous n'allons pas parcourir toutes les options ensemble mais uniquement les plus importantes.
    • rw : permet la lecture et l'écriture sur un partage pour l'hôte défini (par défaut, les partages sont en mode ro; c'est-à-dire en lecture seule).
    • async : permet au serveur NFS de violer le protocole NFS et de répondre au requête avant que les changements effectués par la requête aient été appliqués sur l'unité de stockage. Cette option améliore les performances mais a un coût au niveau de l'intégrité des données (données corrompues ou perdues) en cas de redémarrage non-propre (par exemple en cas de crash système).
    • sync : est le contraire de async. Le serveur NFS respecte le protocole NFS.
    • root_squash : force le mapping de l'utilisateur root vers l'utilisateur anonyme (option par défaut).
    • no_root_squash : n'effectue pas de mapping pour l'utilisateur root.
    • all_squash : force le mapping de tous les utilisateurs vers l'utilisateur anonyme.
    • anonuid : indique au serveurNFS l'UID de l'utilisateur anonyme (considéré comme tel dans les précédentes options de mapping).
    • anongid : indique au serveur NFS le GID de l'utilisateur anonyme (considéré comme tel dans les précédentes options de mapping).
Activer portmap :
Cette étape est facultative car les scripts rc lance portmap si il y en a besoin.
# /etc/init.d/portmap start
# rc-update add portmap default

4. Sécurité :
Un minimum de sécurité est de refuser tous les acces à NFS grâce au fichier /etc/hosts.deny:
#Interdire tout le monde sur les services portmap, nfsd et mountd
portmap:ALL
nfsd:ALL
mountd:ALL

Puis grâce au fichier /etc/hosts.allow autoriser les accés au fur et à mesure:
# Portmapper is used for all RPC services; protect your NFS!
# (IP addresses rather than hostnames *MUST* be used here)
portmap: 192.168.0.20
lockd: 192.168.0.20
rquotad: 192.168.0.20
mountd: 192.168.0.20
statd: 192.168.0.20
ou part tranche d'adresse ip
# Portmapper is used for all RPC services; protect your NFS!
# (IP addresses rather than hostnames *MUST* be used here)
portmap: 192.168.0.0/255.255.255.0
lockd: 192.168.0.0/255.255.255.0
rquotad: 192.168.0.0/255.255.255.0
mountd: 192.168.0.0/255.255.255.0
statd: 192.168.0.0/255.255.255.0

5. Activer NFS:
# /etc/init.d/nfs start
# rc-update add nfs default

6. Astuces:
Si vous rencontrez l'erreur "Autre erreur : Accés refusé."
Vérifiez que tous les services necessaires sont démarrés (coté serveur) gràce à la commande rpcinfo -p
Vous devez obtenir une liste qui comprend au moins un exemplaire de chacun de ces services :
tcp      111    portmapper
udp      942    status
udp      752    mountd
udp     2049    nfs
udp    32799   nlockmgr

Pour monter un système de fichier NFS manuellement, vous utiliserez la commande suivante :
# mount -t nfs <ip_serveur>:<rep_serveur> <point_montage_local>
Certaines options peuvent être passées à la commande mount lors du montage. Les options les plus intéressantes sont les suivantes :
ro : monte le système de fichier en lecture seule.
rw : monte le système de fichier en lecture/écriture.
hard : si le serveur n'est pas accessible, le noyau place les processus en attente de la ressource en attente.
soft : si le serveur est inaccessible, on attend le timeout avant de générer une erreur de lecture/écriture aux processus impactés.
timeo=XXX : indique le timeout (en mode soft) en secondes (maximum = 60sec).

Ces options se passent via l'argument -o de la commande mount; par exemple :
# mount -t nfs -o ro,soft,timeo=10 192.168.0.40:/home/brol /mnt/nfs

Montage automatique au démarrage:
Editer /etc/fstab afin d'ajouter : x.x.x.x:/directory /mount_directory nfs rw 0 0

Le firewall :
Monter un firewall est tout à fait délicat parce qu'il y a des ports qui sont alloués au hasard comme le démon NFS.
La commande rpcinfo -p vous affichera des ports différents.
Vous notez probablement que certains de ces ports sont statiques : 111 (tcp et udp) sont pour portmaps et 2049 (tcp et udp) sont pour nfs. Le reste, qui sont tout aussi importants, est au hasard. Pour le fixer, vous devez éditer /etc/conf.d/nfs pour avoir ceci :
# Number of servers to be started up by default
RPCNFSDCOUNT=8
# Options to pass to rpc.mountd
# ex. RPCMOUNTDOPTS="-p 32767
RPCMOUNTDOPTS="-p 32767"
# Options to pass to rpc.statd
# ex. RPCSTATDOPTS="-p 32765 -o 32766"
RPCSTATDOPTS="-p 32765 -o 32766"
# OPTIONS to pass to rpc.rquotad
# ex. RPCRQUOTADOPTS="-p 32764"
RPCRQUOTADOPTS="-p 32764"
Vous fixerez le statut, mountd et les ports de quotad à 32764-32767.

Règles IPTABLE pour NFS :
-A INPUT -p tcp -m state --state NEW -m tcp --dport 111 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 111 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 2049 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 2049 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 4001 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 4001 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 32764:32767 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 32764:32767 -j ACCEPT

Voir les commentairesAjouter un commentaire

Imprimer cette page Imprimer cette page

Liste de diffusion

Valider 


Espace téléchargement

Téléchargement
Livres (pdf)
Howto



Promouvoir et soutenir le logiciel libre
Go Frugalware, Go

Get Firefox

Gentoo

Logo Apache

Logo Mysql

Logo PHP



nobrevet

Read and comment at the BadVista.org blog

L'Association Francophone des Utilisateurs de Linux et des logiciels libres (AFUL)

Logo greenpeace


grenouille

Me contacter / Mes expériences GNU/Linux

- [ Basé sur Itseasy | Thème : Frogdev ] -
Les informations ne sont données qu'à titre indicatif.
© frogdev site francophone sur Gentoo, Licence FDL 2008

[ Page générée en 0.02267 secondes | Compression gZip active ]
Poids XHTML : 23.76 ko (27.76 ko non compressé) - CSS : 5.92 ko
Eléments chargés : 8.93 ko