Previous Next Table of Contents

12. Configurations avancées

Les configurations précédentes décrivent la façon d'installer une station Linux pour des utilisations normales. Certains d'entre vous ont peut-être des besoins qui requièrent des configurations légèrement plus avancées. Les exemples suivants sont les plus communs. Les détails concernant AX.25, Ottawa PI et les pilotes génériques SCC ont été mis sur http://sunsite.unc.edu/mdw/HOWTO/HAM-HOWTO.html.

12.1 PPP - Protocole Point à Point

Le Protocole Point à Point est un protocole transportant d'autres protocoles, TCP/IP par exemple, sur des lignes séries, et que beaucoup de personnes utilisent à la place de SLIP. Il offre des fonctionnalités avancées, des options de corrections d'erreurs et gestion de la sécurité. Il corrige beaucoup de déficiences de SLIP et est utilisable aussi bien pour des liaisons asynchrones que synchrones.

Une caractéristique importante de PPP est l'allocation dynamique d'adresses, probablement exploitée par votre serveur PPP. Cette caractéristique permet à un client PPP de demander son adresse au serveur grâce à une requête spéciale. De cette manière, la configuration est plus propre qu'avec SLIP car la capacité à retrouver son adresse est externe au protocole.

Les auteurs de la version Linux sont Michael Callahan, <callahan@maths.ox.ac.uk> et Al Longyear, <longyear@netcom.com>. La plupart des informations que vous trouverez ici viennent de la documentation qui accompagne les logiciels PPP. Cette documentation est complète et vous en apprendra beaucoup plus.

Le code PPP de Linux est sorti de la phase de tests ALPHA et est maintenant disponible pour tout le monde. Le code PPP 1.0.0 de Linux est basé sur la version libre de PPP de Paul Mackerras pour les systèmes d'exploitation dérivés de BSD. La version 1.0.0 est basée sur la version 2.1.1 du code libre.

Le code PPP se compose de deux parties. La première est un module du noyau qui gère l'assemblage et le désassemblage des paquets. La seconde est un ensemble de protocoles appelés LCP, IPCP, UPAP et CHAP, qui négocient les options de la liaison, faisant fonctionner la liaison et gérant l'authentification.

Dois-je utiliser PPP à la place de SLIP ?

Vous utiliserez PPP à la place de SLIP pour plusieurs raisons. Les plus courantes sont :

Votre opérateur internet ne supporte que PPP

C'est la plus évidente des raisons pour utiliser PPP au lieu de SLIP.

Vous avez du bruit sur votre ligne série en temps normal

PPP fournit une séquence de vérification pour chaque paquet transmis, SLIP non. Si vous avez une ligne série bruitée, et que vous utilisez SLIP, votre correction d'erreur sera réalisée d'une extrémité à l'autre de la connexion IP, c'est-à-dire entre votre machine et la machine de destination, alors qu'avec PPP la détection d'erreur s'effectue localement sur la liaison entre votre machine et le serveur PPP. Ceci permet une récupération d'erreurs plus rapide.

Vous avez besoin d'une des caractéristiques propres à PPP.

PPP propose plusieurs possibilités que ne permet pas SLIP. Vous pouvez vouloir par exemple transporter non seulement de l'IP, mais aussi du DECNET, ou des paquets AppleTalk au dessus de votre liaison série. PPP vous permet de le faire.

Où obtenir les logiciels PPP

Le logiciel PPP est disponible à :

sunsite.unc.edu

/pub/Linux/system/Networking/serial/ppp-2.1.2d.tar.gz

Ce fichier contient le source du noyau et les sources et binaires de pppd. La version 1.0.0 est prévu pour être utilisée avec les noyaux 1.0.x et 1.1.x. La version 2.1.2 est prévue pour les noyaux 1.2.x, et la 2.2.0 pour les noyaux 1.3.x.

Installer le logiciel PPP

L'installation du logiciel PPP est très simple.

Le pilote du noyau.

Un support pour PPP a été construit dans le noyau depuis quelque temps, dès lors vous êtes encouragés à utiliser un noyau récent. La configuration du noyau est très simple, les commandes suivantes devraient fonctionner :

# make config (rappelez-vous de répondre 'y' au support PPP)
# make dep
# make (pensez à installer le nouveau noyau après la recompilation!)
Quand vous rebootez avec le nouveau noyau, vous devriez voir à peu près les messages suivants au moment du boot:
PPP: version 0.2.7 (4 channels) NEW_TTY_DRIVERS OPTIMIZE_FLAGS
TCP compression code copyright 1989 Regents of the University of California
PPP line discipline registered.
Ceci indique que le support PPP a bien été compilé dans votre noyau.

Maintenant, essayez de regarder le contenu de /proc/net/dev. Faites attention à ne pas utiliser more ou less dans le système de fichiers proc car ils vérifient la longueur du fichier en premier et c'est une caractéristique des fichiers de proc d'avoir une longueur nulle, aussi faites:

