Cours configuration commune au client et au serveur NFS, tutoriel & guide de travaux pratiques en pdf.
Configuration commune au client et au serveur NFS
Plusieurs services communs doivent être actifs pour que les accès au système de fichiers réseau NFS soient utilisables. Le mécanisme de gestion des appels de procédures distants appelé RPC ou Remote Procedure Call constitue le point de départ dans la mise œuvre de ces services communs.
Le logiciel de gestion des appels de procédures distants a évolué avec les différentes versions du système de fichiers NFS et l’arrivée du protocole réseau IPv6. La configuration étudiée ici doit permettre de fonctionner de la façon la plus transparente possible avec les versions 3 et 4 du système de fichiers NFS.
Note
Les manipulations présentées ici ne traitent pas le volet authentification et chiffrement des échanges sur le réseau. On considère que les services Kerberos, SPKM-3 et LIPKEY ne sont pas actifs sur les systèmes étudiés.
Gestion des appels RPC
1. Quels sont les deux logiciels disponibles chargés de la gestion des appels RPC ? Qu’est-ce qui les distinguent ?
La présentation Systèmes de fichiers réseau9 introduit les principes de fonctionnement des appels de procédures distants.
Introduction au système de fichiers réseau NFS
Introduction au système de fichiers réseau NFS $Revision: 1636 $ 5
Dans un premier temps, rechercher dans le support Linux NFS-HOWTO10 le service «historique» utilisé par NFS pour le multiplexage des appels de procédures distants. Dans un second temps, consulter la page TI-RPC / rpcbind support11 pour identifier les évolutions apportées.
Le support Linux NFS-HOWTO12 présente le service «historique» utilisé par NFS pour le multiplexage des appels de procédures distants : portmap. Ce service est fourni par le paquet du même nom et est limité au protocole réseau IPv4.
La page TI-RPC / rpcbind support13 présente un nouveau logiciel de multiplexage des mêmes appels de procédures distants : rpcbind. Ce nouveau démon est aussi fourni par le paquet du même nom. Il se veut plus évolutif que le précédent et supporte le protocole réseau IPv6.
2. Quels sont les paquets qui correspondent à ces logiciels ? Installer le paquet ouvrant les services de transport universels.
Utiliser les outils de recherche dans les répertoires de noms de paquets et dans leurs descriptions : apt-cache, dpkg, aptitude.
Comme indiqué dans la documentation, on recherche un paquet portant le nom rpcbind.
# aptitude search rpcbind p rpcbind – converts RPC program numbers into universal addresses
Une fois l’existence du paquet confirmée, on l’installe en acceptant la suppression de l’ancien paquet portmap qui est en conflit avec cette nouvelle version du même service.
# aptitude install rpcbind Les NOUVEAUX paquets suivants vont être installés : libgssglue1{a} libtirpc1{a} rpcbind{b} 0 paquets mis à jour, 3 nouvellement installés, 0 à enlever et 0 non mis à jour. Il est nécessaire de télécharger 155 ko d’archives. Après dépaquetage, 504 ko seront utilisés. Les paquets suivants ont des dépendances non satisfaites : rpcbind: Est en conflit avec: portmap mais 6.0.0-3 est installé. Les actions suivantes permettront de résoudre ces dépendances :
Supprimer les paquets suivants : 1) portmap
Accepter cette solution ? [Y/n/q/?] Les NOUVEAUX paquets suivants vont être installés : libgssglue1{a} libtirpc1{a} rpcbind Les paquets suivants seront ENLEVÉS : portmap{a} 0 paquets mis à jour, 3 nouvellement installés, 1 à enlever et 0 non mis à jour. Il est nécessaire de télécharger 155 ko d’archives. Après dépaquetage, 319 ko seront utilisés. Voulez-vous continuer ? [Y/n/?]
3. Quel est le numéro de port utilisé par le service ? Quel est le principe de fonctionnement du service pour le traitement des appels de procédures distants ?
Utiliser les commandes qui permettent d’obtenir les informations sur :
• La liste des processus actifs sur le système, • Les numéros de ports en écoute sur les interfaces réseau, • Les pages de manuels des applications utilisées.
• La liste des processus actifs sur le système,
# ps aux | grep rpc[b]ind
10 http://nfs.sourceforge.net/nfs-howto/ 11 http://nfsv4.bullopensource.org/doc/tirpc_rpcbind.php 12 http://nfs.sourceforge.net/nfs-howto/ 13 http://nfsv4.bullopensource.org/doc/tirpc_rpcbind.php
Introduction au système de fichiers réseau NFS
Introduction au système de fichiers réseau NFS $Revision: 1636 $ 6
root 1988 0.0 0.1 18772 760 ? Ss 23:49 0:00 /sbin/rpcbind -w • Les numéros de ports en écoute sur les interfaces réseau,
# lsof -i | grep rpc[b]ind rpcbind 1988 root 6u IPv4 4884 0t0 UDP *:sunrpc rpcbind 1988 root 7u IPv4 4889 0t0 UDP *:891 rpcbind 1988 root 8u IPv4 4890 0t0 TCP *:sunrpc (LISTEN) rpcbind 1988 root 9u IPv6 4893 0t0 UDP *:sunrpc rpcbind 1988 root 10u IPv6 4896 0t0 UDP *:891 rpcbind 1988 root 11u IPv6 4897 0t0 TCP *:sunrpc (LISTEN)
On obtient la correspondance entre numéro de port et nom de service en consultant le fichier /etc/services.
# grep sunrpc /etc/services sunrpc 111/tcp portmapper # RPC 4.0 portmapper sunrpc 111/udp portmapper
Le principe de fonctionnement des appels de procédures distants veux que tous ces appels soient reçus sur un numéro de port unique ; sunrpc/111 dans le cas présent. Ces appels, une fois identifiés, sont transmis aux programmes concernés pour être traités. • Les pages de manuels des applications utilisées.
# man rpcbind
4. Quelle est a commande qui permet de lister les services accessibles via un appel RPC ? À quel paquet appartient cette commande ?
Rechercher dans le support Linux NFS-HOWTO14 et dans la liste des fichiers du paquet sélectionné pour la gestion des appels RPC.
La commande présentée dans le support Linux NFS-HOWTO15 est appelée rpcinfo. On vérifie sa présence sur le système étudié de la façon suivante.
# dpkg -S `which rpcinfo` rpcbind: /usr/sbin/rpcinfo
Dans la version la plus récente du programme, c’est l’option -s qui permet d’obtenir la présentation la plus synthétique des services accessibles par appel RPC.
# rpcinfo -s program version(s) netid(s) service owner 100000 2,3,4 local,udp,tcp,udp6,tcp6 portmapper superuser
La copie d’écran ci-dessus montre que le gestionnaire d’appel portmapper est le seul service ouvert. On relève l’ordre de priorité des différentes versions du service supportées par le système ainsi que les versions des protocoles de couche transport.
5. Donner deux exemples d’exécution : un en local et un sur le poste de travaux pratiques voisin.
L’exemple d’exécution de la commande en local est donné dans la copie d’écran de la question précédente. Pour connaître les services accessibles sur un autre poste, on utilise la même commande suivie de l’adresse IP de cet hôte.
# rpcinfo -s 192.200.0.4 program version(s) netid(s) service owner 100000 2,3,4 local,udp,tcp,udp6,tcp6 portmapper superuser
Cette copie d’écran montre la même liste de paramètres que lors de l’exécution de la commande en local. Les configurations sur les deux hôtes sont donc identiques.