View previous topic :: View next topic |
Author |
Message |
bouleetbil Guru
Joined: 06 Jul 2004 Posts: 456 Location: Montpellier
|
Posted: Sat Dec 02, 2006 6:51 pm Post subject: [howto] NFS |
|
|
Une façon assez simple de partager des données via un réseau est NFS.
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. Ce protocole est beaucoup plus simple à mettre en place que samba.
1. Configuration du noyau :
Code: | 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 :
Code: | # modprobe nfs && modprobe nfsd |
Puis ajouter à /etc/modules.autoload.d/kernel-2.6 nfs et nfsd
2. Installation :
Code: | # emerge emerge nfs-utils |
3. Configuration :
Pour partager des dossiers il suffit d'éditer /etc/exports afin d'ajouter des lignes :
Code: | <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.
Code: | # /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:
Code: | #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:
Code: | # 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
Code: | # 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:
Code: | # /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 :
Code: | 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 :
Code: | # 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) pour portmaps et 2049 (tcp et udp) pour nfs. Le reste, qui est tout aussi important, est fixé au hasard. Pour le fixer, vous devez éditer /etc/conf.d/nfs pour avoir ceci :
Code: | # 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 :
Code: |
-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 |
sources :
http://doc.ubuntu-fr.org/applications/nfs
http://gentoo-wiki.com/HOWTO_Share_Directories_via_NFS
Pour une documentation plus complète : http://jp.barralis.com/howto/linux/NFS-HOWTO/NFS-HOWTO.php _________________ L'homme n'est pas fait pour travailler ça le fatigue.
LiveCD Gentoo : http://www.frogdev.info
Gentoo/Freebsd : http://www.frogdev.info/gentoo_freebsd.php |
|
Back to top |
|
|
truc Advocate
Joined: 25 Jul 2005 Posts: 3199
|
Posted: Wed Dec 06, 2006 12:03 pm Post subject: |
|
|
Comme d'hab, merci bien bouleetbil pour ce howto, qui est d'ailleurs très bien, fait:
-> Une partie présentation
-> Une partie mise en place
-> Et une partie astuce, ou tu détailles notamment la configuration du parefeu pour que tout fonctionne bien! chapeau
@modos Tout cela me fait penser qu'il serait sympa, d'avoir un poste en sticky avec une liste des howto/tips etc.. contenut sur ce forums, ça rendrait la recherche bien plus rapide et efficace à mon avis. _________________ The End of the Internet! |
|
Back to top |
|
|
Mickael Advocate
Joined: 05 Sep 2005 Posts: 2387 Location: ~Belfort! - France - EU
|
|
Back to top |
|
|
truc Advocate
Joined: 25 Jul 2005 Posts: 3199
|
Posted: Wed Dec 06, 2006 1:44 pm Post subject: |
|
|
ahh merci, j'me disais bien aussi que j'en avais déjà vu un! Mais je ne comprends pas pourquoi il n'est pas mis sticky? _________________ The End of the Internet! |
|
Back to top |
|
|
CourJuS Tux's lil' helper
Joined: 26 Jun 2004 Posts: 99 Location: Belgique
|
Posted: Thu Dec 07, 2006 2:05 pm Post subject: |
|
|
Bonjours à tous
J'ai une petite question en raport direct/indirect avec NFS.
j'utilise VMWare et je souhaiterais stocker mes machines sur un partage NFS mais VMW rale sec pour le "write lock" j'ai rien trouvé de très concluant sur google (il était 4h du mat aussi, mon cerveau devais plus êtres concluant non plus )
Je parle ici de VMWare mais d'autres applications par le passé mon charié avec le write lock
Y a t'il des options particuliaire à passer au montage du partage, ou bien dans le /etc/export ?
Merci
ps Chapeau pour le tuto, simple rapide éfficace |
|
Back to top |
|
|
bouleetbil Guru
Joined: 06 Jul 2004 Posts: 456 Location: Montpellier
|
Posted: Thu Dec 14, 2006 8:49 pm Post subject: |
|
|
Merci
@CourJuS
Pour le write lock d'après ce que j'ai lu cela pourrait être du à un problème de droit. Peut-être un post sur le forum French ? _________________ L'homme n'est pas fait pour travailler ça le fatigue.
LiveCD Gentoo : http://www.frogdev.info
Gentoo/Freebsd : http://www.frogdev.info/gentoo_freebsd.php |
|
Back to top |
|
|
|