# cat /dev/proc/net
Il devrait ressembler à quelque chose comme :

  Inter-|   Receive                  |  Transmit
  face |packets errs drop fifo frame|packets errs drop fifo colls carrier
      lo:      0    0    0    0    0        0    0    0    0     0    0
    ppp0:      0    0    0    0    0        0    0    0    0     0    0
    ppp1:      0    0    0    0    0        0    0    0    0     0    0
    ppp2:      0    0    0    0    0        0    0    0    0     0    0
    ppp3:      0    0    0    0    0        0    0    0    0     0    0

Cela indique que le pilote noyau a été installé correctement.

pppd

Pour extraire le logiciel pppd et les utilitaires l'accompagnant, ce qui suit devrait convenir:

# cd /usr/src
# gzip -dc ppp-2.1.2d.tar.gz | tar xvf -
Si vous voulez recompiler pppd, tapez make dans le sous-répertoire pppd. Il y aura des messages d'avertissement pendant la compilation de lcp.c, upap.c et chap.c mais tout sera OK.

Si vous voulez recompiler chat, consultez le fichier README.linux dans le répertoire chat.

Pour installer, taper make install dans les répertoires chat et pppd. Ces commandes installeront les binaires de chat et pppd dans /usr/etc et la page de man pppd.8 dans /usr/man/man8.

pppd a besoin d'être lancé sous root. Vous pouvez positionner le bit suid root ou juste le lancer quand vous êtes root. make install essaiera de l'installer avec le bit suid root, donc si vous êtes root quand vous l'installez tout devrait fonctionner correctement.

Configurer et utiliser les logiciels PPP

Comme SLIP, vous pouvez configurer les logiciels PPP comme client ou comme serveur. Le programme chat joue le même rôle que dip dans le sens qu'il automatise la composition du numéro de téléphone et la connexion à la machine distante. A la différence de dip, il ne convertit pas la ligne série à la discipline PPP. Ceci est réalisé par le programme pppd. pppd peut servir de serveur ou de client. Quand vous l'utilisez comme un client, il appelle le programme chat pour établir la connexion puis il reprend la main pour faire l'ioctl qui change la discipline de la ligne pour celle de ppp et ensuite il vous laisse opérer.

Référez-vous aux pages de man de pppd et chat pour plus d'information. Vous pouvez aussi regarder le fichier README livré avec le logiciel PPP.

Configurer un client PPP utilisant un modem numéroteur.

C'est peut-être ce que la plupart d'entre vous voudront faire, donc nous allons l'aborder en premier. Vous utiliserez cette configuration si votre fournisseur réseau propose des accès PPP par modem. Quand vous voulez établir la connexion vous lancez simplement pppd sans arguments. Ceci suppose que votre serveur PPP vous assignera une adresse de manière dynamique. Nous verrons plus loin le cas où vous avez une adresse statique. Le programme pppd a un certain nombre d'arguments en ligne qui peuvent modifier son comportement. Ces arguments peuvent être placés d'un fichier de configuration de telle manière que les commandes n'apparaissent pas visibles lorsque quelqu'un branché sur le système fait la commande ps. Ceci est particulièrement important quand pppd fait appel au programme chat: en effet il a besoin du mot de passe pour se connecter sur le serveur et en général vous ne souhaitez pas qu'il soit visible aux autres utilisateurs du système. Le fichier que pppd utilise s'appelle /etc/ppp/options. Un bon point de départ pour une installation `typique' PPP peut ressembler à ceci:

connect /etc/ppp/ppp-connect
/dev/ttyS1
19200
crtscts
modem
lock
asyncmap 0
defaultroute

