Nfsv4 configuration fr

From Linux NFS

(Difference between revisions)
Jump to: navigation, search
(Configuration de Kerberos 5 pour NFSv4)
m (delnor)
 
(8 intermediate revisions not shown)
Line 1: Line 1:
-
D'après la [http://www.citi.umich.edu/projects/nfsv4/linux/using-nfsv4.html documentation du CITI].
+
chirollicoac
 +
D'après la [http://www.citi.umich.edu/projects/nfsv4/linux/using-nfsv4.html documentation du CITI].
=Guide de configuration =
=Guide de configuration =
Line 6: Line 7:
==Configuration de NFSv4==
==Configuration de NFSv4==
-
On supposera que vous utilisez un noyau suffisament moderne (2.6.7 ou plus récent), ainsi que les utilitaires NFS qui sont adaptés. Si ce n'est pas le cas, veuillez [http://www.citi.umich.edu/projects/nfsv4/linux/ mettre à jour] votre configuration. Ces étapes ne sont à faire qu'une fois. Elle sont faites par les distributions récentes incluant NFSv4. Si votre distribution fournie déjà NFSv4, vous pouvez [[#Utilisation de NFSv4|ignorer]] cette section.
+
On supposera que vous utilisez un noyau suffisament moderne (2.6.7 ou plus récent), ainsi que les utilitaires NFS qui sont adaptés. Si ce n'est pas le cas, veuillez [http://www.citi.umich.edu/projects/nfsv4/linux/ mettre à jour] votre configuration. Ces étapes ne sont à faire qu'une fois. Elle sont faites par les distributions récentes incluant NFSv4. Si votre distribution fournie déjà NFSv4, vous pouvez [[#Utilisation de NFSv4|ignorer]] cette section.
-
Ajouter les lignes suivantes à /etc/fstab pour monter les rpc_pipefs et nfsd automatiquement
+
Ajouter les lignes suivantes à /etc/fstab pour monter les rpc_pipefs et nfsd automatiquement
  rpc_pipefs /var/lib/nfs/rpc_pipefs rpc_pipefs defaults 0 0
  rpc_pipefs /var/lib/nfs/rpc_pipefs rpc_pipefs defaults 0 0
  nfsd /proc/fs/nfsd nfsd defaults 0 0
  nfsd /proc/fs/nfsd nfsd defaults 0 0
-
Créer un point de montage pour rpc_pipefs:
+
Créer un point de montage pour rpc_pipefs:
  mkdir /var/lib/nfs/rpc_pipefs
  mkdir /var/lib/nfs/rpc_pipefs
-
Modifier la ligne de fstab pour le répertoire que vous comptez exporter pour ajouter les options '''acl''' et '''user_xattr''' aux options de montage.
+
Modifier la ligne de fstab pour le répertoire que vous comptez exporter pour ajouter les options '''acl''' et '''user_xattr''' aux options de montage.
-
Créer un répertoire d'export sur le serveur.
+
Créer un répertoire d'export sur le serveur.
  mkdir /export
  mkdir /export
  chmod a+rwxt /export
  chmod a+rwxt /export
-
Les étapes suivantes doivent être faite à chaque démarage, elle doivent être faitre par des scripts. Ces scripts sont disponibles pour de nombreuses distributions récentes telles que '''Fedora''' ou '''Debian'''.
+
Les étapes suivantes doivent être faite à chaque démarage, elle doivent être faite par des scripts. Ces scripts sont disponibles pour de nombreuses distributions récentes telles que '''Fedora''' ou '''Debian'''.
Sur le serveur lancer dans l'ordre :
Sur le serveur lancer dans l'ordre :
Line 35: Line 36:
=Utilisation de NFSv4=
=Utilisation de NFSv4=
-
Si vous utilisez une distribution récente, la totalité des opérations précédantes ont déjà été réalisées pour vous. Assurez vous que le service '''NFS''' est démaré. Regardez éventuellement la partie sur la configuration Kerberos si vous devez l'utiliser. Sinon, vous pouvez commencer par ici.
+
Si vous utilisez une distribution récente, la totalité des opérations précédantes ont déjà été réalisées pour vous. Assurez vous que le service '''NFS''' est démaré. Regardez éventuellement la partie sur la configuration Kerberos si vous devez l'utiliser. Sinon, vous pouvez commencer par ici.
-
==Exporter les répertoires ==
+
==Exporter les répertoires ==
-
Sur le serveur, exportez votre répertoire exportation (/export, par exemple). Dans cet exemple, l'exportation se fait à tous, en utilisant chaque type d'authentification.
+
Sur le serveur, exportez votre répertoire exportation (/export, par exemple). Dans cet exemple, l'exportation se fait à tous, en utilisant chaque type d'authentification.
-
  exportfs -orw,fsid=0,rw,insecure,no_subtree_check *:/export
+
  /export  *(rw,fsid=0,insecure,no_subtree_check)
-
  exportfs -orw,fsid=0,rw,insecure,no_subtree_check gss/krb5:/export
+
/export  gss/krb5(rw,fsid=0,insecure,no_subtree_check)
-
  exportfs -orw,fsid=0,rw,insecure,no_subtree_check gss/krb5i:/export
+
/export  gss/krb5i(rw,fsid=0,insecure,no_subtree_check)
-
  exportfs -orw,fsid=0,rw,insecure,no_subtree_check gss/krb5p:/export
+
/export  gss/krb5p(rw,fsid=0,insecure,no_subtree_check)exportfs -orw,fsid=0,rw,insecure,no_subtree_check *:/export
-
(Vous pouvez probablement faire un mettre 4 lignes dans votre /etc/exports qui correspondent à ces export)
+
(Les lignes précédentes sont à ajouter à /etc/exports)
-
Pour accéder à ces fichiers depuis le client :
+
Et alors exécuter
-
Créer un point demontage, par exemple :  
+
exportfs -r
 +
 
 +
Pour accéder à ces fichiers depuis le client :
 +
 
 +
Créer un point demontage, par exemple :  
  mkdir /mnt/nfs4/
  mkdir /mnt/nfs4/
Et montez le serveur :   
Et montez le serveur :   
Line 58: Line 63:
(Faites attention au / et non /export )
(Faites attention au / et non /export )
-
Et maintenant amusez vous bien avec ce système de fichiers ;)
+
Et maintenant amusez vous bien avec ce système de fichiers ;)
==Notes==
==Notes==
-
Exporter et monter les répertoires peut être auomatisé en utilisant les fichiers /etc/fstab (client) et /etc/exports (serveur). Voir les pages '''man 5 fstab''' et '''man 5 exports'''. Attention, les comportements de exports pour NFS en version 3 et 4 sont assez différents. Voici quelques explications sur ces différences :
+
Exporter et monter les répertoires peut être auomatisé en utilisant les fichiers /etc/fstab (client) et /etc/exports (serveur). Voir les pages '''man 5 fstab''' et '''man 5 exports'''. Attention, les comportements de exports pour NFS en version 3 et 4 sont assez différents. Voici quelques explications sur ces différences :
-
NFSv4 n'a plus de protocole ''mount'' séparé. A la place de faire différents exports, le client NFSv4 voit l'ensemble des répertoires exportés par le serveur dnas le même système de fichier, appellé ''pseudofilesystem''.
+
NFSv4 n'a plus de protocole ''mount'' séparé. A la place de faire différents exports, le client NFSv4 voit l'ensemble des répertoires exportés par le serveur dnas le même système de fichier, appellé ''pseudofilesystem''.
-
Sur l'implémentation actuelle de linux, toute exportation se fait par une racine virtuelle identifié lors de l'exportation par l'option fsid=0. Dans nos exemple, cette racine virtuelle s'appelle '''/export'''. Tout répertoire ou fichier exporté supplémentaire doit appartenir à l'arborescence de cette racine, c'est à dire de la forme
+
Sur l'implémentation actuelle de linux, toute exportation se fait par une racine virtuelle identifié lors de l'exportation par l'option fsid=0. Dans nos exemple, cette racine virtuelle s'appelle '''/export'''. Tout répertoire ou fichier exporté supplémentaire doit appartenir à l'arborescence de cette racine, c'est à dire de la forme
  /racine/virtuelle/chemin/vers/mon/fichier
  /racine/virtuelle/chemin/vers/mon/fichier
Dans notre exemple:
Dans notre exemple:
  /export/sous/repertoire/fichier
  /export/sous/repertoire/fichier
-
Lorsque on veut exporter un répertoire qui n'appartient pas à l'arborescence de la racine virtuelle, on peut utiliser ''mount --bind '' pour faire apparaître notre répertoire dans l'arborescence de la racine virtuelle.
+
Lorsque on veut exporter un répertoire qui n'appartient pas à l'arborescence de la racine virtuelle, on peut utiliser ''mount --bind '' pour faire apparaître notre répertoire dans l'arborescence de la racine virtuelle.
-
Par exemple, si on défini notre racine virtuelle NFSv4 comme '''/export''', et que l'on veut exporter par NFSv4 '''/usr/local/bin''' et '''/usr/local/etc''', on procède de la manière suivante :
+
Par exemple, si on défini notre racine virtuelle NFSv4 comme '''/export''', et que l'on veut exporter par NFSv4 '''/usr/local/bin''' et '''/usr/local/etc''', on procède de la manière suivante :
  mkdir /exports
  mkdir /exports
Line 84: Line 89:
  exportfs -orw,nohide,insecure,no_subtree_check *:/exports/etc
  exportfs -orw,nohide,insecure,no_subtree_check *:/exports/etc
-
Notez également que les paths retournés par le programme '''showmount''' n'ont de sens que pour les clients utilisant nfs 2 et 3. Dans les exemples ci-dessus, '''showmount'''  listera les répertoires '''/export''','''/export/bin/''', et '''/exports/etc''', mais les clients NFSv4 devront monter:
+
Notez également que les paths retournés par le programme '''showmount''' n'ont de sens que pour les clients utilisant nfs 2 et 3. Dans les exemples ci-dessus, '''showmount'''  listera les répertoires '''/export''','''/export/bin/''', et '''/exports/etc''', mais les clients NFSv4 devront monter:
  mount serveur:/
  mount serveur:/
  mount serveur:/bin
  mount serveur:/bin
  mount serveur:/etc
  mount serveur:/etc
-
Pour monter un système de fichier utilisant '''krb5''', utilisez l'option mount '''-osec=krb5'''. Pour exporter un système de fichier utilisant '''krb5''', il faut l'exporter vers un client spécial nomé '''gss/krb5'''. Remplacez '''krb5''' par '''krb5i''' ou '''krb5p''' pour utiliser les fonctions kerberos associées (integrity et privacy)
+
Pour monter un système de fichier utilisant '''krb5''', utilisez l'option mount '''-osec=krb5'''. Pour exporter un système de fichier utilisant '''krb5''', il faut l'exporter vers un client spécial nomé '''gss/krb5'''. Remplacez '''krb5''' par '''krb5i''' ou '''krb5p''' pour utiliser les fonctions kerberos associées (integrity et privacy)
L'option -osec= devrait marcher pour NFSv3.
L'option -osec= devrait marcher pour NFSv3.
=Configuration de Kerberos 5 pour NFSv4=
=Configuration de Kerberos 5 pour NFSv4=
-
Ceci n'est nécessaire que si vous voulez utiliser Kerberos 5 (krb5) avec NFSv4. (Ce qui est une bonne idée.)
+
Ceci n'est nécessaire que si vous voulez utiliser Kerberos 5 (krb5) avec NFSv4. (Ce qui est une bonne idée.)
-
*On suppose que vous avez KDC Kerberos installé quelque part et que vous avez configuré kerberos sur le client et le serveur.
+
*On suppose que vous avez KDC Kerberos installé quelque part et que vous avez configuré kerberos sur le client et le serveur.
-
*Il faut créer un ''credentiel'' pour  le client. Celà veut dire que vous créez un nom Kerberos 5 ''principal/instance'' de la forme ''nfs/machine@ROYAUME'' et qu'ensuite vous ajoutez une clef pour ce nom ''principal'' aux clef existantes dans ''/etc/krb5.keytab'', ou que vous créez un fichier ''/etc/krb5.keytab''.
+
*Il faut créer un ''credentiel'' pour  le client. Celà veut dire que vous créez un nom Kerberos 5 ''principal/instance'' de la forme ''nfs/machine@ROYAUME'' et qu'ensuite vous ajoutez une clef pour ce nom ''principal'' aux clef existantes dans ''/etc/krb5.keytab'', ou que vous créez un fichier ''/etc/krb5.keytab''.
-
Note: seule l'encryption de type  des-cbc-crc est fonctionnelle dans le noyau, donc ne sélectionnez que ce type de cryptographie
+
Note: seule l'encryption de type  des-cbc-crc est fonctionnelle dans le noyau, donc ne sélectionnez que ce type de cryptographie
  kadmin: addprinc -randkey nfs/myclient.mydomain
  kadmin: addprinc -randkey nfs/myclient.mydomain
Line 105: Line 110:
*Maintenant copiez /tmp/keytab dans /etc/krb5.keytab dans le client
*Maintenant copiez /tmp/keytab dans /etc/krb5.keytab dans le client
-
*Répétez l'opération pour le serveur.
+
*Répétez l'opération pour le serveur.
====Notes sur Kerberos====
====Notes sur Kerberos====
-
#les heures de vos machines doivent être correctes, et indiquer la même heure. Utiliser ntp pour être sûr que c'est le cas.
+
#les heures de vos machines doivent être correctes, et indiquer la même heure. Utiliser ntp pour être sûr que c'est le cas.
-
#Le fichier '''/etc/hosts''' doit lister tous domaines '''complets''' avec tous les attributs, c'est à dire que le fichier doit avoir une IP, puis le nommachine.nom.de.domaine.fr. Le nom de la machine ne doit pas apparaître dans la ligne ''localhost''
+
#Le fichier '''/etc/hosts''' doit lister tous domaines '''complets''' avec tous les attributs, c'est à dire que le fichier doit contenir une ligne avec une IP, puis le nommachine.nom.de.domaine.fr. Le nom de la machine ne doit pas apparaître dans la ligne ''localhost''
-
#Ne pas mélanger les minuscules avec les majuscules dans les noms de machine (DNS) dans le KDC. ''mamachine@domaine.org'' est correct, mais ''MaMachine@domaine.org'' provoquera une erreur.
+
#Ne pas mélanger les minuscules avec les majuscules dans les noms de machine (DNS) dans le KDC. ''mamachine@domaine.org'' est correct, mais ''MaMachine@domaine.org'' provoquera une erreur.
 +
#Le service "nfs" doit être resolvable par votre machine. Si n'avez pas de mécanisme de résolution LDAP ou NIS déclaré dans '''/etc/nsswitch.conf''', le plus simple est de rajouter les lignes suivantes dans votre fichier '''/etc/services''' : <pre><nowiki>nfsd            2049/tcp        nfs            # NFS server daemon (clts)
 +
nfsd            2049/udp        nfs            # NFS server daemon (cots)</nowiki></pre>
 +
#Certaines distributions fournissent des modules pour supporter kerberos dans le noyau. Par exemple, sous debian etch + kernel 2.6.14, installez le module "rpcsec_gss_krb5".

Latest revision as of 17:22, 4 January 2009

chirollicoac D'après la documentation du CITI.

Contents

Guide de configuration

Configuration de NFSv4

On supposera que vous utilisez un noyau suffisament moderne (2.6.7 ou plus récent), ainsi que les utilitaires NFS qui sont adaptés. Si ce n'est pas le cas, veuillez mettre à jour votre configuration. Ces étapes ne sont à faire qu'une fois. Elle sont faites par les distributions récentes incluant NFSv4. Si votre distribution fournie déjà NFSv4, vous pouvez ignorer cette section.

Ajouter les lignes suivantes à /etc/fstab pour monter les rpc_pipefs et nfsd automatiquement

rpc_pipefs	/var/lib/nfs/rpc_pipefs	rpc_pipefs	defaults	0	0
nfsd	/proc/fs/nfsd	nfsd	defaults	0	0

Créer un point de montage pour rpc_pipefs:

mkdir /var/lib/nfs/rpc_pipefs

Modifier la ligne de fstab pour le répertoire que vous comptez exporter pour ajouter les options acl et user_xattr aux options de montage. Créer un répertoire d'export sur le serveur.

mkdir /export
chmod a+rwxt /export

Les étapes suivantes doivent être faite à chaque démarage, elle doivent être faite par des scripts. Ces scripts sont disponibles pour de nombreuses distributions récentes telles que Fedora ou Debian.

Sur le serveur lancer dans l'ordre :

rpc.mountd
rpc.idmapd
rpc.svcgssd
rpc.nfsd 8

Sur le client, lancer dans l'ordre :

rpc.gssd -m
rpc.idmapd

Utilisation de NFSv4

Si vous utilisez une distribution récente, la totalité des opérations précédantes ont déjà été réalisées pour vous. Assurez vous que le service NFS est démaré. Regardez éventuellement la partie sur la configuration Kerberos si vous devez l'utiliser. Sinon, vous pouvez commencer par ici.

Exporter les répertoires

Sur le serveur, exportez votre répertoire exportation (/export, par exemple). Dans cet exemple, l'exportation se fait à tous, en utilisant chaque type d'authentification.

/export  *(rw,fsid=0,insecure,no_subtree_check)
/export  gss/krb5(rw,fsid=0,insecure,no_subtree_check)
/export  gss/krb5i(rw,fsid=0,insecure,no_subtree_check)
/export  gss/krb5p(rw,fsid=0,insecure,no_subtree_check)exportfs -orw,fsid=0,rw,insecure,no_subtree_check *:/export

(Les lignes précédentes sont à ajouter à /etc/exports)

Et alors exécuter

exportfs -r

Pour accéder à ces fichiers depuis le client :

Créer un point demontage, par exemple :

mkdir /mnt/nfs4/

Et montez le serveur :

mount -tnfs4 yourserver:/ /mnt/nfs4/

.. ou montez le avec l'authentification kerberos :

mount -tnfs4 -osec=krb5 yourserver:/ /mnt/nfs4/

(Faites attention au / et non /export ) Et maintenant amusez vous bien avec ce système de fichiers ;)

Notes

Exporter et monter les répertoires peut être auomatisé en utilisant les fichiers /etc/fstab (client) et /etc/exports (serveur). Voir les pages man 5 fstab et man 5 exports. Attention, les comportements de exports pour NFS en version 3 et 4 sont assez différents. Voici quelques explications sur ces différences :

NFSv4 n'a plus de protocole mount séparé. A la place de faire différents exports, le client NFSv4 voit l'ensemble des répertoires exportés par le serveur dnas le même système de fichier, appellé pseudofilesystem.

Sur l'implémentation actuelle de linux, toute exportation se fait par une racine virtuelle identifié lors de l'exportation par l'option fsid=0. Dans nos exemple, cette racine virtuelle s'appelle /export. Tout répertoire ou fichier exporté supplémentaire doit appartenir à l'arborescence de cette racine, c'est à dire de la forme

/racine/virtuelle/chemin/vers/mon/fichier

Dans notre exemple:

/export/sous/repertoire/fichier

Lorsque on veut exporter un répertoire qui n'appartient pas à l'arborescence de la racine virtuelle, on peut utiliser mount --bind pour faire apparaître notre répertoire dans l'arborescence de la racine virtuelle.

Par exemple, si on défini notre racine virtuelle NFSv4 comme /export, et que l'on veut exporter par NFSv4 /usr/local/bin et /usr/local/etc, on procède de la manière suivante :

mkdir /exports
mkdir /exports/bin
mkdir /exports/etc
mount --bind /usr/local/bin /exports/bin
mount --bind /usr/local/etc /exports/etc
exportfs -ofsid=0,insecure,no_subtree_check *:/export
exportfs -orw,nohide,insecure,no_subtree_check *:/exports/bin
exportfs -orw,nohide,insecure,no_subtree_check *:/exports/etc

Notez également que les paths retournés par le programme showmount n'ont de sens que pour les clients utilisant nfs 2 et 3. Dans les exemples ci-dessus, showmount listera les répertoires /export,/export/bin/, et /exports/etc, mais les clients NFSv4 devront monter:

mount serveur:/
mount serveur:/bin
mount serveur:/etc

Pour monter un système de fichier utilisant krb5, utilisez l'option mount -osec=krb5. Pour exporter un système de fichier utilisant krb5, il faut l'exporter vers un client spécial nomé gss/krb5. Remplacez krb5 par krb5i ou krb5p pour utiliser les fonctions kerberos associées (integrity et privacy) L'option -osec= devrait marcher pour NFSv3.

Configuration de Kerberos 5 pour NFSv4

Ceci n'est nécessaire que si vous voulez utiliser Kerberos 5 (krb5) avec NFSv4. (Ce qui est une bonne idée.)

  • On suppose que vous avez KDC Kerberos installé quelque part et que vous avez configuré kerberos sur le client et le serveur.
  • Il faut créer un credentiel pour le client. Celà veut dire que vous créez un nom Kerberos 5 principal/instance de la forme nfs/machine@ROYAUME et qu'ensuite vous ajoutez une clef pour ce nom principal aux clef existantes dans /etc/krb5.keytab, ou que vous créez un fichier /etc/krb5.keytab.

Note: seule l'encryption de type des-cbc-crc est fonctionnelle dans le noyau, donc ne sélectionnez que ce type de cryptographie

kadmin: addprinc -randkey nfs/myclient.mydomain
kadmin: ktadd -e des-cbc-crc:normal -k /tmp/keytab nfs/myclient.mydomain
  • Maintenant copiez /tmp/keytab dans /etc/krb5.keytab dans le client
  • Répétez l'opération pour le serveur.

Notes sur Kerberos

  1. les heures de vos machines doivent être correctes, et indiquer la même heure. Utiliser ntp pour être sûr que c'est le cas.
  2. Le fichier /etc/hosts doit lister tous domaines complets avec tous les attributs, c'est à dire que le fichier doit contenir une ligne avec une IP, puis le nommachine.nom.de.domaine.fr. Le nom de la machine ne doit pas apparaître dans la ligne localhost
  3. Ne pas mélanger les minuscules avec les majuscules dans les noms de machine (DNS) dans le KDC. mamachine@domaine.org est correct, mais MaMachine@domaine.org provoquera une erreur.
  4. Le service "nfs" doit être resolvable par votre machine. Si n'avez pas de mécanisme de résolution LDAP ou NIS déclaré dans /etc/nsswitch.conf, le plus simple est de rajouter les lignes suivantes dans votre fichier /etc/services :
    nfsd            2049/tcp        nfs             # NFS server daemon (clts)
    
nfsd 2049/udp nfs # NFS server daemon (cots)
  1. Certaines distributions fournissent des modules pour supporter kerberos dans le noyau. Par exemple, sous debian etch + kernel 2.6.14, installez le module "rpcsec_gss_krb5".
Personal tools