
                                Linux NFS HOWTO

Nicolai Langfeldt janl@linpro.no

   v1.0, 1er octobre 1999
     _________________________________________________________________

   _(30 novembre 1999. Adaptation franaise par Christophe Deleuze,
   Christophe.Deleuze@lip6.fr). HOWTO dcrivant l'installation de
   serveurs et clients NFS._
     _________________________________________________________________

1. Prambule

1.1 Blabla lgal

   (C)opyright 1997-1999 Nicolai Langfeldt et Ron Peters. Si vous
   modifiez ce document signalez le dans le copyright, sa distribution
   est libre  condition de conserver ce paragraphe. La section FAQ est
   base sur la FAQ NFS compile par Alan Cox. La section _Checklist_ est
   base sur une _checklist_ des problmes de mount compile par IBM
   Corporation. La section ``NFS serveur sur disquette'' a t crite par
   Ron Peters.

   (C)opyright 1997-1999 Christophe Deleuze pour la version franaise. Si
   vous lisez ce document sous le pont de l'Alma, veillez  respecter les
   limitations de vitesse.

1.2 Dngation

   Ni Nicolai Langfeldt, ni Ron Peters ni leurs employeurs, ni qui que ce
   soit, n'assume de responsabilit pour les consquences que les
   instructions de ce document peuvent avoir. Si vous choisissez de
   suivre ces instructions, bonne chance !

1.3 Retour

   Ce document ne sera jamais termin, merci de m'envoyer par mail vos
   problmes et russites, cela pourra amliorer ce HOWTO. Envoyez
   argent, commentaires et questions  janl@math.uio.no, ou
   rpeters@hevanet.com pour ce qui concerne les serveurs NFS sur
   disquette. Si vous m'envoyez un mail, par piti, _vrifiez_ que
   l'adresse de retour soit correcte et fonctionne. Vous ne vous imaginez
   pas combien de mes rponses sont revenues  cause d'une adresse
   incorrecte.

1.4 Autre blabla

   Si vous voulez traduire ce HOWTO merci de me le signaler, que je
   puisse savoir en quels langages j'ai t publi :-). [Ndt : c'est
   fait...]

   Remerciements  Olaf Kirch pour m'avoir convaincu d'crire ceci, puis
   fourni de bonnes suggestions.

   Les commentaires sur la traduction sont  envoyer  Christophe
   Deleuze, Christophe.Deleuze@lip6.fr.

2. LISEZMOI.d_abord

   NFS, le systme de fichiers par rseau, a trois caractristiques
   importantes :

     * il permet le partage de fichiers sur un rseau ;
     * il marche suffisamment bien ;
     * il cre tout un tas de problmes de scurit bien connus des
       crackers qui peuvent facilement les exploiter pour obtenir l'accs
       (lecture, criture et effacement)  tous vos fichiers.

   Je parlerai de ces deux aspects dans ce HOWTO. Lisez bien la section
   scurit et vous supprimerez quelques risques stupides. Ne dites pas
   que je ne vous ai pas prvenus. Les passages sur la scurit sont
   parfois assez techniques et demandent quelques connaissances en rseau
   IP. Si vous ne connaissez pas les termes utiliss vous pouvez soit
   consulter le HOWTO rseau, improviser ou vous procurer un livre sur
   l'administration de rseau TCP/IP pour vous familiariser avec TCP/IP.
   C'est une bonne ide de toutes faons si vous administrez des machines
   UNIX/Linux. Un trs bon livre sur le sujet est _TCP/IP Network
   Administration_ par Craig Hunt, publi par O'Reilly & Associates, Inc.
   Et quand vous l'aurez lu et compris, vous vaudrez plus cher sur le
   march du travail, vous ne pouvez qu'y gagner :-)

   Il y a deux sections pour vous aider  rgler vos problmes NFS, la
   _Mount Checklist_ et les _FAQs_. Jetez-y un oeil si quelque chose ne
   marche pas comme prvu.

   Si vous voulez/avez besoin de le rcuprer et compiler vous mme, le
   site de rfrence pour le nfsd Linux 2.0 est
   ftp.mathematik.th-darmstadt.de:/pub/linux/okir.

    propos de NFS sous Linux 2.2 voir la section sur Linux 2.2.

3. Installer un serveur NFS

3.1 Conditions pralables

   Avant de continuer  lire ce HOWTO, vous aurez besoin de pouvoir faire
   des telnet dans les deux sens entre les machines que vous utiliserez
   comme serveur et client. Si cela ne fonctionne pas, voyez le HOWTO
   rseau (NET-3) et configurez correctement le rseau.

3.2 Premiers pas

   Avant de faire quoi que ce soit d'autre, il nous faut un serveur NFS
   install. Si vous faites partie d'un dpartement rseau d'une
   universit ou autre, il y a probablement un grand nombre de serveurs
   NFS qui tournent dj. Si votre but est d'utiliser un serveur dj
   install alors vous pouvez sauter  la section sur l'installation d'un
   client NFS.

   Si vous devez installer un serveur sur une machine non Linux vous
   devrez lire les pages de manuel du systme pour trouver comment
   configurer le serveur NFS et l'exportation des systmes de fichiers
   par NFS. Ce HOWTO contient une section dcrivant les manipulations
   ncessaires sur divers systmes. Ceci fait, vous pourrez passer  la
   section suivante. Ou continuer  lire cette section vu que certaines
   des choses que je vais dire sont pertinentes quel que soit le type de
   machine que vous utilisez comme serveur.

   Si vous utilisez Linux 2.2, voyez la section sur Linux 2.2 avant de
   passer  la suite.

   Nous allons maintenant configurer tout un tas de programmes.

3.3 Le portmapper

   Le portmapper de Linux est appel soit portmap soit rpc.portmap. La
   page de manuel sur mon systme dit que c'est un convertisseur de port
   DARPA vers numro de programme RPC. C'est l que se trouve la premire
   faille de scurit. La gestion de ce problme est dcrite  la section
   sur la scurit, que, encore une fois, je vous invite trs fortement 
   lire.

   Lancez le portmapper. Il devrait tre dans le rpertoire /usr/sbin
   (sur quelques machines il est appel rpcbind). Vous pouvez le lancer 
   la main pour cette fois mais il devra tre lanc  chaque dmarrage de
   la machine, il faudra donc crer ou diter les scripts rc. Les scripts
   rc sont dcrits dans la page de manuel init, ils sont gnralement
   dans /etc/rc.d, /etc/init.d ou /etc/rc.d/init.d. S'il y a un script
   qui a un nom du genre inet, c'est probablement le script  diter.
   Mais ce qu'il faut crire ou faire sort du cadre de ce HOWTO. Lancez
   portmap, et vrifiez qu'il tourne avec ps -aux, puis rpcinfo -p. Il y
   est ? Benissimo.

   Encore une chose. L'accs distant  votre portmapper est contrl par
   le contenu de vos fichiers /etc/hosts.allow et /etc/hosts.deny. Si
   rcpinfo -p choue alors que le portmapper tourne, vrifiez ces
   fichiers. Voyez la section sur la scurit pour les dtails concernant
   ces fichiers.

3.4 Mountd et nfsd

   Les prochains programmes  lancer sont mountd et nfsd. Mais d'abord il
   faut diter un autre fichier, /etc/exports. Disons que je veux que le
   systme de fichiers /mn/eris/local qui est sur la machine eris soit
   disponible sur la machine apollon. Je l'indique dans /etc/exports sur
   eris :
     _________________________________________________________________