Cela signifie que:

  1. pppd doit utiliser le script /etc/ppp/ppp-connect pour numéroter via le modem et se connecter.
  2. pppd doit utiliser le dispositif ttyS1 à 19200 bits par seconde, en utilisant le protocole d'échanges de données matériel crtscts et doit respecter les signaux du modem (particulièrement la détection de porteuse) pour détecter si le modem est toujours en ligne ou si l'appel est fini.
  3. pppd doit créer un fichier lock pour le dispositif tty pour s'assurer qu'un autre processus n'essaie pas de l'utiliser en même temps que lui.
  4. Que la ligne est `bonne pour les 8 bits', c'est à dire que tous les caractères peuvent passer sur la ligne. L'option asyncmap détermine quels caractères pppd doit échapper et par défaut ceci est valable pour tous les caractères de contrôle. La plupart des serveurs PPP modernes sont aptes pour les 8 bits et mettre asyncmap à 0 enjoint pppd de n'échapper aucun caractère.
  5. pppd doit créer une defaultroute via le dispositif ppp quand la connexion a réussi.
La prochaine étape consiste à configurer le script /etc/ppp/ppp-connect. Vous devriez normalement utiliser le programme chat livré, avec pppd à l'intérieur de ce script, étant données sa simplicité d'utilisation et sa brièveté. Pour commencer vous devez connaître à quoi ressemble la séquence de connexion de votre serveur PPP. Ce qui suit est un exemple fictif sur lequel je m'appuyerai.

CONNECT 14400

Bienvenue sur les serveur PPP XYZ !

login:                    <vous entrez votre nom d'utilisateur>^M
password:                 <vous entrez votre mot de passe>^M

Maintenant PPP:

Le programme chat attend comme arguments une séquence envoi/attente, signifiant qu'il veut une série de `ce qu'il veut', suivi par `ce qu'il doit envoyer'. /etc/ppp/ppp-connect ne doit pas être accessible en lecture. Un échantillon qui colle avec l'exemple fictif ci-dessus ressemble à cela:

#!/bin/sh
# Un script pour se connecter au serveur PPP XYZ
NUM=5552857
UID=terryd
PASSWD=secret1
#
/usr/sbin/chat -v "" ATZ OK ATDT$NUM CONNECT ogin: $UID word: \\q$PASSWD PPP:
J'ai ajouté au script une séquence d'initialisation avant de numéroter ( C'est ATZ. Il est recommandé d'initialiser votre modem avant avant de démarrer).

Notez l'argument "", il signifie `n'attendez rien' et est utilisé quand vous voulez démarrer une séquence d'envoi.

L'argument -v enjoint à chat d'être verbeux. Dans ce mode il enverra au fichier syslog ce qui se passe pendant la connexion pour que vous puissiez voir ce qui s'est passé. Notez le \\q avant $PASSWD. Ceci enjoint à chat de ne pas écrire ce qui suit dans syslog. De cette manière votre mot de passe ne sera pas enregistré. Il est bon de faire chmod 600 /etc/ppp/ppp-connect pour être sûr que les autres utilisateurs ne puissent le lire en vue de voir votre mot de passe. Pour démarrer une session PPP avec la configuration ci-dessus, il suffit de faire : pppd et tout se passera automatiquement. Vous devriez observer le début de session dans le journal du système et quand tout est fini vous devriez voir une route default dans votre table de routage quand vous utilisez la commande route -n pointée via votre nouveau dispositif ppp0.

Si vous utilisez une adresse IP statique, vous pouvez l'indiquer en incluant une ligne comme ceci dans votre fichier /etc/ppp/options:

nnn.nnn.nnn.nnn:

nnn.nnn.nnn.nnn étant votre adresse IP. Notez que cela ne marchera que si votre fournisseur de services Internet vous l'autorise. Les deux points `:' sont importants.

Il y a beaucoup d'autres options que vous pouvez mettre dans votre fichier options. Voir les pages de documentations de pppd et chat pour plus d'informations.

Configurer un client PPP sur une ligne spécialisée.

Configurer un client PPP pour une ligne spécialisée est très rapide. Vous utiliserez encore le programme pppd, mais comme vous n'aurez pas besoin d'établir la connexion, les arguments du programme chat seront plus simples.

L'exemple que je présente ici suppose que le serveur PPP ne nécessite aucune procédure particulière. J'ai fait ce choix car chaque procédure de connexion est différente. Si vous voulez simplement utiliser une liaison locale, ce script devrait vous suffire.

pppd defaultroute noipdefault debug \
      kdebug 2 /dev/cua0 9600
Cette commande ouvre le port série, ouvre ioctl pour le changer en un dispositif ppp, définira la route par défaut sur l'interface ppp. Le paramètre noipdefault signifie que le programme pppd doit demander l'adresse à utiliser pour son interface au serveur. Les messages de debug passeront par syslog. L'argument kdebug 2 génère des messages de debug de niveau 2, ce qui vous donnera plus d'informations sur le déroulement des opérations. Il utilisera le pilote /dev/cua0 à 9600 bps.

Si votre serveur PPP a besoin d'une procédure de connexion spéciale, vous pouvez facilement utiliser le programme chat comme dans l'exemple du serveur appelant pour réaliser cette fonction pour vous.

Référez-vous aux pages de man de pppd et chat pour plus d'information. Vous pouvez aussi regarder le fichier README qui vient avec le logiciel PPP.

Configurer un serveur PPP.

