このページは大阪弁化フィルタによって翻訳生成されたんですわ。

翻訳前ページへ


r駸eau, improviser ou vous procurer un livre sur l'administration de r駸eau TCP/IP pour vous familiariser avec TCP/IP. C'est une bonne id馥 de toutes fa輟ns si vous administrez des machines UNIX/Linux. Un tr鑚 bon livre sur le Mount Checklist et les FAQs. Jetez-y un oeil si quelque chose ne marche pas comme pr騅u.

Si vous voulez/avez besoin de le r馗up駻er et compiler vous m麥e, le site de r馭駻ence 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.

serveur et client. Si cela ne fonctionne pas, voyez le HOWTO r駸eau (NET-3) et configurez correctement le r駸eau.

3.2 Premiers pas

Avant de faire quoi que ce soit d'autre, il nous faut un serveur NFS

Si vous devez installer un serveur sur une machine non Linux vous devrez lire les pages de manuel du syst鑪e pour trouver comment configurer le serveur NFS et l'exportation des syst鑪es de fichiers par NFS. Ce HOWTO syst鑪e 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)

loin. Elles sont toutes d馗rites dans la page de manuel exports qu'il faut lire au moins une fois dans sa vie. Il y a de meilleures fa輟ns de faire que de lister tous les hosts dans le fichier exports. Peuvent 黎re qui peut obtenir un acc鑚 au serveur avec ce type d'autorisations group馥s.

Note : ce fichier exports n'utilise pas la m麥e syntaxe que d'autres Unix. Ce HOWTO contient une section sur la fa輟n dont les autres Unix exportent leurs fichiers.

killall -HUP /usr/sbin/rpc.mountd killall -HUP /usr/sbin/rpc.nfsd echo Volumes NFS r馥xport駸

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

Maintenant, v駻ifiez 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

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.

/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 syst鑪e 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 syst鑪e de fichiers local, mais

Pour vous d饕arrasser du syst鑪e de fichiers, vous pouvez faire :


umount /mnt

Pour que le syst鑪e monte automatiquement un syst鑪e de fichiers NFS au d駑arrage, 馘itez /etc/fstab de la fa輟n 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
...

pour tous les syst鑪es de fichiers NFS, y compris le spool du mail.

Reprenons l'exemple pr馗馘ent, votre entr馥 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 pr馗is馥s, NFS 馗rira et lira par blocs de 4096 ou 8192 octets. Mais certaines combinaisons de noyau Linux et cartes r駸eau ne peuvent pas fonctionner avec ces valeurs, de plus, m麥e si cela marche, cela peut ne pas 黎re optimal du tout. Il nous l'acc鑚 en 馗riture sur le disque vous pouvez tester les performances en 馗riture s駲uentielle :


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

Ceci cr馥 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 int駻essant. 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 d駑ontez (umount) et remontez (mount) avec des valeurs plus grandes pour rsize et wsize. Il trucs comme ls, explorez un peu pour v駻ifier que tout est bien normal. Si la valeur de rsize/wsize est trop grande, les sympt?es sont vraiment bizarres et pas 騅idents. Un sympt?e typique est une liste de fichiers tailles optimales diff駻entes. SunOS et Solaris sont r駱ut駸 pour 黎re beaucoup plus rapides avec une taille de 4096 octets.

Les noyaux Linux r馗ents (depuis 1.3) font parfois des lectures rsize de 4096 si c'est possible.

Un truc pour augmenter les performances d'馗riture de NFS est d'invalider les 馗ritures synchrones sur le serveur. Les sp馗ifications de NFS disent que les requ黎es d'馗riture de NFS ne doivent pas 黎re consid駻馥s comme d'馗ritures synchrones car l'impl駑entation du syst鑪e de fichiers ne s'y pr黎e pas, mais sur les serveurs non Linux vous pouvez augmenter les performances de cette fa輟n dans votre fichier exports :


/dir    -async, access=linuxbox

et retrans. Elles sont d馗rites dans la page de manuel nfs(5), en voici un extrait (version fran軋ise) :


       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.

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

g駭駻al, la latence augmente avec la taille des paquets et la charge de la ligne. Si vous comptez utiliser FTP et NFS en m麥e temps il faudra mesurer les temps du ping pendant un transfert FTP et augmenter timeo en accord (broken into) il peut 黎re tr鑚 facile de casser le compte root du client. Et vice versa. Il y a quelques moyens de g駻er ce probl鑪e sur lesquels nous reviendrons.