/mn/eris/local  apollon(rw)
     _________________________________________________________________

   La ligne ci-dessus donne  apollon un accs en lecture/criture sur
   /mn/eris/local. Au lieu de rw on pourrait mettre ro pour _read only_
   (lecture seule, c'est la valeur par dfaut). D'autres options
   existent, et je parlerai de quelques unes lies  la scurit plus
   loin. Elles sont toutes dcrites dans la page de manuel exports qu'il
   faut lire au moins une fois dans sa vie. Il y a de meilleures faons
   de faire que de lister tous les hosts dans le fichier exports. Peuvent
   tre autoriss  monter un systme de fichiers NFS, des groupes
   rseaux (_net groups_) si vous utilisez NIS (ou NYS, auparavant connu
   sous le nom YP), des noms de domaines avec jokers et des sous rseaux
   IP. Mais il faudra vrifier qui peut obtenir un accs au serveur avec
   ce type d'autorisations groupes.

   Note : ce fichier exports n'utilise pas la mme syntaxe que d'autres
   Unix. Ce HOWTO contient une section sur la faon dont les autres Unix
   exportent leurs fichiers.

   Maintenant nous sommes prts  lancer mountd (ou peut-tre
   s'appelle-t-il rpc.mountd), puis nfsd (qui s'appelle peut-tre
   rpc.nfsd). Ils liront tous deux le fichier exports.

   Si vous modifiez /etc/exports, vous devrez vous assurer que nfsd et
   mountd savent que le fichier a chang. La faon traditionnelle est de
   lancer exportfs. Beaucoup de distributions Linux n'ont pas le
   programme exportfs. Si c'est le cas sur votre machine, vous pouvez
   installer ce script :
     _________________________________________________________________

#!/bin/sh
killall -HUP /usr/sbin/rpc.mountd
killall -HUP /usr/sbin/rpc.nfsd
echo Volumes NFS rexports
     _________________________________________________________________

   Sauvez le dans /usr/sbin/exportfs par exemple, et n'oubliez pas de lui
   appliquer chmod a+rx. Dsormais, chaque fois que vous changez votre
   fichier exports, lancez ensuite exportfs en root.

   Maintenant, vrifiez que mountd et nfsd fonctionnent correctement.
   D'abord avec rpcinfo -p. Il devrait donner quelque chose du genre :
     _________________________________________________________________

   program vers proto   port
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    100005    1   udp    745  mountd
    100005    1   tcp    747  mountd
    100003    2   udp   2049  nfs
    100003    2   tcp   2049  nfs
     _________________________________________________________________

   On voit que le portmapper a annonc ses services, de mme que mountd
   et nfsd.

   Si vous obtenez : rpcinfo: can't contact portmapper: RPC: Remote
   system error - Connection refused, RPC_PROG_NOT_REGISTERED ou quelque
   chose du style c'est que le portmapper ne tourne pas. OU, vous avez
   quelques chose dans /etc/hosts.{allow,deny} qui interdit au portmapper
   de rpondre, voyez la section scurit  ce propos. Si vous obtenez No
   remote programs registered alors soit le portmapper ne veut pas vous
   parler, soit quelque chose ne marche pas. Tuez nfsd, mountd et le
   portmapper et essayez de recommencer.

   Aprs avoir vrifi que le portmapper rend compte des services vous
   pouvez vrifier aussi avec ps. Le portmapper continuera  afficher les
   services mme si les programmes qui les offrent ont crash. Il vaut
   donc mieux vrifier par ps si quelque chose ne marche pas.

   Bien sur, vous devrez modifier vos fichiers systmes rc pour lancer
   mountd et nfsd au dmarrage de la mme faon que le portmapper. Il y a
   de trs fortes chances que les scripts existent dj sur votre
   machine, vous aurez juste  dcommenter les bonnes lignes ou les
   activer pour les bons _runlevels_ (pardon niveaux d'excution) d'init.

   Quelques pages de manuel avec lesquelles vous devriez tre familier :
   portmap, mountd, nfsd et exports.

   Bon, si vous avez tout fait exactement comme j'ai dit vous tes prts
    enchaner sur le client NFS.

4. Installer un client NFS

   Tout d'abord il faudra compiler un noyau avec le systme de fichiers
   NFS, soit compil dans le noyau, soit disponible sous forme de module.
   Si vous n'avez encore jamais compil un noyau vous aurez peut tre
   besoin de consulter le HOWTO du noyau. Si vous utilisez une
   distribution trs cool (comme Chapeau Rouge) et que vous n'avez jamais
   trifouill le noyau (pas toucher toucher) il y a des chances que NFS
   soit automagiquement disponible.

   Vous pouvez maintenant,  l'invite (prompt) du root, entrer la
   commande mount approprie et le systme de fichiers apparatra.
   Continuons avec l'exemple de la section prcdente, nous voulons
   monter /mn/eris/local depuis eris. La commande est :
     _________________________________________________________________

mount -o rsize=1024, wsize=1024 eris:/mn/eris/local /mnt
     _________________________________________________________________

   Nous reviendrons plus tard sur les options rsize et wsize. Le systme
   de fichiers est maintenant disponible sous /mnt et vous pouvez faire
   un cd sur lui, puis un ls et regarder les fichiers individuellement.
   Vous remarquerez que ce n'est pas aussi rapide qu'avec un systme de
   fichiers local, mais beaucoup plus pratique que ftp. Si, au lieu de
   monter le systme de fichiers, mount renvoie un message d'erreur comme
   mount: eris:/mn/eris/local failed, reason given by server: Permission
   denied alors le fichier exports est incorrect, ou vous avez oubli de
   lancer exportfs aprs avoir modifi le fichier exports. S'il dit
   mount: clntudp_ipdate: RPC: Program not registered cela signifie que
   nfsd ou mountd ne tourne pas sur le serveur, ou que vous avez le
   problme avec les fichiers hosts.{allow,deny} mentionn plus haut.

   Pour vous dbarrasser du systme de fichiers, vous pouvez faire :
     _________________________________________________________________

umount /mnt
     _________________________________________________________________

   Pour que le systme monte automatiquement un systme de fichiers NFS
   au dmarrage, ditez /etc/fstab de la faon habituelle. Par exemple
   avec une ligne comme celle-ci :
     _________________________________________________________________

# device       mountpoint    fs-type    options           dumps  sfckorder
...
eris:/mn/eris/local   /mnt   nfs     rsize=1024,wsize=1024   0   0
...
     _________________________________________________________________

   C'est presque tout ce qu'il y a  savoir. Vous pouvez jeter un coup
   d'oeil  la page de manuel nfs. Continuons plize.

4.1 Options de montage

   Il y a trois comportements principaux des clients NFS en cas de chute
   du serveur qui sont spcifis par les options de montage :

   _soft_
          Le client NFS renverra une erreur au processus concern si
          aprs quelques essais le serveur NFS persiste  ne pas
          rpondre. Si vous voulez utiliser cette option, vous devez
          vrifier que votre logiciel la gre correctement. Je ne
          recommande pas ce rglage, c'est un bon moyen de perdre des
          donnes et corrompre des fichiers. En particulier, n'utilisez
          pas a pour les disques o sont stocks vos mails (si vous
          tenez  vos mails).

   _hard_
          Le client NFS ressaiera infiniment jusqu' ce qu'il soit tu.
          Les oprations reprendront normalement si le serveur NFS se
          rtablit ou redmarre. Le client ne pourra pas tre interrompu
          ou tu.

   _hard,intr_
          Comme hard, mais Ctrl-C tuera le processus bloqu. Dans
          quelques cas, notament un disque /usr/spool/mail mont par NFS
          cela ne changera rien car le shell ignore le Ctrl-C quand il
          teste si vous avez du mail. Je recommande cette option pour
          _tous_ les systmes de fichiers NFS, y compris le _spool_ du
          mail.

   Reprenons l'exemple prcdent, votre entre fstab est maintenant :
     _________________________________________________________________

# device       mountpoint   fs-type    options            dumps  sfckorder
...
eris:/mn/eris/local   /mnt  nfs   rsize=1024,wsize=1024,hard,intr 0   0
...
     _________________________________________________________________

4.2 Optimisation de NFS

   Normalement, si les options rsize et wsize ne sont pas prcises, NFS
   crira et lira par blocs de 4096 ou 8192 octets. Mais certaines
   combinaisons de noyau Linux et cartes rseau ne peuvent pas
   fonctionner avec ces valeurs, de plus, mme si cela marche, cela peut
   ne pas tre optimal du tout. Il nous faudra donc exprimenter et
   trouver les valeurs de rsize et wsize qui fonctionnent et donnent les
   transferts les plus rapides. Vous pouvez tester la vitesse obtenue
   avec diffrentes valeurs des options avec des commandes simples. La
   commande mount ci-dessus ayant t excute, si vous avez l'accs en
   criture sur le disque vous pouvez tester les performances en criture
   squentielle :
     _________________________________________________________________

time dd if=/dev/zero of=/mnt/testfile bs=16k count=4096
     _________________________________________________________________

   Ceci cre un fichier de 64 Mo ne contenant que des 0. Faites le
   quelques (5-10?) fois et prenez la moyenne des temps. C'est le temps
   `elapsed' ou `wall clock' qui est le plus intressant. Ensuite vous
   pouvez tester les performances en lecture en relisant le fichier :
     _________________________________________________________________

time dd if=/mnt/testfile of=/dev/null bs=16k
     _________________________________________________________________

   faites le quelques fois et prenez la moyenne. Puis dmontez (umount)
   et remontez (mount) avec des valeurs plus grandes pour rsize et wsize.
   Il vaut mieux prendre des multiples de 1024, et probablement pas plus
   grand que 16384 octets, car les gros blocs ralentissent les accs
   alatoires. Immdiatement aprs avoir remount avec une taille
   suprieure, placez vous (cd) dans le systme de fichiers et faites des
   trucs comme ls, explorez un peu pour vrifier que tout est bien
   normal. Si la valeur de rsize/wsize est trop grande, les symptmes
   sont _vraiment_ bizarres et pas vidents. Un symptme typique est une
   liste de fichiers donne par ls incomplte sans aucun message
   d'erreur. Ou la lecture de fichier qui choue mystrieusement et sans
   message d'erreur. Aprs vous tre assurs que les wsize/rsize choisis
   fonctionnent, vous pouvez faire les tests de rapidit. Diffrentes
   plateformes de serveur auront peut-tre des tailles optimales
   diffrentes. SunOS et Solaris sont rputs pour tre beaucoup plus
   rapides avec une taille de 4096 octets.

   Les noyaux Linux rcents (depuis 1.3) font parfois des lectures
   anticipes (_read ahead_) pour des rsizes suprieurs ou gaux  la
   taille de page de la machine. Sur les processeurs Untel la taille de
   la page est de 4096 octets. La lecture anticipe augmentera
   _sensiblement_ les performances en lecture. Sur une machine Untel on
   devrait donc choisir un rsize de 4096 si c'est possible.

   Un truc pour augmenter les performances d'criture de NFS est
   d'invalider les critures synchrones sur le serveur. Les
   spcifications de NFS disent que les requtes d'criture de NFS ne
   doivent pas tre considres comme termines avant que les donnes ne
   soient sur un mdium non versatile (normalement le disque). Ceci
   rduit les performances  l'criture, les critures asynchrones sont
   plus rapides. Le nfsd Linux ne fait pas d'critures synchrones car
   l'implmentation du systme de fichiers ne s'y prte pas, mais sur les
   serveurs non Linux vous pouvez augmenter les performances de cette
   faon dans votre fichier exports :
     _________________________________________________________________

/dir    -async, access=linuxbox
     _________________________________________________________________

   ou quelque chose du genre. Rfrez vous  la page de manuel exports de
   la machine concerne. Notez que ceci augmente les risques de perte de
   donnes.

5. NFS sur les lignes  faible dbit

   Les lignes lentes ( faible dbit) comprennent les modems, RNIS et
   aussi sans doute les autres connexions longue distance.

   Cette section est base sur la connaissance des protocoles utiliss
   mais pas sur des exprimentations. Faites moi savoir si vous essayez
   ceci ;-)

   La premire chose  retenir est que NFS est un protocole lent. Il a un
   grand _overhead_ (sur-cot en bande passante). Utiliser NFS, c'est
   presque comme utiliser kermit pour transfrer des fichiers. Il est
   _lent_. Presque tout est plus rapide que NFS. FTP est plus rapide. HTTP
   est plus rapide. rcp est plus rapide. ssh est plus rapide.

   Vous voulez toujours l'essayer ? Ok.

   Par dfaut NFS est paramtr pour des lignes rapides et  faible
   latence. Si vous utilisez les paramtres par dfaut sur des lignes 
   grande latence cela peut provoquer des erreurs, des annulations, des
   rtrcissements de fichiers, et des comportements bizarres.

   La premire chose  faire est de ne _pas_ utiliser l'option de montage
   soft. Les temporisations retourneront des erreurs au logiciel, qui,
   dans l'immense majorit des cas, ne saura pas quoi en faire. C'est une
   bonne faon d'avoir des problmes bizarres. Utilisez plutt l'option
   de montage hard. Quand hard est actif les temporisations dclenchent
   des essais infinis au lieu d'annuler ce que le logiciel tait en train
   de faire (quoi que ce soit). C'est ce que vous voulez. Vraiment.

   La deuxime chose  faire est d'ajuster les options de montage timeo
   et retrans. Elles sont dcrites dans la page de manuel nfs(5), en
   voici un extrait (version franaise) :
     _________________________________________________________________

       timeo=n        La valeur,  en  dixiemes  de  secondes,  du
                      delai   avant  de  declencher  la  premiere
                      retransmission d'une RPC.   La  valeur  par
                      defaut  est 7/10 de seconde. Apres une pre
                      miere expiration, le delai  est  double  et
                      l'on recommence les retransmissions jusqu'a
                      ce que le delai atteigne la valeur maximale
                      de 60 secondes, ou que le nombre maximal de
                      retransmission soit depasse.  Il se produit
                      alors  une  erreur  d'expiration majeure de
                      delai.  Si le systeme est monte  "en  dur",
                      les  retransmissions  reprendront a nouveau
                      indefiniment.

                      On peut ameliorer les performances en  aug
                      mentant  le delai sur un  reseau charge, si
                      le serveur est un  peu  lent,  ou  si  l'on
                      traverse plusieurs routeurs ou passerelles.

       retrans=n      Le  nombre  d'expirations  mineures  et  de
                      retransmissions  qui  doivent  se  produire
                      avant de declencher une expiration majeure.
                      La  valeur  par  defaut  est  3 expirations
                      mineures.  Quand  une  erreur  d'expiration
                      majeure  se  produit,  soit l'operation est
                      abandonnee, soit  un  message  "server  not
                      responding" est affiche sur la console.
     _________________________________________________________________

   En d'autres mots : si une rponse n'est pas reue avant la
   temporisation de 0,7 seconde (700 ms), le client NFS rptera la
   requte et doublera la temporisation  1,4 seconde. Si la rponse
   n'arrive pas dans les 1,4 seconde, la requte est rpte  nouveau et
   la temporisation est double  2,8 secondes.

   La vitesse de la ligne peut tre mesure avec un ping ayant vos
   valeurs de rsize/wsize comme taille de paquet.
     _________________________________________________________________

$ ping -s 8192 lugulbanda
PING lugulbanda.uio.no (129.240.222.99): 8192 data bytes
8200 bytes from 129.240.222.99: icmp_seq=0 ttl=64 time=15.2 ms
8200 bytes from 129.240.222.99: icmp_seq=1 ttl=64 time=15.9 ms
8200 bytes from 129.240.222.99: icmp_seq=2 ttl=64 time=14.9 ms
8200 bytes from 129.240.222.99: icmp_seq=3 ttl=64 time=14.9 ms
8200 bytes from 129.240.222.99: icmp_seq=4 ttl=64 time=15.0 ms

--- lugulbanda.uio.no ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 14.9/15.1/15.9 ms
     _________________________________________________________________

   Le temps indiqu est celui que le paquet du ping a pris pour aller et
   revenir de lugulbanda. 15 ms, c'est assez rapide. Sur une ligne  28
   800 bps vous pouvez vous attendre  une valeur de l'ordre de 4000-5000
   ms, et si la ligne est charge ce temps sera encore plus lev,
   facilement le double. En gnral, la latence augmente avec la taille
   des paquets et la charge de la ligne. Si vous comptez utiliser FTP et
   NFS en mme temps il faudra mesurer les temps du ping pendant un
   transfert FTP et augmenter timeo en accord avec la latence de votre
   ligne.

6. NFS et la scurit

   Je ne suis en aucun cas un expert en scurit informatique. Mais j'ai
   tran dans le secteur et j'ai un _petit_ conseil pour ceux qui se
   proccupent de la scurit. Mais attention. Ce n'est pas absolument
   pas une liste complte des problmes lis  NFS et si vous pensez tre
   en scurit une fois que vous avez lu et mis en pratique tout ceci
   alors j'ai un pilier de pont (presque neuf)  vous vendre.

   Cette section n'a probablement pas d'intrt si vous tes sur un
   rseau _ferm_ o vous avez confiance en tous les utilisateurs, et que
   personne en qui vous n'avez pas confiance ne peut obtenir un accs sur
   les machines du rseau. I.e., il ne devrait y avoir aucun moyen de se
   connecter  votre rseau depuis l'extrieur et il ne devrait tre
   reli  aucun autre rseau o vous n'avez pas confiance en tous les
   utilisateurs et en sa scurit. Vous pensez que je suis parano ? Pas
   du tout. C'est un conseil de scurit _de base_. Et rappelez-vous que
   c'est juste le commencement. Un site _sr_ ncessite un administrateur
   consciencieux et bien inform qui sait o trouver l'information sur
   les problmes de scurit existants ou potentiels.

   Un problme de base de NFS est que le client, si on ne lui demande pas
   le contraire, fera confiance au serveur NFS et vice versa. a peut
   tre mauvais. Cela signifie que si le compte root du serveur est cass
   (_broken into_) il peut tre trs facile de casser le compte root du
   client. Et vice versa. Il y a quelques moyens de grer ce problme sur
   lesquels nous reviendrons.

   Les documents consultatifs (_advisories_) du CERT sur NFS sont une
   bonne source d'information, la plupart des problmes (et des
   solutions) voques ci-dessous sont traits dans ces documents. Voyez
   ftp.cert.org:/01-README pour une liste  jour. En voici quelques-uns
   lis  NFS (il n'y a pas  ma connaissance de version franaise) :
     _________________________________________________________________

CA-91:21.SunOS.NFS.Jumbo.and.fsirand                            12/06/91
     Vulnerabilities concerning Sun Microsystems, Inc. (Sun) Network
     File System (NFS) and the fsirand program.  These vulnerabilities
     affect SunOS versions 4.1.1, 4.1, and 4.0.3 on all architectures.
     Patches are available for SunOS 4.1.1.  An initial patch for SunOS
     4.1 NFS is also available. Sun will be providing complete patches
     for SunOS 4.1 and SunOS 4.0.3 at a later date.

CA-94:15.NFS.Vulnerabilities                                    12/19/94
     This advisory describes security measures to guard against several
     vulnerabilities in the Network File System (NFS). The advisory was
     prompted by an increase in root compromises by intruders using tools
     to exploit the vulnerabilities.

CA-96.08.pcnfsd                                                 04/18/96
     This advisory describes a vulnerability in the pcnfsd program (also
     known as rpc.pcnfsd). A patch is included.
     _________________________________________________________________

6.1 Scurit du client

   Du ct client il y a quelques options de mount qui permettent de ne
   pas faire trop confiance au serveur. L'option nosuid interdit le
   dmarrage de programmes suid depuis le systme de fichiers NFS. C'est
   une option  utiliser systmatiquement, car elle empche le root du
   serveur de crer un fichier suid sur le systme de fichiers NFS, puis
   de se loger dans le client en utilisateur et de lancer le programme
   suid pour devenir root sur le client. Il est aussi possible
   d'interdire l'excution des fichiers du systme de fichiers NFS avec
   l'option noexec. Mais ceci est beaucoup moins utile que nosuid car le
   systme de fichiers contiendra trs probablement au moins _quelques_
   scripts ou programmes  excuter. Ces options se rentrent dans la
   colonne d'options, avec wsize et rsize, spares par des virgules.

6.2 Scurit du serveur : nfsd

   Du ct serveur on peut ne pas faire confiance au root du client, avec
   l'option root_squash (rembarrage du root :-) dans le fichier exports :
     _________________________________________________________________

/mn/eris/local apollon(rw, root_squash)
     _________________________________________________________________

   Dans ce cas, si un utilisateur du client avec l'UID 0 essaye d'accder
   (en lecture, criture ou effacement) au systme de fichiers, le
   serveur remplace l'UID par celui de l'utilisateur `nobody' du serveur.
   Ceci signifie que l'utilisateur root du client ne peut
   accder/modifier les fichiers du serveur que seul le root du serveur
   peut accder/modifier. C'est bien, et vous aurez probablement 
   utiliser cette option sur tous les systmes de fichiers que vous
   exportez. J'en entends un qui me dit : ``Mais l'utilisateur root du
   client peut toujours utiliser 'su' pour devenir n'importe qui et
   accder  ses fichiers !'' Et l je rponds : ``Oui, c'est comme a,
   c'est Unix''. Ceci a une consquence importante : tous les fichiers et
   binaires importants devraient appartenir  root, et pas bin ou un
   compte autre que root, car le seul compte auquel le root du client ne
   peut pas accder est le compte root du serveur. Plusieurs autres
   options permettant de ne pas faire confiance  qui ne vous plait pas
   sont numres dans la page de manuel nfsd. Il y a aussi des options
   pour rembarrer (_to squash_) des intervalles d'UID ou GID.

   Il est important aussi de s'assurer que nfsd vrifie que toutes les
   requtes viennent d'un port privilgi. S'il accepte les requtes de
   n'importe quel port du client, un utilisateur quelconque peut excuter
   un programme qu'il est facile de se procurer sur l'Internet. Il parle
   le protocole NFS et pourra prtendre tre n'importe qui et tre cru.
   a fait peur hein ? Le nfsd Linux effectue cette vrification par
   dfaut, sur d'autres systmes d'exploitation il faut la valider. a
   devrait tre dcrit dans les pages du manuel de ce systme.

   Autre chose. N'exportez jamais un systme de fichiers vers `localhost'
   ou 127.0.0.1. Croyez-moi.

6.3 Scurit du serveur : le portmapper

   Le portmapper de base, en combinaison avec nfsd prsente un problme
   de conception qui rend possible de rcuprer les fichiers d'un serveur
   NFS sans avoir aucun privilge. Heureusement le portmapper utilis par
   la plupart des distributions Linux est relativement sr vis  vis de
   cette attaque, et peut tre scuris en configurant les listes d'accs
   au moyen de deux fichiers.

   Toutes les distributions de Linux ne sont pas gales. Certaines
   apparemment  jour n'incluent _pas_ un portmapper sur, mme
   aujourd'hui, alors que le problme est connu depuis plusieurs annes.
   Au moins une distribution contient mme la page de manuel pour un
   portmapper sr alors que le portmapper effectivement install n'est
   _pas_ sr. Pour dterminer simplement si votre portmapper est le bon ou
   pas, lancez strings(1) et voyez s'il lit les fichiers appropris
   /etc/hosts.deny et /etc/hosts.allow. Si votre portmapper est
   /usr/sbin/portmap excutez la commande strings /usr/sbin/portmap |
   grep hosts. Sur ma machine cela donne :
     _________________________________________________________________

/etc/hosts.allow
/etc/hosts.deny
@(#) hosts_ctl.c 1.4 94/12/28 17:42:27
@(#) hosts_access.c 1.20 96/02/11 17:01:27
     _________________________________________________________________

   Tout d'abord, ditons /etc/hosts.deny. Il devrait contenir la ligne :
     _________________________________________________________________

portmap: ALL
     _________________________________________________________________

   qui refusera l'accs  _quiconque_. Maintenant qu'il est ferm, lancez
   rpcinfo -p pour vrifier qu'il lit et se conforme au contenu du
   fichier. rpcinfo ne devrait rien renvoyer, ou peut tre un message
   d'erreur. Il ne devrait _pas_ y avoir besoin de relancer le
   portmapper.

   Fermer le portmapper  tous le monde est peut tre un peu excessif,
   nous r-ouvrons donc quelque peu l'accs en ditant le fichier
   /etc/hosts.allow. Mais il faut d'abord savoir ce qu'on va y mettre. 
   la base, il devrait contenir les noms de toutes les machines qui
   doivent avoir accs  votre portmapper. Sur le systme Linux moyen il
   y a trs peu de machines qui ont une bonne raison de demander cet
   accs. Le portmapper administre nfsd, mountd, ypbind/ypserv, pcnfsd et
   les services ``en r'' comme ruptime et rusers. Parmis ceux-ci, seuls
   nfsd, mountd, ypbind/ypserv et peut-tre pcnfsd ont de l'importance.
   Toutes les machines qui ont besoin d'accder  ces services sur votre
   machine devraient y tre autorises. Disons que votre machine est
   129.240.223.254 et que tout ce qui vit sur le sous rseau
   129.240.223.0 doit pouvoir y accder (si ceci n'est pas clair pour
   vous, voyez le HOWTO rseau). On crit :
     _________________________________________________________________

portmap: 129.240.223.0/255.255.255.0
     _________________________________________________________________

   dans hosts.allow. C'est l'adresse de rseau que vous donnez aussi  la
   commande route et le masque de rseau que vous donnez  ifconfig. Pour
   le prifrique eth0 sur cette machine ifconfig devrait donner :
     _________________________________________________________________

...
eth0      Link encap:10Mbps Ethernet  HWaddr 00:60:8C:96:D5:56
          inet addr:129.240.223.254  Bcast:129.240.223.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:360315 errors:0 dropped:0 overruns:0
          TX packets:179274 errors:0 dropped:0 overruns:0
          Interrupt:10 Base address:0x320
...
     _________________________________________________________________

   et netstat -rn devrait donner :
     _________________________________________________________________

Kernel routing table
Destination     Gateway         Genmask         Flags Metric Ref Use    Iface
...
129.240.223.0   0.0.0.0         255.255.255.0   U     0      0   174412 eth0
...
     _________________________________________________________________

   (Adresse rseau dans la premire colonne)

   Les fichiers hosts.deny et hosts.allow sont dcrits dans les pages de
   manuel de mmes noms.

   _IMPORTANT_ : ne _rien_ mettre d'autre que des adresses IP
   (numriques) dans les lignes portmap de ces fichiers. Les _host name
   lookup_ (recherche d'adresse IP (numrique)  partir de l'adresse
   alphanumrique ex. ftp.lip6.fr donne 132.227.77.2) peuvent
   indirectement dclencher une activit portmap qui dclenchera un _host
   name lookup_ qui dclenchera...

   Ceci fait, votre serveur devrait tre un peu plus solide. Le dernier
   problme (mais oui !) est que quelqu'un casse le compte root (ou boute
   MS-DOS) sur une machine de confiance et utilise ce privilge pour
   envoyer des requtes depuis un port sr en se faisant passer pour
   n'importe quel utilisateur.

6.4 NFS et les coupent-feu (firewalls)

   C'est une trs bonne ide de bloquer les ports NFS et portmap dans
   votre routeur ou firewall. nfsd utilise le port 2049, que ce soit avec
   tcp ou udp. Le portmapper est au port 749 (tcp et udp) et mountd aux
   port 745 et 747 (tcp et udp). Vrifiez les ports avec la commande
   rpcinfo -p.

   Si au contraire vous voulez que NFS traverse un firewall, il existe
   des options sur les nfsd et mountd rcents pour leur spcifier le port
    utiliser. Vous pouvez donc choisir un port qui ne soit pas bloqu
   par le firewall.

6.5 Rsum

   Si vous configurez correctement votre installation portmapper/NFS avec
   hosts.allow/deny, root_squash, nosuid et les ports privilgis, vous
   vitez beaucoup des bogues connues de NFS et pouvez presque vous
   sentir en scurit au moins pour _a_. Mais de toutes faons : quand
   un intrus obtient l'accs  votre rseau, il/elle peut faire
   apparatre des commandes bizarres dans votre .forward ou lire votre
   mail quand /home ou /var/spool/mail sont exports. Pour la mme
   raison, vous ne devriez jamais accder  votre cl prive PGP par NFS.
   Ou au moins vous devez savoir quel est le risque. Et maintenant vous
   savez un peu.

   NFS et le portmapper constituent un systme complexe et il n'est donc
   pas totalement exclu que de nouvelles bogues soient dcouvertes, soit
   dans la conception soit dans l'implmentation que nous utilisons. Il
   pourrait mme y avoir des dfauts de scurit connus, que quelqu'un
   utilise. Mais c'est la vie. Pour vous tenir au courant, vous devriez
   au moins lire les forums comp.os.linux.announce et
   comp.security.announce comme minimum absolu (en franais, consultez
   fr.comp.os.linux.annonces).

7. ``Checklist'' mount

   Cette section est base sur la _mount checklist_ (liste des problmes
   lis  mount) de IBM Corp. Je les remercie de m'autoriser  l'utiliser
   dans ce HOWTO. Si vous avez un problme en montant un systme de
   fichiers NFS, consultez cette liste avant de poster votre problme sur
   les niouzes. Chaque point dcrit un type de problme et sa solution.

    1. Mount rpte RPC: Program not registered
       Le portmapper tourne ?
       _Solution :_ lancez-le.
       mountd tourne ?
       _Solution :_ lancez-le.
       nfsd tourne ?
       _Solution :_ lancez-le.
       /etc/hosts.deny empche le portmapper de rpondre ?
       _Solution :_ vous pouvez enlever la rgle en question dans
       hosts.deny ou en ajouter une dans hosts.allow de faon que le
       portmapper soit autoris  vous parler.
    2. Systme de fichier non export, ou non export au client en
       question.
       _Solution :_ exportez le [Ndt : merci IBM !]
    3. La rsolution de noms ne s'accorde pas avec la liste des exports.
       e.g.: la liste des exports dit d'exporter vers johnmad mais le nom
       de johnmad est rsolu en johnmad.austin.ibm.com. La permission de
       monter est refuse.
       _Solution :_ exportez vers les deux formes du nom.
       Cela peut aussi arriver si le serveur a deux interfaces avec des
       noms diffrents et que les exports n'en spcifient qu'un.
       _Solution :_ exportez les deux interfaces.
       Cela peut aussi se produire si le serveur ne peut pas faire un
       lookuphostbyname ou lookuphostbyaddr (ce sont des fonctions de
       bibliothque) sur le client. Assurez-vous que le client peut faire
       host <name>; host <ip_addr>; et que les deux donnent la mme
       machine.
       _Solution :_ mettez de l'ordre dans la rsolution de noms.
    4. Le systme de fichiers a t mont aprs que NFS soit lanc (sur
       ce serveur). Dans ce cas le serveur exporte le point de montage
       sous-jacent, pas le systme de fichiers.
       _Solution :_ teignez nfsd et relancez le.
       _Note :_ les clients qui avaient mont le point de montage
       sous-jacent auront des problmes pour y accder aprs le
       redmarrage.
    5. La date est trs dcale sur une ou sur les deux machines (cela
       peut mettre la pagaille pour make)
       _Solution :_ rglez correctement la date.
       L'auteur du HOWTO recommande d'utiliser NTP pour synchroniser les
       horloges. Vu qu'il y a des restrictions  l'exportation (au sens
       commercial !) de NTP aux .U., vous devez vous procurer NTP pour
       Debian, Redhat ou Slakware depuis
       ftp://ftp.hacktic.nl/pub/replay/pub/linux ou un miroir.
    6. Le serveur ne peut pas utiliser un mount d'un utilisateur qui est
       dans plus de 8 groupes. _Solution :_ diminuez le nombre de groupes
       auxquels l'utilisateur appartient ou montez depuis un autre
       utilisateur.

8. FAQ

   Voici la section FAQ. Elle est en partie base sur une vieille FAQ NFS
   crite par Alan Cox.

   Si vous avez un problme pour monter un systme de fichier, voyez si
   votre problme est dcrit dans la section ``Checklist mount''.

    1. J'obtiens un tas d'erreurs ``stale nfs handle'' quand j'utilise
       Linux comme serveur NFS.
       Cela est d  une bogue dans quelques vieilles versions de nfsd.
       Elle est corrige  partir de nfs-server2.2beta16.
    2. Quand j'essaye de monter le systme de fichiers j'obtiens

    can't register with portmap: system error on send

       Vous utilisez probablement un systme Caldera. Il y a une bogue
       dans les scripts rc. Contactez Caldera pour obtenir la solution.
    3. Pourquoi ne puis-je pas excuter un fichier aprs l'avoir copi
       sur le serveur NFS ?
       La raison est que nfsd cache les manipulations de fichiers pour
       des raisons de performances (rappelons qu'il fonctionne dans
       l'espace utilisateur). Ainsi, aprs une criture le fichier peut
       ne pas tre ferm tout de suite, et tant qu'il est ouvert le noyau
       ne vous autorisera pas  l'excuter. Les nfsd plus rcents que le
       printemps 95 [Ndt : hum...] ferment les fichiers ouverts aprs
       quelques secondes, les plus vieux pouvaient ne pas les relcher
       avant plusieurs jours...
    4. Mes fichiers NFS sont tous en lecture seule.
       Le serveur NFS Linux est par dfaut en lecture seule. Voyez les
       sections ``Mountd et nfsd'' et ``Exporter des systmes de
       fichier'' dans ce HOWTO et rfrez vous aux pages de manuel
       ``exports'' et ``nfsd''. Vous devrez modifier /etc/exports.
    5. Je monte depuis un serveur NFS Linux, ls marche et pourtant je ne
       peux pas lire ou crire de fichiers.
       Sur les anciennes versions de Linux il faut monter un serveur NFS
       avec rsize=1024, wsize=1024.
    6. Je monte depuis un serveur NFS Linux avec une taille de bloc
       comprise entre 3500 et 4000 et Linux crashe rgulirement.
       Bah alors ne le faites pas. Cela ne se produit pas avec les noyaux
       2.0 et 2.2 ni, autant que je sache avec les 1.2.
    7. Est-ce que Linux peut utiliser NFS sur TCP ?
       Non, pas pour le moment.
    8. J'ai des tonnes d'erreurs bizarres en essayant de monter depuis un
       serveur Linux.
       Assurez-vous que vos utilisateurs sont dans 8 groupes au maximum.
       C'est une limitation des vieux serveurs.
    9. Quand je redmarre ma machine elle se bloque parfois en essayant
       de dmonter un serveur NFS bloqu (_hung_).
       Ne dmontez _pas_ les serveurs NFS en redmarrant ou arrtant la
       machine, a ne crera pas de problmes si vous ne le faites pas.
       La commande est umount -avt nonfs.
   10. Les clients NFS Linux sont trs lents quand ils crivent sur des
       systmes Sun ou BSD.
       Normalement les critures NFS sont synchrones (vous pouvez le
       dsactiver si vous ne craignez pas de perdre des donnes). Les
       noyaux drivs de BSD ont tendance  ne pas savoir travailler avec
       des petits blocs. Ainsi quand vous crivez 4K de donnes depuis un
       client Linux dans des paquets de 1K, BSD fait ceci :

                lit une page de 4K
                traite 1K
                crit 4K sur le disque
                lit une page de 4K
                traite 1K
                crit 4K sur le disque
                ...

   11. Quand je connecte de nombreux clients  un serveur NFS Linux, la
       performance diminue soudainement.
       Le protocole NFS utilise les paquets UDP fragments. Le noyau ne
       conserve qu'un nombre limit de fragments de paquets incomplets
       avant de commencer  jeter des paquets. En 2.2, ce paramtre est
       rglable  l'excution au moyen du systme de fichier /proc :
       /proc/sys/net/ipv4/ipfrag_high_tresh et ipfrag_low_tresh. En 2.0
       ce sont des constantes dfinies  la compilation dans
       .../linux/net/ipv4/ip_fragment.c, IPFRAG_HIGH_TRESH et
       IPFRAG_LOW_THRESH. La signification des ces valeurs est que quand
       la mmoire consomme par les fragments UDP non rassembls atteint
       ``ipfrag_high_thresh'' (en octets, 256K par dfaut en 2.2.3 et
       2.0.36) elle est ramene  ``ipfrag_low_tresh'' d'un coup, en
       jetant des fragments. Ainsi, si la borne suprieure (high_tresh)
       est atteinte, la performance de votre serveur diminue
       drastiquement.
       256K est suffisant pour 30 clients. Si vous en avez 60, doublez la
       valeur. Et doublez aussi la borne infrieure (low_tresh).
   12. J'utilise Linux 2.2 (ou suivant) avec knfsd et ma machine AIX,
       IRIX, Solaris, DEC-Unix, ... n'arrive pas  monter de volume.
       knfsd annonce qu'il implmente NFS version 3, alors que ce n'est
       pas vrai. Utilisez l'option qui permet de stopper ces annonces, ou
       mettez "vers=2" dans la liste d'options de montage de votre
       client.
   13. Ma machine AIX 4 n'arrive pas  monter depuis mon serveur NFS
       Linux. Elle dit quelque chose du genre :

        mount: 1831-011 access denied for server:/dir
        mount: 1831-008 giving up on:
        server:/dir
        The file access permissions do not allow the specified action.

       AIX 4.2 utilise des ports rservs (<1024) pour NFS. AIX 4.2.1 et
       4.3 peuvent utiliser d'autres ports, et essaient de monter par
       NFS3, NFS/TCP et finalement NFS/UDP.
       Ajouter
         _____________________________________________________________

nfso -o nfs_use_reserved_ports=1
         _____________________________________________________________

        la fin de rc.tcpip la forcera  utiliser les ports rservs
       (truc fourni par Brian Gorka).

9. Exporter un systme de fichiers

   Bien sur, la faon d'exporter les systmes de fichiers par NFS n'est
   pas toujours la mme sur toutes les plate-formes. Linux et Solaris 2
   sont les plus dviants. Cette section liste de manire superficielle
   la faon de procder sur la plupart des systmes. Si votre systme
   n'est pas trait ici, cherchez dans vos pages de manuel. Les mot-cls
   sont : nfsd, system administration tool, rc scripts, boot scripts,
   boot sequence, /etc/exports, exportfs. J'utiliserai le mme exemple
   tout au long de cette section : comment exporter /mn/eris/local vers
   apollon en lecture/criture.

9.1 IRIX, HP-UX, Digital-UNIX, Ultrix, SunOS 4 (Solaris 1), AIX

   Ces systmes utilisent le format export traditionnel de Sun. Dans
   /etc/exports, crivez :
     _________________________________________________________________

/mn/eris/local -rw=apollon
     _________________________________________________________________

   La documentation complte se trouve dans la page de manuel exports.
   Aprs avoir dit le fichier, lancez exportfs -av pour exporter les
   systmes de fichiers.

   La rigueur de la syntaxe demande par exportfs varie. Sur certains
   systmes vous verrez que la ligne prcdente peut tre :
     _________________________________________________________________

/mn/eris/local apollon
     _________________________________________________________________

   ou mme quelque chose de dgnr comme :
     _________________________________________________________________

/mn/eris/local rw=apollon
     _________________________________________________________________

   Je recommande d'utiliser la syntaxe stricte. Il se peut que la
   prochaine version de exportfs soit plus exigeante vis  vis de la
   syntaxe et ne fonctionne plus.

9.2 Solaris 2

   Sun ont compltement rinvent la roue quand ils ont fait Solaris 2,
   et donc c'est compltement diffrent des autres systmes. Il faut
   diter le fichier /etc/dfs/dfstab et y placer les commandes de partage
   (_share_) documentes dans la page de manuel share(1M), comme ceci :
     _________________________________________________________________

share -o rw=apollon -d "Eris Local" /mn/eris/local
     _________________________________________________________________

   Lancez ensuite le programme shareall pour exporter les systmes de
   fichiers.

10. NFS sous Linux 2.2

   Au moment o j'cris, la version courante du noyau est 2.2.12 et
   utiliser NFS peut tre assez pnible. Ou pas. J'ignore ce qu'il en
   sera pour Linux 2.4.

   La grosse nouveaut dans Linux 2.2 c'est le support d'un serveur nfs
   dans le noyau, appel knfsd 2.2. Ce type d'implmentation a des
   avantages, principalement la rapidit, une machine Linux 2.2 avec
   knfsd est un serveur NFS respectable. Vous pouvez cependant toujours
   utiliser l'ancien nfsd avec Linux 2.2, et cela prsente quelques
   avantages aussi, dont la simplicit.

   Si vous utilisez un paquetage noyau source ou binaire fabriqu par
   quelqu'un comme RedHat (6.0 et suivantes), SuSE (6.1 et suivantes il
   me semble) ou un autre intgrateur de systme professionnel ils auront
   probablement intgr compltement ``knfsd'' et vous n'avez pas de
   soucis  vous faire, cela marchera. Pour l'essentiel. Jusqu' ce que
   vous vouliez compiler un noyau vous mme. Si vous utilisez un noyau
   2.2 standard (au moins jusqu' 2.2.12) knfsd ne fonctionnera pas.

   Pour le faire fonctionner vous mme il vous faut le paquetage knfsd de
   H.J. Lu. C'est un ensemble de patchs avec les utilitaires requis pour
   2.2 que Lu maintient bnvolement. Rcuprez le depuis votre miroir de
   noyau local, le site matre est ftp.kernel.org:/pub/linux/devel/gcc/.
   _Ce n'est pas destin au grand public_. Si vous trouvez que c'est trop
   compliqu, n'insistez pas et attentez qu'un paquetage noyau soit
   disponible auprs de votre intgrateur (Redhat, SuSE...).

   Ne m'envoyez pas de question  ce sujet, je ne peux pas vous aider, je
   n'ai aucun serveur bas sur knfsd qui tourne. Si vous trouvez des
   erreurs ou omissions dans la documentation, crivez-moi et je
   corrigerai ce HOWTO.

   Toujours l ? Ok. H.J. Lu annonce les nouvelles versions de son
   paquetage sur la liste de diffusion linux-kernel, o il passe d'autres
   choses lies  NFS dans Linux 2.2. Lisez-la.

10.1 Le client

   Le client est presque simple. Afin que les verrous (_locks_) marchent
   correctement il faut que statd (du paquetage knfsd) soit compil,
   install et lanc depuis vos scripts de dmarrage. Statd a besoin d'un
   rpertoire appel /var/lib/nfs qu'il vous faudra crer avant de le
   lancer (sans quoi il se termine immdiatement sans message d'erreur).

   Une fois que statd tourne vous pouvez utiliser le programme testlk
   (dans tools/locktest) pour tester si un verrou sur un fichier d'un
   volume mont par NFS fonctionne. a devrait. S'il affiche _No locks
   available_, statd ne fonctionne pas.

   En fait, vous pouvez aussi vous passer des verrous (ce que je ne
   recommande pas) en mettant "nolock" dans la liste des options de
   montage.

   Autant que je sache, c'est tout ce qu'il faut pour faire fonctionner
   correctement le client.

   Ah, si vous avez un serveur NFS Alpha ou Sparc vous verrez que le
   client nfs de Linux 2.2 est vraiment de la merde. Les dbits sont
   extrmement faibles, bien pire qu'avec Linux 2.0. Bien sur on peut
   corriger le problme. Les noyaux 2.2 d'Alan Cox (un petit peu plus
   exprimentaux que ceux de Linus) incluent un patch pour amliorer la
   performance du client 2.2 avec un serveur Alpha ou Sparc. Si vous
   voulez utiliser les noyaux d'Alan Cox, vous devriez lire la liste de
   diffusion linux-kernel, et si c'est le cas vous savez o les trouver.
   Le site de rfrence est http://www.uio.no/~trondmy/src/, au cas o
   vous voudriez essayer de l'appliquer  un noyau 2.2 standard. Ce patch
   ne sera probablement pas intgr dans Linux 2.4, car il demande trop
   de changements dans le noyau pour tre accept dans le cycle de
   dveloppement actuel. Attendez Linux 2.5.

   trondmy propose des patchs pour utiliser NFS version 3 avec Linux, et
   qui permettent aussi d'utiliser TCP comme mcanisme de transport au
   lieu d'UDP. NFSv3 est trs bien pour des rseaux grande distance ou
   avec des taux de pertes non nuls, ou des temps de latence levs.

   Si vous utilisez ces patchs, il vous faut lire linux-kernel, car de
   sales bugs, qui mangent vos fichiers, sont parfois dcouverts. Alors
   _soyez prudent_.

10.2 Le serveur

   Le serveur NFS de Linux 2.2 et suivants est appel "knfsd". Il est
   difficile  configurer. Il faudra vous dbrouiller tout seul ou
   utiliser ce que SuSE, RedHat et autres fournissent dans leurs
   paquetages 2.2. Dsol, mais vous pouvez toujours utiliser l'ancien
   nfsd. Il est lent mais facile  installer.

11. Serveur NFS sur une disquette

   Cette section a t crite par Ron Peters, rpeters@hevanet.com. Elle
   explique comment installer un serveur NFS en dmarrant depuis une
   disquette. L'objectif initial tait de partager par NFS un cdrom
   d'une autre machine pour installer Linux sur une machine sans lecteur
   de cdrom.

11.1 Introduction

   Ce document a pour but d'aider ceux qui auront le mme problme que
   moi rcemment. J'installais un serveur Linux sur une machine sans
   lecteur de cdrom et sans moyen d'en installer un,  part peut tre
   un SCSI externe. Ce genre de situations sera sans doute de plus en
   plus rare et ce document perdra donc de son intrt, mais j'aurais
   bien aim l'avoir quand j'essayais d'installer ma machine.

   Vu que la machine n'avait pas de lecteur de cdrom, j'ai pens
   installer un serveur NFS pour Win95 afin de partager le lecteur de
   cdrom juste le temps d'installer ma machine et de la mettre sur le
   rseau. Je n'ai trouv que deux produits (je ne citerai pas les noms
   mais l'un est un freeware et l'autre avait une licence limite  14
   jours), l'un ne marcha pas ``cls en main'' et l'autre n'tait pas
   capable de grer les conventions de nommage Linux suffisamment bien
   pour mener  bien l'installation.

   J'ai donc dcid d'essayer de redmarrer ma machine Win95 sous Linux
   avec les disquettes boot/root et d'utiliser une disquette
   supplmentaire pour installer un serveur NFS.

   Cela a t remarquablement simple, la procdure est en fait
   probablement plus simple que de lire cette introduction. Cependant, je
   pense qu'il est intressant de rassembler les information ncessaires
   dans ce document.

11.2 Attentes

   J'ai utilis les disquettes boot/root fournies dans une des
   distributions de Slakware (InfoMagic developpers distributions). Le
   noyau utilis sur les disquettes tait un 2.0.34, et les programmes du
   serveur NFS venaient d'un serveur pour 2.0.30. J'ai toujours utilis
   la mthode d'installation Slakware, non pas qu'elle soit plus facile
   ou meilleure ou pire, mais simplement qu'elle m'est familire et que
   je n'ai jamais pris le temps d'apprendre  en utiliser une autre.

   Je ne pense pas qu'il puisse y avoir beaucoup de problmes lis  la
   version du systme. Je recommanderais simplement d'utiliser un systme
   relativement rcent, ce qui devrait tre le cas si vous utilisez les
   disquettes boot/root de la distribution  installer.

11.3 Matriel ncessaire

     * Une machine et une disquette de boot supportant le rseau. La
       machine devant jouer le rle du serveur NFS doit avoir une carte
       rseau reconnue pendant le dmarrage. Pour plus d'informations,
       voir le HOWTO sur le rseau (NET4-HOWTO).
     * Une deuxime disquette contenant rpc.portmap, rpc.mountd et
       rpc.nfsd. Vous pouvez trouver facilement ces fichiers par un
       ftpsearch sur le oube.
     * Un cd (par exemple) Slakware (ou autre).

11.4 Configuration du serveur

  Dmarrer le serveur NFS temporaire

   Dmarrez la machine qui sera serveur NFS depuis la disquette de
   dmarrage et assurez-vous que la carte rseau est reconnue, de mme
   que le lecteur de cdrom. Dans la suite je suppose que la carte
   rseau en question est eth0.

  Monter la disquette et le cdrom

   Une fois que le systme est dmarr, vous n'avez plus besoin des
   disquette boot/root, le systme tant compltement install en disque
   mmoire. Remplacez la disquette root par la disquette supplmentaire,
   et montez la :

   mount /dev/fd0 /floppy

   Ceci fonctionne pour une disquette avec un systme de fichiers ext2.
   J'imagine que la disquette pourrait utiliser un systme de fichiers
   MSDOS mais je n'ai pas essay. Je suppose que cela serait plus simple
   que de faire une image disque. Dans ce cas, il faudrait utiliser mount
   -t msdos ...etc.

   Montez le cdrom :

   mount -t iso9660 /dev/hdc /cdrom

   J'ai utilis les priphriques disquette et cdrom, on peut en
   utiliser d'autres selon ce que l'on veut faire. Les points de montage
   /floppy et /cdrom doivent exister sur l'image de la disquette root. Si
   ce n'est pas le cas, crez-les, ou bien vous pouvez utiliser n'importe
   quels autres points de montage.

  Configurer le rseau sur le serveur provisoire

   Il faut maintenant configurer le serveur NFS et le rseau. Il n'y a
   que quelques commandes  lancer, et quelques informations qu'il vous
   faudra rassembler auparavant (je donne ici des valeurs d'exemple) :

   IPADDR:172.16.5.100 #L'adresse du serveur temporaire.

   NETMASK:255.255.255.0 #Le masque de rseau (netmask).

   BROADCAST:172.16.5.255 #L'adresse de diffusion sur le rseau

   ETHNETWORK:172.16.5.0 #L'adresse rseau

   GATEWAY:172.16.5.251 #Ncessaire seulement si vous avez une
   passerelle. Si c'est le cas, vous le savez. La plupart des rseau ``
   la maison'' n'en ont pas.

   Les commandes pour se connecter au rseau (utiliser les valeurs
   donnes ci-dessus) :

   ifconfig eth0 inet IPADDR arp netmask NETMASK broadcast BROADCAST

   route add -net ETHNETWORK netmask NETMASK eth0

   Celle-ci uniquement si vous avez une passerelle et que vous devrez la
   traverser :

   route add default gw GATEWAY netmask 0.0.0.0 eth0

   Si tout va bien, vous tes maintenant sur le rseau et devriez pouvoir
   faire des ping sur les autres machines.

  Configurer le volume NFS

   Choisissez le rpertoire  partager. Dans mon exemple, c'tait
   /cdrom/slakware. Placez-le dans le fichier /etc/exports :

   echo "/cdrom/slakware" > /etc/exports

11.5 Lancer le serveur NFS

   Allez dans /floppy/usr/bin et lancez :

   ./rpc.portmap

   ./rpc.mountd

   ./rpc.nfsd

  Prt, commencez l'installation

   Normalement, le rpertoire /cdrom/slakware est maintenant partageable.
   Dmarrez votre machine (celle  installer) depuis les disquettes
   boot/root (j'ai utilis les mmes qui ont servi  dmarrer le serveur)
   et commencez l'installation.

   Quand il faut choisir le mdia source  utiliser, choisissez ``serveur
   NFS''. Il vous demandera l'adresse IP du serveur, qui est celle que
   vous avez appel IPADDR pour le serveur. Il vous faut aussi donner le
   rpertoire  monter, qui est celui que vous avez indiqu dans le
   fichier /etc/exports du serveur.

   Le volume NFS devrait maintenant tre mont, surveillez l'apparition
   de messages d'erreur. Si tout va bien, continuez l'installation.

11.6 Problmes

  Rien ici pour l'instant

   Je n'ai rien  dire  ce sujet pour le moment. Peut tre si des gens
   utilisent cette procdure, on aura des choses  ajouter.

11.7  faire

  Disquette DOS

   Voir si la disquette supplmentaire peut tre au format DOS.

  Commandes RPC

   Vrifiez l'ordre dans lequel lancer les commandes rpc.* et si toutes
   sont ncessaires.

12. PC-NFS

   Vous ne voulez pas utiliser PC-NFS, mais plutt samba.

   Samba est bien meilleur que PC-NFS, il fonctionne avec ``Windows3 for
   Workgroups'' et les versions suivantes de Windows. Il est plus rapide
   et plus sur. Utilisez plutt samba.