La configuration d'un serveur PPP est similaire à celle d'un serveur SLIP. Vous pouvez créer un compte `ppp', qui utilisera un script exécutable comme shell de connexion. L'entrée du fichier /etc/passwd ressemblera à :

ppp:EncPasswd:102:50:PPP client login:/tmp:/etc/ppp/ppplogin

et le script /etc/ppp/ppplogin ressemblera à :

#!/bin/sh
exec /usr/etc/pppd passive :192.1.2.23

L'adresse indiquée sera celle qui sera assignée à la machine appelante.

Naturellement, si vous voulez que plusieurs utilisateurs puissent se connecter simultanément vous devrez créer autant de comptes et de scripts de connexion que vous voudrez autoriser d'accès PPP car vous ne pouvez utiliser qu'une seule adresse IP par script.

Où obtenir plus d'information sur PPP ou envoyer des rapports d'anomalies?

L'url http://sunsite.unc.edu/mdw/HOWTO/PPP-HOWTO.html est une excellente référence pour obtenir des informations plus compréhensible que celles que je donne ici. La plupart des discussions sur PPP pour Linux se tiennent sur la liste de diffusion PPP.

Pour joindre le canal PPP Linux sur le serveur de listes, envoyez un courrier électronique à :

Majordomo@vger.rutgers.edu

avec la ligne :

subscribe linux-ppp
dans le corps du message. La ligne sujet est ignorée.

N'oubliez pas de joindre tout le contexte de votre problème, ainsi que toutes les informations utiles pour votre rapport d'anomalie afin que ceux qui vous assisteront comprennent bien votre problème.

Vous pouvez aussi consulter :

Les RFC 1548, 1331, 1332, 1333 et 1334. Ce sont les documents de référence pour PPP.

W. Richard Stevens décrit aussi PPP dans son livre `TCP/IP Illustrated Volume 1', (Addison-Wesley, 1994, ISBN 0-201-63346-9).

12.2 Configurer Linux comme serveur SLIP.

Si vous avez une machine qui doit être joignable par téléphone, et proposer des services réseau, vous devrez configurer votre machine en serveur. Si vous voulez utiliser SLIP comme protocole série, vous aurez le choix entre trois solutions pour configurer votre machine Linux comme serveur SLIP. Ma préférence va à la première présentée, sliplogin, car elle est la plus simple à configurer et à comprendre, mais je présenterai un résumé de chaque pour vous faire une opinion.

Serveur SLIP utilisant sliplogin

sliplogin est un programme que vous pouvez utiliser à la place du programme login normal pour les comptes SLIP. Il convertit la ligne du terminal en ligne SLIP.

L'appelant se connectera avec la procédure standard, en entrant son nom d'utilisateur puis son mot de passe, mais au lieu d'avoir un shell ensuite, sliplogin est exécuté et cherche une entrée dans son fichier de configuration (/etc/slip.hosts) qui corresponde au nom d'utilisateur. S'il en trouve une, il configure la ligne en mode 8 bits propre et utilise un appel ioctl pour convertir la ligne à la discipline SLIP. Quand cette procédure est terminée, sliplogin lance un script qui configure l'adresse IP, le masque réseau et les routes appropriées. Ce script est généralement appelé /etc/slip.login, mais d'une manière similaire à getty, si vous avez des appelants spéciaux qui nécessitent une initialisation spéciale, vous pouvez créer des scripts appelés /etc/slip.login.loginname qui seront exécutés à la place de celui par défaut. Il y a trois ou quatre fichiers que vous devez configurer pour que sliplogin travaille pour vous. Je vais détailler où et comment obtenir les fichiers et comment est configuré chacun en détail. Ces fichiers sont:

Où se procurer sliplogin.

sliplogin peut être obtenu à :

sunsite.unc.edu

/pub/Linux/system/Network/serial/sliplogin-2.0.tar.gz

Le fichier tar contient à la fois les sources, les binaires précompilés et la page de man.

Pour être sûrs que seuls les utilisateurs autorisés pourront se servir de sliplogin, vous devez ajouter une entrée dans /etc/group similaite à celle-ci:

..
SLIP::13:radio,fred
..

Quand vous installez l'ensemble sliplogin, Makefile changera le nom de groupe propriétaire en SLIP, dès lors seuls ceux qui appartiennent au groupe pourront l'exécuter. L'exemple donné ci-dessus montre que seuls les utilisateurs radio et fred pourront exécuter sliplogin. Pour installer les binaires dans le répertoire /sbin, et la page de man dans la section 8, faire :

# cd /usr/src
# gzip -dc .../sliplogin-2.0.tar.gz | tar xvf -
# <..éditez Makefile si vous n'utilisez pas les mots de passe shadow..>
# make install

Si vous voulez recompiler les binaires avant de les installer, ajouter la ligne make clean avant la ligne make install. Si vous voulez installer les binaires ailleurs, vous devrez éditer le fichier Makefile pour modifier la règle pour install. Lisez les fichiers README livrés avec l'ensemble pour plus d'informations.

Configurer /etc/passwd pour les hôtes SLIP.

Vous aurez besoin de créer des comptes spéciaux pour les correspondants SLIP dans votre fichier /etc/passwd. Une convention répandue est de préfixer d'un 'S' le nom de la machine correspondante. Par exemple si la machine s'appelle radio, vous créerez une entrée dans /etc/passwd qui ressemblera à :