Les documents consultatifs (advisories) du CERT sur NFS sont une connaissance de version fran軋ise) :


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
en utilisateur et de lancer le programme suid pour devenir root sur le
client. Il est aussi possible d'interdire l'ex馗ution des fichiers du
syst鑪e de fichiers NFS avec l'option noexec. Mais ceci est beaucoup
moins utile que nosuid car le syst鑪e de fichiers contiendra tr鑚

Dans ce cas, si un utilisateur du client avec l'UID 0 essaye d'acc馘er (en lecture, 馗riture ou effacement) au syst鑪e de fichiers, le serveur remplace l'UID par celui de l'utilisateur `nobody' du serveur. Ceci signifie que 駭um駻馥s 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 v駻ifie que toutes les requ黎es Linux effectue cette v駻ification par d馭aut, sur d'autres syst鑪es d'exploitation il faut la valider. ヌa devrait 黎re d馗rit dans les pages du manuel de ce syst鑪e.

Autre chose. N'exportez jamais un syst鑪e de fichiers vers `localhost' ou /etc/hosts.allow. Si votre portmapper est /usr/sbin/portmap ex馗utez 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, 馘itons /etc/hosts.deny. Il devrait contenir la ligne :


portmap: ALL

y 黎re autoris馥s. Disons que votre machine est 129.240.223.254 et que tout ce qui vit sur le sous r駸eau 129.240.223.0 doit pouvoir y acc馘er (si ceci n'est pas clair pour vous, voyez le HOWTO r駸eau). On 馗rit :


portmap: 129.240.223.0/255.255.255.0

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 r駸eau dans la premi鑽e colonne)

Les fichiers hosts.deny et hosts.allow sont d馗rits dans les pages de manuel de m麥es noms.

IMPORTANT : ne rien mettre d'autre que des adresses IP (num駻iques) dans les lignes portmap de ces fichiers. Les host name

Ceci fait, votre serveur devrait 黎re un peu plus solide. Le dernier probl鑪e (mais oui !) est que quelqu'un casse le compte root (ou boute MS-DOS) sur une machine de confiance et utilise ce privil鑒e pour envoyer des requ黎es depuis un port s? en se faisant passer pour n'importe quel utilisateur.

6.4 NFS et les coupent-feu (firewalls)

C'est une tr鑚 bonne id馥 de bloquer les ports NFS et portmap dans votre routeur ou firewall. nfsd utilise le port 2049, que ce soit avec tcp ou quel est le risque. Et maintenant vous savez un peu.

NFS et le portmapper constituent un syst鑪e complexe et il n'est donc pas totalement exclu que de nouvelles bogues soient d馗ouvertes, soit dans la conception soit dans l'impl駑entation que nous utilisons. Il pourrait m麥e y dans ce HOWTO. Si vous avez un probl鑪e en montant un syst鑪e de fichiers NFS, consultez cette liste avant de poster votre probl鑪e sur les niouzes. Chaque point d馗rit un type de probl鑪e et sa solution.

  1. Mount r駱鑼e RPC: Program not registered

    Le portmapper tourne ?

    Solution : lancez-le.

    mountd tourne ?

    Solution : lancez-le.

    nfsd tourne ?

    Solution : lancez-le.

    /etc/hosts.deny emp鹹he le portmapper de r駱ondre ?

    de johnmad est r駸olu en johnmad.austin.ibm.com. La permission de monter est refus馥.

    Solution : exportez vers les deux formes du nom.

    Cela peut aussi arriver si le serveur a deux interfaces avec des noms diff駻ents et que les exports n'en sp馗ifient 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 biblioth鑷ue) sur le client. Assurez-vous que le client peut faire host <name>; host <ip_addr>; et que les deux donnent la m麥e machine.

    Solution : mettez de l'ordre dans la r駸olution de noms.

  2. Slakware depuis ftp://ftp.hacktic.nl/pub/replay/pub/linux ou un miroir.

  3. 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 bas馥 sur une vieille FAQ NFS 馗rite par Alan Cox.

Si vous avez un probl鑪e pour monter un syst鑪e de fichier, voyez si votre