Sradio:FvKurok73:1427:1:radio SLIP login:/tmp:/sbin/sliplogin
La façon dont le compte est appelé n'a pas d'importance, tant qu'elle a une signification pour vous. Note : l'appelant n'a pas besoin d'un répertoire personnel, comme on ne lui présentera pas de shell, /tmp est donc un bon choix. Noter aussi que sliplogin est utilisé à la place du shell normal.

Configurer /etc/slip.hosts.

sliplogin scrute le fichier /etc/slip.hosts pour trouver les entrées correspondant au nom de connexion. C'est dans ce fichier que vous indiquez l'adresse IP et le masque réseau qui seront assignés à l'appelant. Des entrées pour deux hôtes, une avec une configuration statique pour l'utilisateur hôte radio et l'autre avec une configuration dynamique pour l'utilisateur hôte albert ressembleraient à :

#
Sradio    44.136.8.99   44.136.8.100   0xffffff00   normal
Salbert   44.136.8.99   DYNAMIC        0xffffff00   compressed
#

Les entrées du fichier /etc/slip.hosts sont :

  1. le nom de connexion de l'appelant.
  2. l'adresse IP de la machine serveur, c'est-à-dire votre machine.
  3. l'adresse IP qui sera assignée à l'appelant. Si ce champ est marqué comme DYNAMIC alors une adresse ip sera allouée suivant les informations contenues dans /etc/slip.tty décrit plus tard. Note: vous devez utiliser au moins la version 1.3 de sliplogin pour que cela marche.
  4. le masque réseau assigné à la machine appelante en notation hexadécimale, par exemple 0xffffff00 pour un masque de réseau classe C, ainsi pour un réseau de classe C ce sera 0xffffff00.
  5. paramètres optionnels pour autoriser ou inhiber la compression ou d'autres possibilités.

Note : vous pouvez utiliser les noms ou les adresses IP en notation décimale pointée pour les champs 2 et 3. Si vous utilisez les noms, ils doivent être résolvables, c'est-à-dire que votre machine doit être capable de faire l'association entre le nom et l'adresse IP correspondante, sinon le script échouera au moment de l'appel. Vous pouvez tester la correspondance en utilisant le programme telnet avec comme paramètre le nom à tester. Si vous avez comme réponse `Trying nnn.nnn.nnn...' alors votre machine a réussi à trouver la correspondance. Par contre si vous avez le message `Unknown host', alors votre machine n'a pas su résoudre le nom. Si vous avez un problème mettez l'adresse en notation décimale pointée ou corrigez votre configuration de résolution. (Voir le paragraphe Résolution de nom).

Les paramètres optionnels les plus courants pour les champs opt1 et opt2 sont :

normal

pour établir SLIP sans-compression.

compress

pour établir une compression van Jacobsen des en-têtes (cslip)

Evidemment ces deux options sont mutuellement exclusives, vous pouvez utiliser l'une ou l'autre. Pour plus d'information sur les autres options consulter les pages de man.

Configurer le fichier /etc/slip.login.

Une fois que sliplogin a recherché et trouvé dans le fichier /etc/slip.hosts une entrée correspondante, il essaiera d'exécuter le programme /etc/slip.login pour configurer l'interface SLIP avec son adresse IP et son masque réseau.

L'exemple du fichier /etc/slip.login qui vient avec le paquetage sliplogin ressemble à :

#!/bin/sh -
#
#       @(#)slip.login  5.1 (Berkeley) 7/1/90
#
# generic login file for a SLIP line.  sliplogin invokes this with
# the parameters:
#     $1       $2        $3       $4         $5        $6    $7-n
#   SLIPunit ttyspeed loginname local-addr remote-addr mask opt-args
#
/sbin/ifconfig $1 $4 pointopoint $5 mtu 1500 -trailers up
/sbin/route add $5
arp -s $5 <hw_addr> pub
exit 0
#

Vous noterez que ce script utilise simplement les commandes ifconfig et route pour configurer l'interface SLIP avec son adresse IP, l'adresse IP distante et le masque réseau, et crée une route pour l'adresse distante qui passe par l'interface SLIP. C'est exactement la même chose que si vous utilisiez la commande slattach. Notez aussi l'utilisation de Procuration ARP pour s'assurer que les autres hôtes sur le même ethernet que la machine sauront comment atteindre un hôte entrant. Le champ hw_addr doit être l'adresse matérielle de la carte ethernet sur la machine. Si vous n'avez pas de carte ethernet vous pouvez omettre cette ligne complètement.

Configurer le fichier /etc/slip.logout.

Quand l'appel est terminé, vous voulez vous assurer que l'interface série est restaurée dans un état correct pour que les appels suivants réussissent. Ceci est réalisé grâce au fichier /etc/slip.logout. C'est assez simple, à nouveau, je vous présente l'exemple extrait du paquetage sliplogin.

#!/bin/sh -
#
#               slip.logout
#
/sbin/ifconfig $1 down
/sbin/route del $5
arp -d $5
exit 0
#

Il se contente de passer l'interface en mode `down' et détruit la route manuelle créée précédemment. Il utilise aussi la commande arp pour enlever tout procuration arp en place, encore une fois vous n'avez pas besoin de la commande arp si vous n'avez pas de port ethernet.

Configurer le fichier /etc/slip.tty

Si vous utilisez une allocation d'adresse ip dynamique (vous avez au moins un hôte configuré avec le mot-clé DYNAMIC dans le fichier /etc/slip.hosts), alors vous devez configurer le fichier /etc/slip.tty pour lister quelles adresses sont assignées à quel port. Vous n'avez besoin de ce fichier que si vous voulez que votre serveur alloue de manière dynamique des adresses aux utilisateurs.

Le fichier est un tableau qui liste les dispositifs tty qui supporteront les connexions d'entrée SLIP et les adresses ip qui seront assignées aux utilisateurs appelant ces ports. Son format est le suivant:

# slip.tty    tty-> adresse IP 
# format: /dev/tty?? xxx.xxx.xxx.xxx
#
/dev/ttyS0      192.168.0.100
/dev/ttyS1      192.168.0.101
#

Ce que dit cette table est que tout appelant sur le port /dev/ttyS0 qui a son champ d'adresse dans le fichier /etc/slip.hosts réglé sur DYNAMIC aura comme adresse allouée 192.168.0.100.

Par ce biais vous n'avez besoin seulement que d'allouer une adresse par port pour tous les utilisateurs ne demandant pas une adresse fixe pour eux-mêmes. Cela vous permet de conserver le nombre d'adresses dont vous avez besoin au minimum sans gâchis.

Un serveur SLIP utilisant dip

Quelques-unes des informations ci-dessous proviennent des pages de man de dip, où la façon d'utiliser Linux comme serveur SLIP est décrite rapidement. Prenez garde aussi que ce qui suit est basé sur l'ensemble dip337j-uri.tgz et ne s'applique probablement pas à d'autres versions de dip. dip fonctionne suivant un mode où il place automatiquement une entrée pour l'utilisateur qui la réclame et configure la ligne série en tant que lien SLIP selon les informations qu'il trouve dans le fichier /etc/diphosts. Ce mode est activé en invoquant les fichiers dip et diplogin. Ceci est donc comment utiliser dip comme serveur SLIP, en créant des comptes spéciaux où diplogin est utilisé comme shell d'entrée. La première chose que vous devez faire est de créer un lien symbolique comme suit:

# ln -sf /usr/sbin/dip /usr/sbin/diplogin

Vous devez maintenant ajouter des entrées dans vos fichiers /etc/passwd et /etc/diphosts. Ces entrées sont formatées comme suit:

Pour configurer Linux comme un serveur SLIP, vous avez besoin de créer des comptes utilisateurs, où dip (en mode esclave) est utilisé comme shell de connexion. Fred suggère de suivre la convention suivante : tous les comptes SLIP débutent avec la lettre `S' comme `Sfredm'. Un exemple d'entrée dans /etc/passwd pour un serveur slip ressemble à:

Sfredm:ij/SMxiTlGVCo:1004:10:Fred:/tmp:/usr/sbin/diplogin
^^         ^^        ^^  ^^   ^^    ^^   ^^
|          |         |   |    |     |    \__ shell de connexion 
|          |         |   |    |     |         
|          |         |   |    |     \_______ Répertoire de connexion
|          |         |   |    \_____________ Nom d'utilisateur complet
|          |         |   \__________________ Groupe de l'utilisateur
|          |         \______________________ ID de l'utilisateur
|          \________________________________ Mot de passe chiffré
\___________________________________________ Nom de connexion de
                                             l'utilisateur SLIP

Une fois que l'utilisateur est connecté, le programme login(1) vérifie que l'utilisateur est valide puis exécute le programme diplogin. dip, quand il est appelé en tant que diplogin, sait qu'il doit automatiquement se comporter comme un shell de connexion. Quand il est démarré en tant que diplogin, la première chose qu'il fait est d'utiliser la fonction getuid pour obtenir l'ID user de celui qui l'a invoqué. Ensuite il cherche dans le fichier /etc/diphosts la première entrée qui correspond soit au ID user soit au nom du dispositif tty que l'appel a mis en marche et se configure alors de manière appropriée. Par un choix judicieux, soit en donnant à l'utilisateur une entrée dans le fichier diphosts, soit en laissant à l'utilisateur la configuration par défaut, vous pouvez construire votre serveur de telle sorte que vous pouvez avoir un mélange d'utilisateurs dont les adresses sont assignées de manière statique ou de manière dynamique. dip ajoutera automatiquement une entrée `Procuration ARP' lorsque c'est demandé en mode esclave, aussi vous n'avez pas besoin de vous soucier d'ajouter manuellement de telles entrées.