Le serveur NFS Linux est par d馭aut en lecture seule. Voyez les sections ``Mountd et nfsd'' et ``Exporter des syst鑪es de fichier'' dans ce HOWTO et r馭駻ez vous aux pages de manuel ``exports'' et ``nfsd''. Vous devrez modifier /etc/exports.

  • Je monte depuis un serveur NFS Linux, ls marche et pourtant je ne peux pas lire ou 馗rire de fichiers.

    Sur les anciennes versions de Linux il faut monter un serveur NFS avec rsize=1024, wsize=1024.

  • Je monte depuis un serveur NFS Linux avec une taille de bloc comprise entre 3500 et 4000 et Linux crashe r馮uli鑽ement.

    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.

  • Est-ce que Linux peut utiliser NFS sur TCP ?

    Non, pas pour le moment.

  • 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.

  • machine, 軋 ne cr馥ra pas de probl鑪es si vous ne le faites pas. La commande est umount -avt nonfs.

  • Les clients NFS Linux sont tr鑚 lents quand ils 馗rivent sur des syst鑪es Sun ou BSD.

    Normalement les 馗ritures NFS sont synchrones (vous pouvez le lit une page de 4K traite 1K 馗rit 4K sur le disque lit une page de 4K traite 1K 馗rit 4K sur le disque ...

    compilation dans .../linux/net/ipv4/ip_fragment.c, IPFRAG_HIGH_TRESH et IPFRAG_LOW_THRESH. La signification des ces valeurs est que quand la m駑oire consomm馥 par les fragments UDP non

    knfsd annonce qu'il impl駑ente 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.

  • The file access permissions do not allow the specified action.

    AIX 4.2 utilise des ports r駸erv駸 (<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

    9. Exporter un syst鑪e de fichiers

    Bien sur, la fa輟n d'exporter les syst鑪es de fichiers par NFS n'est pas toujours la m麥e sur toutes les plate-formes. Linux et Solaris 2 sont les plus d騅iants. Cette section liste de mani鑽e superficielle la fa輟n de exportfs. J'utiliserai le m麥e exemple tout au long de cette section : comment exporter /mn/eris/local vers apollon en lecture/馗riture.

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

    Ces syst鑪es utilisent le format export traditionnel de Sun. Dans exporter les syst鑪es de fichiers.

    La rigueur de la syntaxe demand馥 par exportfs varie. Sur certains syst鑪es vous verrez que la ligne pr馗馘ente peut 黎re :


    /mn/eris/local apollon
    

    fichier /etc/dfs/dfstab et y placer les commandes de partage (share) document馥s dans la page de manuel share(1M), comme ceci :


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

    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 d饕its sont extr麥ement faibles, bien pire qu'avec Linux 2.0. Bien sur on peut corriger le probl鑪e. Les noyaux 2.2 d'Alan Cox (un petit peu plus exp駻imentaux que ceux de Linus) incluent un patch pour am駘iorer 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 qui permettent aussi d'utiliser TCP comme m馗anisme de transport au lieu d'UDP. NFSv3 est tr鑚 bien pour des r駸eaux grande distance ou avec des taux de pertes non nuls, ou des temps de latence 駘ev駸.

    disquette. L'objectif initial 騁ait de partager par NFS un c馘駻om d'une autre machine pour installer Linux sur une machine sans lecteur de c馘駻om.

    11.1 Introduction

    Ce document a pour but d'aider ceux qui auront le m麥e probl鑪e que moi

    11.3 Mat駻iel n馗essaire

    11.4 Configuration du serveur

    D駑arrer le serveur NFS temporaire

    D駑arrez la machine qui sera serveur NFS depuis la disquette de d駑arrage et assurez-vous que la carte r駸eau est reconnue, de m麥e que le lecteur de m駑oire. Remplacez la disquette root par la disquette suppl駑entaire, et montez la :

    mount /dev/fd0 /floppy

    Ceci fonctionne pour une disquette avec un syst鑪e de fichiers cas, cr馥z-les, ou bien vous pouvez utiliser n'importe quels autres points de montage.

    Configurer le r駸eau sur le serveur provisoire

    Il faut maintenant configurer le serveur NFS et le r駸eau. Il n'y a que

    Les commandes pour se connecter au r駸eau (utiliser les valeurs donn馥s 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 黎es maintenant sur le r駸eau et devriez pouvoir faire

    11.5 Lancer le serveur NFS

    Allez dans /floppy/usr/bin et lancez :

    ./rpc.portmap

    ./rpc.mountd

    ./rpc.nfsd

    Voir si la disquette suppl駑entaire peut 黎re au format DOS.

    Commandes RPC

    V駻ifiez l'ordre dans lequel lancer les commandes rpc.* et si toutes sont n馗essaires.

    12. PC-NFS

    Vous ne voulez pas utiliser PC-NFS, mais plut? 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 plut? samba.