Configurer /etc/net/diphosts

Le fichier /etc/net/diphosts est utilisé par dip pour chercher la configuration pré-enregistrée des machines distantes. Ces hôtes distants peuvent être des utilisateurs qui entrent, ou bien sur des machines que avez connectées vous-mêmes.

Le format général pour le fichier /etc/net/diphosts est le suivant :

Suwalt::145.71.34.1:145.71.34.2:255.255.255.0:SLIP uwalt:CSLIP,1006
ttyS1::145.71.34.3:145.71.34.2:255.255.255.0:Dynamic ttyS1:CSLIP,296
..

Les champs sont les suivants:

  1. nom de login: comme retourné par getpwuid(getuid()) ou nom de tty.
  2. non utilisé: pour compatiblité avec passwd.
  3. Adresse de l'autre machine: adresse IP de l'hôte appelant, soit sous forme numérique soit sous forme de nom.
  4. Adresse locale: adresse de cette machine,soit numérique, soit nominative.
  5. Masque de réseau: en notation décimale avec points.
  6. Champ commentaires: à votre guise.
  7. protocole: SLIP, CSLIP, etc..
  8. MTU: nombre décimal.
Un exemple d'entrée /etc/net/diphosts pour un utilisateur SLIP distant peut-être:
Sfredm::145.71.34.1:145.71.34.2:255.255.255.0:SLIP uwalt:SLIP,296

qui décrit une liaison SLIP avec une adresse distante de 145.71.34.1 et un MTU de 296, ou bien:

Sfredm::145.71.34.1:145.71.34.2:255.255.255.0:SLIP uwalt:CSLIP,1006

qui décrit une liaison permettant la compression CSLIP avec un MTU de 1006.

Dès lors, tous les utilisateurs qui auront la permission d'avoir un accès IP statique doivent avoir une entrée dans /etc/diphosts et si vous voulez que les utilisateurs appelant un port particulier aient leur adresse allouée dynamiquement vous devez avoir une entrée pour le dispositif tty et ne pas configurer une entrée pour les utilisateurs. Vous devez vous rappeler de configurer au moins une entrée pour chaque tty de façon à ce que les utilisateurs entrant aient ait une configuration adéquate sans se soucier du modem sur lequel ils sont. Quand un utilisateur se branche, il reçoit une invite normale pour le login et le mot de passe, à laquelle il doit répondre par son ID user SLIP et son mot de passe. Si tout se passe bien, l'utilisateur ne voit pas de message spécial, il se mettra en mode SLIP pour effectuer la connexion, et sera configuré suivant les paramètres du fichier diphosts.

Serveur SLIP utilisant le paquetage dSLIP.

Matt Dillon, <dillon@apollo.west.oic.com> a rassemblé quelques programmes de gestion des connexions slip, aussi bien en entrée qu'en sortie. Cette collection est une collection de petits programmes et de scripts qui gèrent les connexions pour vous. Vous devrez posséder tcsh car au moins l'un des scripts en a besoin. Matt fournit une copie binaire de l'utilitaire expect car il est réclamé également par l'un des scripts. Il serait bon que vous ayez quelque expérience de expect pour que ce paquetage fonctionne pour vos liaisons, mais que cela ne vous rebute pas.

Matt a bien décrit dans le fichier README les instructions nécessaires, aussi je ne m'ennuyerai pas à les répéter.

Ce paquetage peut être obtenu sur: appolo.west.oic.com

/pub/linux/dillon_src/dSLIP203.tgz
ou bien: sunsite.unc.edu
/pub/Linux/system/Network/serial/dSLIP203.tgz

Lisez le fichier README et créez les entrées dans /etc/passwd et /etc/group avant de faire make install.

12.3 Utiliser le démon d'automontage - AMD

Cette section m'a été proposée par Mitch DSouza, et je l'ai incluse avec un minimum de changements. Merci Mitch.

Qu'est-ce qu'un automonteur et pourquoi l'utiliser ?

Un automonteur propose un moyen pratique de monter des systèmes de fichiers à la demande. Cela permet de réduire les charges du serveur et du client et aussi apporte une grande souplesse même avec des montages autres que NFS. Il offre aussi un mécanisme de redondance grâce auquel on peut passer à un serveur secondaire si le primaire est inaccessible. Un autre montage intéressant est appelé le montage union qui donne à l'automonteur la possibilité de fusionner plusieurs répertoires en un seul. La documentation doit être examinée en détail pour tirer pleinement avantage de sa puissance.

Quelques points importants à se rappeler - (sans ordre particulier) :

Où trouver AMD, le démon d'automontage

amd peut être obtenu à :

sunsite.unc.edu

/pub/Linux/system/Misc/mount/amd920824upl67.tar.gz

Il contient les binaires prêts à être installés, les sources complets et la documentation au format texinfo.

Exemple de configuration AMD

Vous ne configurez pas l'automonteur à partir du fichier /etc/fstab, qui doit déjà contenir les informations à propos de vos systèmes de fichiers. Tout est en fait géré par des commandes.

Pour monter deux systèmes de fichiers nfs en utilisant votre fichier /etc/fstab, vous devrez mettre les deux entrées suivantes :

server-1:/export/disk  /nfs/server-1  nfs  defaults
server-2:/export/disk  /nfs/server-2  nfs  defaults

Ce qui signifie que vous montez nfs server-1 et server-2 sur votre disque linux dans les répertoires /nfs/server-1 et /nfs/server-2.

Après avoir commenté ou détruit les lignes précédentes de votre fichier /etc/fstab, vous pouvez utiliser amd pour réaliser la même tâche en utilisant la syntaxe suivante :

/etc/amd -x all -l syslog -a /amd -- /nfs /etc/amd.server
|      | |    | |       | |     |  | |  | |             |
|      | |    | |       | |     |  | |  | |             |
`------' `----' `-------' `-----' -' `--' `-------------'
 |        |      |         |      |   |    |
 (1)      (2)    (3)       (4)    (5) (6)  (7)

où :

  1. Le chemin complet du binaire amd (évidement optionnel) sauf si votre variable $PATH pointe dessus, si c'est le cas tapez juste `amd'.
  2. `-x all' signifie trace maximum. Lire la documentation pour les autres niveaux de trace.
  3. `-l syslog' signifie enregistrer les messages via le démon syslog. Ce qui peut signifier les envoyer dans un fichier, ou dans une console inutilisée. Cette option (syslog) peut être remplacée par le nom d'un fichier. `-l foo' enregistrera dans un fichier nommé foo.
  4. `-a /amd' signifie utiliser le répertoire /amd comme répertoire temporaire pour les points d'automontage. Ce répertoire est créé automatiquement par amd et doit être détruit avant de lancer amd dans vos srcipts /etc/rc.
  5. `--' indique à getopt() d'arrêter d'essayer de trouver des options à la suite. C'est particulièrement utile pour passer l'option `type:=' sur la ligne de commande, sinon getopt() tentera de la décoder de manière incorrecte.
  6. `/nfs' est le point de montage nfs réel. A nouveau il est automatiquement créé et ne doit pas en général contenir de sous-répertoires sauf si l'option `type:=direct' est utilisée.
  7. La carte amd (un fichier) appelé `amd.server' contient les lignes :
    
    # /etc/amd.server
    /defaults    opts:=rw;type:=nfs
    server-1     rhost:=server-1;rfs:=/export/disk
    server-2     rhost:=server-2;rfs:=/export/disk
    

Une fois lancé et pendant l'exécution, vous pouvez demander l'état des points de montage avec la commande :

% amq -ms

Maintenant si vous tapez :

% ls /nfs

vous ne devriez voir aucun fichier. Par contre la commande :

% ls /nfs/server-1

montera la machine `server-1' automatiquement. Et voilà ! amd fonctionne. Une fois le délai par défaut écoulé, le répertoire sera automatiquement démonté. Votre fichier /etc/password peut contenir les entrées suivantes :

 ...
linus:EncPass:10:0:God:/nfs/server-1/home/linus:/bin/sh
mitch:EncPass:20:10:Mitch DSouza:/nfs/server-1/home/mitch:/bin/tcsh
matt:EncPass:20:10:Matt Welsh:/nfs/server-1/home/matt:/bin/csh

qui signifient que lorsque Linus, Matt, ou Mitch se connecteront leur répertoire de connexion sera automatiquement monté sur le serveur approprié et démonté quand ils se déconnecteront.

12.4 Utiliser Linux comme routeur

Linux fonctionne très bien comme routeur. Vous devez faire fonctionner un démon de routage comme gated, ou si vous avez des besoins très simples utiliser des routes codées en dur. Si vous utilisez un noyau récent (1.1.*) assurez-vous de répondre `y' à :

IP forwarding/gatewaying (CONFIG_IP_FORWARD) [y] y

quand vous compilez le noyau.

Le livre d'Olaf Kirch Network Administrators Guide traite du sujet du routage et de la mise en place de réseau. Vous pouvez le lire si vous avez besoin de plus d'information. Vous trouverez les références exactes dans la section `Documentation utile'.

12.5 NIS-Sun Network Information System

Il y a un url http://sunsite.unc.edu/mdw/HOWTO/NIS-HOWTO.html que vous devez lire si vous êtes intéressés par NIS. Il détaille comment obtenir, installer et configurer le système NIS pour Linux.


Previous Next Table of Contents