<!--  Traduction : Antoine LEVAVASSEUR    -->
<!--  levavass@efrei.fr			  -->
<!--  Fresne le plan, le 22 Octobre 1997 -->

<!doctype linuxdoc system>

<article>

<title>Linux PPP Howto
<author>par Robert Hart, hart@interweft.com.au
<date>Version 3.0, 31 mars 1997

<abstract>
(Adaptation française par Antoine Levavasseur <tt>levavass@efrei.fr</tt>, 
le 22 octobre 1997).
Ce document montre comment connecter votre PC Linux à un serveur PPP, comment
utiliser PPP pour relier deux réseaux locaux ensemble, et fournit une méthode
pour configurer votre machine Linux comme serveur PPP. Ce document fournit
également une aide pour déboguer les connections PPP qui ne fonctionnent pas.

<toc>

<p>
<bf>Copyright</bf>
<p>Ce document est distribué sous les contraintes de la GPL 
(GNU Public Licence).

<p>
<bf>Distribution</bf>
<p>
Le document original sera posté dans comp.os.linux.answers lorsque de 
nouvelles versions du document arriveront. Il est également disponible en 
HTML à :
<itemize>
<item><url url="http://sunsite.unc.edu/mdw/linux.html&num;howto"
name="Linux Howto Index">
<item><url
url="http://www.interweft.com.au/other/ppp-howto/ppp-howto.html"
name="PPP-HOWTO">
</itemize>

<p>
Les autres formats (SGML, ASCII, PostScript, DVI) sont disponibles à <url
url="ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/other-formats"
name="Howtos - other formats">.

<p>
Comme sunsite.unc.edu est très chargé, vous êtes encouragés à utiliser un
miroir plus proche de chez vous. En particulier la version française de ce
HOWTO est posté régulièrement dans fr.comp.os.linux.annonce, et est disponible
sur ftp.lip6.fr et http://www.freenix.fr/.

<p>
<bf>Remerciements</bf>

<p>
Un nombre important et croissant de personnes m'ont aidé à préparer ce 
document. Remerciements spéciaux à Al Longyear pour l'aide sur PPP lui-même
(si il y a des erreurs ici, ce sont les miennes et pas les siennes), Greg
Hankins (qui maintient les Howto Linux) et Debi Tackett (de Maximum Access.com)
pour ses nombreuses suggestions sur le style, l'organisation du contenu, la
logique et la clarté des explications.

<p>
Pour finir, je remercie les nombreuses personnes qui m'ont envoyé leurs 
commentaires par courrier électronique. Comme tous les auteurs de HOWTO,
la satisfaction d'aider est le seul salaire que nous recevons, et cela nous
suffit. En écrivant ce HOWTO, je rembourse d'une certaine façon la dette que je
- et tous les autres utilisateurs Linux - dois aux personnes qui écrivent et
maintiennent le système d'exploitation que nous avons choisi.

<bf>Traduction Française de ce document</bf>

<p>
La traduction du présent document PPP-Howto (et précédemment PPP-FAQ) était 
assurée par René Cougnenc. C'était l'un des premiers (si ce n'est le premier) 
utilisateur de Linux en France alors que ce n'était qu'un petit projet un peu 
fou lancé par Linus Torvalds. René Cougnenc a participé au développement
de Linux et a assuré la traduction de nombreux HOWTO et ouvrages sur Linux qui 
font encore référence. Si vous utilisez Linux aujourd'hui c'est sans doute un
peu grâce à lui... <newline>
Prendre ses pas dans la traduction de ce HOWTO était un peu délicat car
la barre était placée haut, et j'espère que le lecteur que vous êtes ne sera
pas déçu par mon travail. <newline>
Et si René nous entends là-haut, je suis sûr qu'il lèvera avec nous son verre
à la santé de notre système d'exploitation favori ! :-)
<p>
Enfin merci à Thomas Parmelan pour la relecture et les conseils sur la forme de
la version française de ce document.

<sect>Introduction<p>

PPP (Point to Point Protocol) est un mécanisme qui permet de faire fonctionner
IP (Internet Procotol) et tous les autres protocoles réseaux à travers une 
liaison série - qui peut être une connexion série directe (avec un câble 
null-modem), à travers une liaison par un telnet, ou encore une liaison 
utilisant les modems et les lignes téléphoniques (et bien sûr utilisant les 
lignes numériques comme RNIS). <p>

Avec PPP, vous pouvez connecter votre PC sous Linux à un serveur PPP et accéder
aux ressources réseau aux quelles le serveur est connecté (presque) comme si
vous étiez directement connecté à ce réseau. <p>

Vous pouvez également configurer votre PC Linux comme un serveur PPP, de cette
façon, d'autres ordinateurs peuvent appeler votre ordinateur et accéder aux
ressources de votre PC et/ou réseau local. <p>

Comme PPP est un système qui marche dans les deux sens, vous pouvez également
utiliser PPP sur deux PC Linux pour relier ensemble deux réseaux (ou un
réseau local à Internet), créant ainsi un réseau à large domaine
(WAN : Wide Area Network). <p>

Une différence majeure entre PPP et une connexion Ethernet est bien entendu
la vitesse - une connexion Ethernet standard offre à un débit maximal
théorique de 10 Mbs (Mega - millions de bits par seconde), alors qu'une 
liaison analogique par modem offre un maximum de 56 Kbs (kilo - millier de bits
par seconde). <p>

Par conséquent, selon le type de votre connexion PPP, il y aura des limitations
sur l'utilisation des applications et des services.

<sect1>Clients et Serveurs <p>

PPP est un protocole strictement symétrique; il n'y a (techniquement) aucune
différence entre la machine qui appelle et la machine qui est appelée. 
Cependant, pour des raisons de clarté, il est intéressant de penser en terme 
de <bf/serveur/ et <bf/client/. <p>

Quand vous appelez un site pour établir une connexion PPP, vous êtes un
<bf/client/. La machine sur laquelle vous-vous connectez est le <bf/serveur/.
<p>

Quand vous configurez une machine Linux pour répondre aux appels pour les 
connexion PPP, vous configurez un <bf/serveur/ PPP.<p>

Tous les PC Linux peuvent être à la fois serveur et client PPP - même en même
temps si vous avez plus d'un port série (et d'un modem si nécessaire).  
Comme décrit plus haut, il n'y a pas de réelle différence entre les
clients et les serveurs tant que l'on utilise PPP et que la connexion est
établie. <p>

Ce document référence la machine qui initie l'appel (qui le compose) comme
le <bf/CLIENT/, alors que la machine qui répond au téléphone, vérifie 
l'authentification de l'appel (en utilisant les noms utilisateurs, les mots de 
passe et éventuellement d'autres mécanismes) est référencée comme le 
<bf/SERVEUR/. <p>

L'utilisation de PPP comme client pour relier une ou plusieurs machines à
Internet est probablement celle qui intéresse une majorité de gens.
Ils utiliseront alors leur PC Linux comme client. <p>

La procédure exposée dans ce document va vous permettre d'établir et 
d'automatiser votre connexion à Internet. <p>

Ce document va également vous offrir un guide pour permettre de configurer
un <bf/serveur PPP/ sur votre PC Linux et relier ensemble deux réseaux 
(avec le routage complet) en utilisant PPP (cela est aussi appelé
une liaison WAN - wide area network).

<sect1>Différences entre les distributions Linux <p>

Il y a de nombreuses distributions Linux différentes qui on leurs propres 
idiosyncrasies et façons de faire les choses. <p>

En particulier, il y a deux manières différentes sur une machine Linux
(ou Unix) de démarrer, configurer ses interfaces et ainsi de suite. <p>

Il y <bf/l'initialisation BSD / et <bf/l'initialisation SysV system/. Si vous
consultez certains forums de discussion Unix, vous trouverez de temps en temps 
des guerres de religion entre les partisans de chacun des deux systèmes. Si
ce genre de chose vous plaît, allez donc les rejoindre pour gâcher de la bande 
passante avec eux ! <p>

Les distributions les plus utilisées sont sans doute :

<itemize>
<item>Slackware <newline>
qui utilise une initialisation système BSD 
<item>Red Hat (et son précédent associé Caldera) <newline>
qui utilise une initialisation SysV system (bien qu'un peu modifiée)
<item>Debian <newline>
qui utilise une initialisation SysV system
</itemize>

<p>
Les initialisations de type BSD conservent typiquement ces fichiers dans
<tt>/etc/</tt> et ces fichiers sont :

<code>
	/etc/rc
	/etc/rc.local
	/etc/rc.serial
		(et parfois d'autres fichiers)
</code>

<p>
Récemment, certaines initialisation systèmes BSD se mettaient à utiliser 
un répertoire <tt>/etc/rc.d/</tt> contenant les fichiers de démarrage
plutôt que de tout mettre dans <tt>/etc</tt>.

<p>

L'initialisation System V conserve ses fichiers d'initialisation dans les
répertoires <tt>/etc/</tt> ou <tt>/etc/rc.d</tt> et un certain nombre de
sous-répertoires de ces derniers.

<code>
drwxr-xr-x   2 root     root         1024 Jul  6 15:12 init.d
-rwxr-xr-x   1 root     root         1776 Feb  9 05:01 rc
-rwxr-xr-x   1 root     root          820 Jan  2  1996 rc.local
-rwxr-xr-x   1 root     root         2567 Jul  5 20:30 rc.sysinit
drwxr-xr-x   2 root     root         1024 Jul  6 15:12 rc0.d
drwxr-xr-x   2 root     root         1024 Jul  6 15:12 rc1.d
drwxr-xr-x   2 root     root         1024 Jul  6 15:12 rc2.d
drwxr-xr-x   2 root     root         1024 Jul 18 18:07 rc3.d
drwxr-xr-x   2 root     root         1024 May 27  1995 rc4.d
drwxr-xr-x   2 root     root         1024 Jul  6 15:12 rc5.d
drwxr-xr-x   2 root     root         1024 Jul  6 15:12 rc6.d
</code>

<p>
Si vous essayez de chercher où votre interface et les routes réseau associées
sont configurées, vous devez parcourir tous les fichiers pour parvenir à trouver
où sont les commandes correspondantes.

<sect1>Outils de configuration spécifiques aux distributions
<p>
Dans certaines installations (par exemple Red Hat et Caldera), il y a un
système de configuration des PPP sous X Window. Ce HOWTO ne 
traite pas de ces outils spécifiques aux distributions. Si vous avez
des problèmes avec ceux-ci, contactez directement les distributeurs !

<p>
Pour les utilisateurs de Red Hat 4.x, il y a maintenant un 
<url url="http://www.interweft.com.au/" name="Red Hat PPP-TIP"> dans la partie
Linux ressources et également chez  <url url="http://www.redhat.com/" 
name="Red Hat Software"> dans la partie support.

<sect>Adresse IP 
<p>
Tout matériel connecté à Internet doit avoir sa propre, et unique adresse IP.
Elle sont distribuées de façon centralisée par l'autorité désignée pour
chaque pays. 

<p>
Si vous êtes connectés par un réseau local (LAN) à Internet, <bf/VOUS DEVEZ/
utiliser une adresse IP de votre propre domaine d'adresses qui vous a
été assigné pour les ordinateurs et matériels de votre réseau local. Vous 
<bf/NE DEVEZ PAS/ prendre n'importe quelle adresse IP et l'utiliser 
lorsque vous vous connectez avec un autre réseau local (et à plus forte raison
Internet). Au pire ça ne marchera pas du tout et cela peut causer des ravages
puisque votre adresse IP 'volée' va interférer avec les communications d'un
autre ordinateur qui utilise déjà l'adresse IP que vous avez prise au hasard.

<p>
Remarquez que les adresses IP de ce document appartiennent (à part quelques
exceptions) aux adresses de réseaux non connectés qui sont réservées aux
réseaux qui ne sont pas (encore) connectés à Internet. (RFC1918)

<p>
Il y a des adresses IP qui sont spécifiquement destinées aux réseaux locaux qui
ne sont pas connectés à Internet. Ces adresses IP sont :

<itemize>
<item>Une Adresse Réseau de Classe A <newline>
10.0.0.0 (netmask 255.0.0.0)
<item>16 Adresses Réseau de Classe B <newline>
172.16.0.0 - 172.31.0.0 (netmask 255.255.0.0)
<item>256 Adresses Réseau de Classe C <newline>
192.168.0.0 - 192.168.255.0 (netmask 255.255.255.0)
</itemize>


<p>
Si vous avez un réseau pour lequel vous <bf/n'avez pas/ alloué d'adresse IP
auprès de l'autorité responsable de votre pays, vous devez utiliser une
des adresses réseau de la séquence précédente pour vos machines.

<p>
Ces adresses ne doivent <bf/jamais/ être utilisées sur Internet.

<p>
Cependant, elles peuvent être utilisées pour les réseaux locaux Ethernet sur la
machine qui est connectée à Internet. C'est parce que les adresses IP
sont en fait allouées aux interfaces réseau et non à l'ordinateur.
Ainsi, votre interface Ethernet peut utiliser 10.0.0.1 (par exemple),
et quand vous vous connecterez à Internet en utilisant PPP, votre interface PPP
récupérera une autre adresse IP (valide) du serveur. Votre PC sera connecté
à Internet alors que les autres ne le seront pas.

<p>
Cependant, en utilisant Linux, les capacités de IP Masquerading (aussi 
appelé NAT - Network Adress Translation) de Linux et du programme <bf/ipfwadm/,
vous pouvez connecter votre réseau local à Internet (avec quelques restrictions
sur les services), même si vous n'avez pas d'adresse IP valide pour
vos machines en Ethernet.

<p>
Pour plus d'informations sur le sujet, consulter le mini-HOWTO
IP Masquerade à <url url="http://sunsite.unc.edu/mdw/HOWTO/mini/IP-Masquerade"
name="Linux IP Masquerade mini HOWTO">

<p>
Pour la plupart des utilisateurs, qui sont connectés avec une seule machine
à leur fournisseur d'accès Internet (FAI) par PPP, obtenir une 
adresse IP (ou plus largement une adresse réseau) n'est pas nécessaire.

<p>
Si vous souhaitez connecter un petit réseau local à Internet, de nombreux 
FAI peuvent vous fournir un sous-réseau dédié (une séquence spécifique 
d'adresses IP) sur leur espace d'adresses IP existant.
Alternativement, utilise IP masquerading.

<p>
Pour les utilisateurs qui connectent un seul PC à Internet, la plupart
des FAI utilise l'allocation <bf/dynamique/ des adresses IP.
C'est pendant le processus de connexion que le service PPP que vous contactez 
va indiquer à votre machine quelle adresse IP utiliser pour l'interface
PPP pendant la session en cours. Cette adresse ne sera pas forcément la même à 
chaque fois que vous vous connecterez à votre FAI.

<p>
Avec les adresses IP dynamiques, vous <bf/n'avez pas/ la même adresse IP à
chaque fois que vous vous connectez. Cela a des répercussions sur les
applications de type serveur de votre machine Linux telles que Sendmail,
ftpd, httpd et d'autres. Ces services supposent que l'ordinateur offrant
le service soit accessible tout le temps à la même adresse IP (ou au moins
au même nom de domaine qualifié, et que la résolution des noms par DNS du nom 
vers l'adresse IP est disponible).

<p>
Les limitations de service dues aux allocations dynamiques d'adresses IP
(et les façons d'éviter cela, quand c'est possible) sont décrites plus
loin.

<sect>Buts de ce document
<sect1>Mettre en place un client PPP
<p>
Ce document fournit un guide aux personnes qui souhaitent utiliser Linux et PPP
pour appeler un Serveur PPP et configurer une connexion IP avec PPP. Cela
suppose que PPP ait été compilé et installé sur votre machine Linux (mais
une brève description de la reconfiguration/recompilation de votre noyau avec
le support PPP est fournie).

<p>
Bien que <tt/dip/ (la manière standard de créer des connexions SLIP) puisse 
être utilisé pour mettre en place un connexion PPP, les scripts <tt/dip/ sont
généralement un peu complexes. Pour cette raison, ce document ne traite pas
l'utilisation de <tt/dip/ pour lancer une connexion PPP.

<p>
A la place, ce document décrit les programmes standard Linux/PPP (chat/pppd).

<sect1>Relier deux Réseaux locaux ou un réseau local à Internet grâce à PPP
<p>
Ce document donne des informations (de base) pour relier deux réseaux locaux
entre eux ou un réseau local à Internet grâce à PPP.

<sect1>Configurer un serveur PPP
<p>
Ce document fournit un guide pour configurer votre PC Linux comme serveur PPP
(autorisant d'autres personnes à appeler votre PC Linux et établir une
connexion PPP).

<p>
Notez qu'il y a un grand nombre de façons de configurer Linux comme
serveur PPP. Ce document donne une méthode - qui est utilisée par l'auteur pour
configurer quelques petits serveurs PPP (chacun avec 16 modems).

<p>
Cette méthode est connue pour fonctionner correctement. Cependant, ce n'est pas 
forcément la meilleure méthode.

<sect1>Utiliser PPP avec une connexion Null-Modem directe
<p>
Ce document offre un bref aperçu d'utilisation de PPP pour relier deux PC
Linux avec un câble null modem. Il est possible de relier d'autres Systèmes
d'exploitation à Linux de cette façon également. Pour ce faire, utiliser la 
documentation du système d'exploitation pour lequel vous êtes intéressé.

<sect1>Pour le moment ce document ne couvre pas...
<p>
<itemize>
<item>La compilation du daemon PPP<newline>
Regarder la documentation fournie avec la version de <tt/pppd/ que vous 
utilisez.

<item>Connecter et configurer un modem sous Linux (en détail) <newline>
Regarder le Serial-HOWTO et pour les initialisations spécifiques au modem, voir
<url url="http://www.in.net/info/modems/index.html" name="Modem Setup
Information"> des informations qui pourraient vous aider à configurer votre
modem.

<item>Utiliser <tt/dip/ pour faire des connexion PPP<newline>
utiliser <tt/chat/ à la place

<item>Utiliser <tt/socks/ ou IP Masquerading<newline>
Il y a d'excellents documents qui couvrent déjà ces paquetages.

<item>Utiliser EQL pour regrouper deux modems pour une seule connexion PPP.

<item>Les méthodes de connexion PPP spécifiques aux distributions (comme
l'outil de configuration réseau de la Red Hat 4.x).
Voir votre distribution pour la documentation sur les méthodes utilisées.

<item>Le nombre croissant d'outils disponibles pour automatiser les connexions
PPP <newline>
Voir la documentation appropriée.
</itemize>

<sect>Versions des logiciels traités
<p>
Ce HOWTO suppose que vous utilisez un noyau Linux 1.2.X avec le programme PPP
2.1.2 ou Linux 1.3.X/2.0.x et PPP 2.2.

<p>
Au moment de la rédaction, la dernière version officielle de PPP disponible est
ppp-2.2.0f. La nouvelle version (ppp-2.3) est encore en beta.

<p>
Il est possible d'utiliser PPP 2.2.0 avec le noyau 1.2.13. Cela nécessite des
patchs pour le noyau. Il est recommandé aux utilisateurs du noyau 1.2.13 de 
passer à ppp-2.2 puisqu'il inclut quelques extensions et corrections de bogues.

<p>
<bf/Vous devez également être particulièrement vigilant et ne pas utiliser
le programme PPP 2.1.2 avec un noyau Linux 2.0.X./

<p>
Veuillez remarquer que ce document <bf/ne traite pas/ des problèmes venant de
l'utilisation de modules chargeables pour votre noyau Linux 2.0.x. Consulter
le mini-HOWTO kerneld et la documentation kerneld/module 2.0.x (dans les sources
de Linux 2.0.x à <tt>/usr/src/linux/Documentation/..</tt>).

<p>
<bf>Puisque ce document est destiné à aider les nouveaux utilisateurs, il est
fortement recommandé d'utiliser une nouvelle version du noyau Linux et
la version appropriée de PPP qui sont connus pour fonctionner ensemble.</bf>

<sect>D'autres documents utiles/importants
<p>
Je conseille aux utilisateurs de lire :
<itemize>
<item>la documentation accompagnant le paquetage PPP;
<item>les pages de manuel de <tt/pppd/ et <tt/chat/; <newline>
(utiliser <tt/man chat/ et <tt/man pppd/ pour les lire)
<item>La page de configuration des modems - voir  <url
url="http://www.in.net/info/modems/index.html" name="Modem Setup
Information">
<item>Les excellents livres Unix/Linux publiés par O'Reilly and Associates.
(<url url=" http://www.ora.com/" name="O'Reilly and
Associates On-Line Catalogue">). Si vous êtes nouveau à Unix/Linux,
<bf/courez/ (ne marchez pas) au plus proche marchand de livres informatiques et
investissez dans un certain nombre d'entre eux immédiatement !
<item>La PPP-FAQ maintenue par Al Longyear, disponible sur  <url
url="ftp://sunsite.unc.edu/pub/Linux/docs/faqs" name="Linux
PPP-FAQ">.<newline>
Elle contient un grand nombre d'informations utiles sous forme de 
questions/réponses indispensable lorsque l'on cherche pourquoi PPP ne fonctionne
pas (correctement).
<item>Le nombre croissant de livre Linux venant des différents éditeurs et 
auteurs; <newline>
Vous êtes encouragés à vérifier la date de parution de ces livres. Le
développement et la distribution de Linux tendent à être plutôt rapides,
alors que la mise à jour des livres est (généralement) bien plus lente !
Acheter un excellent livre (et il y en a) qui est déjà dépassé entraine
une confusion et une frustration considérable pour les nouveaux utilisateurs.
</itemize>

<p>
Le meilleur point de départ pour la documentation Linux est  <url
url="http://sunsite.unc.edu/mdw/" name="The Linux Documentation Project
Home Page">. Les HOWTO sont mis à jour raisonnablement régulièrement.

<p>
Bien que vous puissiez utiliser ce document pour créer votre liaison PPP sans
lire aucun de ces documents, vous devriez avoir une bien meilleure 
compréhension de ce qu'il se passe si vous le faites ! Vous pouvez également
exposer vous-même vos problèmes (ou du moins poser les questions les plus 
intelligentes sur les groupes de discussion comp.os.linux... ou 
fr.comp.os.linux/unix... ou les mailing list Linux).

<p>
Ces documents (ainsi que quelques autres, comme les RFCs correspondants)
fournissent des explications complémentaires et plus détaillées que ce qui est
possible dans les HOWTO.

<p>
Si vous connectez un réseau local à Internet avec PPP, vous avez besoin de 
connaître un certain nombre de choses sur les réseaux TCP/IP. En complément
des documents précédents, vous trouverez dans les livres O'Reilly
<tt>&dquot;</tt>TCP/IP Network Administration<tt>&dquot;</tt> et
<tt>&dquot;</tt>Building Internet Firewalls<tt>&dquot;</tt> un bénéfice
considérable !

<sect1>Les Mailing Listes utiles
<p>
Il y a de nombreuses mailing listes (listes de diffusion) Linux qui servent de 
moyen de communication entre les utilisateurs dans de nombreux domaines. 
Souscrivez absolument à celles qui vous intéressent pour donner votre point 
de vue.

<p>
<bf/Remarques de bon sens/: certaines listes sont spécifiquement destinés au
utilisateurs "experts" et/ou à certains sujets spécifiques. Même si personne 
ne se plaindra que vous soyez voyeur (souscrire sans poster de messages),
vous recevrez certainement des commentaires chauds (voire des flammes) si
vous postez des questions de débutant dans les listes innappropriées.

<p>
Ce n'est pas parce que les utilisateurs gourous détestent les nouveau 
utilisateurs, mais parce que ces listes sont là pour contenir des remarques 
spécifiques à un certain niveau de difficulté.

<p>
Vous êtes largement encouragés à souscrire librement à différentes listes
mais faites absolument des commentaires qui cadrent avec le sujet (et le
niveau) de la liste !

<p>
Un bon point de départ pour les mailing-list Linux est 
<url url="http://summer.snu.ac.kr/~djshin/linux/mail-list/index.shtml"
name="Linux Mailing List Directory">


<sect>Présentation de ce qui doit être fait pour faire fonctionner PPP comme client
<p>
Ce document contient un grand nombre d'informations - qui augmente à chaque 
version !

<p>

Par conséquent, cette section a pour but de fournir une présentation concise
des actions pour connecter votre système Linux comme client à un serveur PPP.

<sect1>Obtenir/installer les programmes
<p>
Si votre distribution Linux ne contient pas les programmes PPP, vous
devez les obtenir sur  <url 
url="ftp://sunsite.unc.edu/pub/Linux/system/Network/serial/ppp/ppp-2.2.0f.tar.gz"
name="the Linux PPP daemon">
 
<p>
C'est la dernière version officielle lors de la rédaction du document.
Cependant, prenez la dernière version disponible sur ce site (ppp-2.3 était
en béta lors de la rédaction de ce document et devrait sortir bientôt).

<p>
Le paquetage PPP contient les instructions sur la façon de compiler et
d'installer le logiciel <bf>donc ce HOWTO n'en parlera pas</bf>. !

<sect1>Compiler le support PPP dans le noyau
<p>
L'installation de PPP Linux se divise en deux parties
<itemize>
<item>le daemon PPP mentionné ci-dessus
<item>le support PPP dans le noyau
</itemize>

<p>
De nombreuses distributions semblent fournir un support PPP dans les noyaux
installés par défaut, mais certaines ne le font pas.

<p>
Si lors du boot, le noyau donne un message ressemblant à :

<code>
PPP Dynamic channel allocation code copyright 1995 Caldera, Inc.
PPP line discipline registered.
</code>

<p>
Votre noyau à le support PPP compilé.

<p>
Toutefois, vous devez recompiler votre propre noyau quelque soit votre 
distribution pour fournir l'utilisation la plus efficace possible des ressources
disponibles et de votre configuration matérielle personnelle. Il est bon de 
savoir que le noyau ne peut être swappé hors de la mémoire. Avoir un noyau le 
plus petit possible est donc intéressant surtout pour une machine limitée en 
mémoire.

<p>
Ce document fournit les instructions minimales pour la re-compilation du noyau
à la section <ref id="Configuration du noyau" 
name="Configurer votre noyau Linux">.

<p>
Pour plus de détails, voir le Kernel-HOWTO à <url
url="http://sunsite.unc.edu/mdw/HOWTO/Kernel-HOWTO.html" name="The Linux
Kernel HOWTO">

<sect1>Obtenir les informations pour votre fournisseur d'accès à Internet
<p>
Il y a presque une infinité de manières de configurer un serveur PPP. Pour se
connecter chez votre fournisseur d'accès (ou un serveur PPP pour accéder à
votre intranet), vous devez obtenir des informations sur la façon dont le 
serveur fonctionne.

<p>
Puisque vous utilisez Linux, vous pourriez avoir quelques difficultés avec
le support de certains FAI (et les serveurs Intranet d'entreprise) qui ne 
connaissent que les clients MS-Windows.

<p>
Toutefois, un nombre croissant de FAI utilisent Linux pour offrir leur service 
- et Linux pénètre également l'environnement industriel, vous devriez réduire 
ainsi les chances de rencontrer des problèmes.

<p>
La section <ref id="Info Serveur" name="Fournir les informations dont vous avez
besoin pour votre serveur PPP"> vous explique ce dont vous devez savoir sur
le serveur PPP sur lequel vous vous connectez et comment obtenir les
informations dont vous avez besoin.

<sect1>Configurer votre modem et votre port série
<p>
Pour se connecter à un serveur PPP et obtenir le meilleur taux de transfert
possible, votre modem doit être configuré correctement.

<p>
De la même façon, les ports série de votre modem ainsi que votre ordinateur 
doivent être configurés correctement.

<p>
La section <ref id="Modem" name="Configurer votre modem et votre port série">
fournit des informations à ce sujet.

<sect1>Mettre en place la résolution de noms (DNS)
<p>
En plus des fichiers qui lancent PPP et automatisent la connexion sur le
serveur PPP, il y a un grand nombre de fichiers de configuration qui
sont mis en place pour que votre ordinateur puisse résoudre les noms comme
<tt/www.interweft.com.au/ vers l'adresse IP qui est réellement utilisée
pour contacter cet ordinateur. Ces fichiers sont : 

<itemize>
<item><tt>/etc/resolv.conf</tt>
<item><tt>/etc/host.conf</tt>
</itemize>

<p>
Voir la section <ref id="DNS" name="Configurer la résolution de nom vers l'adresse">
pour une configuration détaillée de cela.

<p>
En particulier, vous <bf/n'avez pas besoin/ de lancer un serveur de nom sur 
votre PC Linux pour le connecter à Internet (sauf si vous le souhaitez).
Tout ce dont vous avez besoin est de connaître l'adresse IP d'au moins l'un
des serveurs de noms que vous pouvez utiliser (plutôt celui de votre 
fournisseur d'accès).

<sect1>PPP et les privilèges root
<p>
Puisqu'établir une liaison PPP entre votre ordinateur Linux et un autre 
serveur PPP nécessite la manipulation des périphériques réseau (l'interface 
PPP est une interface réseau) et des tables de routages du noyau, <tt/pppd/ 
nécessite les privilèges <bf/root/.

<p>
Pour des détails là-dessus, voir la section <ref id="root" name="Utiliser
PPP et les privilèges root">.

<sect1>Vérifier les fichiers de votre distribution PPP et configurer les options de PPP
<p>
Il y a un certain nombre de fichiers de configuration et d'appel qui doivent
être configurés pour rendre PPP opérationnel. Des exemples sont fournis 
avec la distribution de PPP et cette section montre quels fichiers il doit y 
avoir :

<code>
/etc/ppp/options
/etc/ppp/scripts/ppp-on
/etc/ppp/scripts/ppp-on-dialer
/etc/ppp/options.tpl
</code>

<p>
Vous devrez créer des fichiers supplémentaires en fonction de ce que
vous souhaitez exactement utiliser avec PPP :

<code>
/etc/ppp/options.ttyXX
/etc/ppp/ip-up
/etc/ppp/pap-secrets
/etc/ppp/chap-secrets
</code>

<p>
En plus, le daemon PPP peut traiter un grand nombre d'options en ligne de
commande et il est important d'utiliser les bonnes; ainsi cette section
montre les options standard de PPP et vous aide à choisir les options que 
vous utiliserez.

<p> Pour les détails à ce sujet, voir en section <ref id="options" name=
"Configurer les fichiers de connexion de PPP">.

<sect1>Si votre serveur PPP utilise PAP (Password Authentication Protocol)
<p>
De nombreux fournisseurs d'accès et serveurs PPP utilisent PAP. Si votre
serveur <bf/n'a pas/ besoin d'utiliser PAP (si vous pouvez vous connecter
à la main et recevoir les messages textes de nom utilisateur/mot de passe
il n'utilise pas PAP), vous pouvez tranquillement ignorer cette section.

<p>
Plutôt que se connecter dans de tels serveurs en utilisant le nom utilisateur
et le mot de passe quand vous êtes interrogés par le serveur pour les entrer,
un serveur PPP utilisant PAP n'a pas besoin de login basé sur du texte.

<p>
Les informations d'authentification de l'utilisateur sont échangées à la place
comme partie prenante du protocole de contrôle de connexion qui est la 
première partie de l'établissement d'une liaison PPP.

<p>
La section <ref id="pap" name="Si votre serveur PPP utilise PAP
(Password Authentification Protocol)"> fournit des informations sur les
fichiers dont vous avez besoin pour établir une connexion PPP en utilisant
PAP.

<sect1>Se connecter au serveur PPP à la main
<p>
Une fois les fichiers de base configurés, c'est une bonne idée que d'essayer 
ceux-ci en se connectant (avec <tt/minicom/ ou <tt/seyon/) et de lancer 
<tt/pppd/ sur votre PC Linux à la main.

<p>
Voir la section <ref id="manual" name="Configurer une connexion PPP à la main">
pour des détails complets.

<sect1>Automatiser votre connexion PPP
<p>
Une fois que vous pouvez vous connecter à la main, vous allez maintenant
commencer à configurer les scripts qui vont automatiser la mise en place de la
connexion.

<p>
La section <ref id="automatiser" name="Automatiser votre connexion - Créer 
les scripts de connexion"> couvre la configuration des fichiers nécessaires,
et la mise en place des scripts et du processus de login avec le serveur PPP,
ainsi que des détails complets sur <tt/chat/.

<p>
Cette section traite des scripts d'authentification du nom utilisateur/mot
de passe ainsi que des scripts d'authentification pour les serveurs PAP/CHAP.

<sect1>Terminer la connexion
<p>
Une fois que votre connexion est activée et fonctionne, vous devez pouvoir
désactiver la liaison.

<p>
Consultez la section <ref id="off" name="Terminer une connexion PPP">.

<sect1>Si vous avez des problèmes
<p>
De nombreuses personnes ont des problèmes pour faire fonctionner PPP 
directement. Les différences entre les serveurs PPP et la façon dont il faut 
configurer la connexion sont énormes. De plus, PPP a de nombreuses options -
et certaines combinaisons d'entre elles ne fonctionnent absolument pas 
ensemble.

<p>
En plus des problèmes de journalisation et de démarrage du service PPP, il y a 
des problèmes liés aux modems et aux lignes de téléphones qui s'ajoutent !

<p>
La section <ref id="problemes" name="Résoudre les problèmes"> fournit
des informations de base au sujet des erreurs classiques, et la façon de les
isoler et de les corriger.

<p>
Elle <bf/n'est toutefois pas/ destinée à offrir plus que les informations de 
base. Al Longyear maintient la PPP-FAQ qui contient bien plus d'informations à 
ce sujet !

<sect1>Une fois que la connexion est lancée
<p>
Une fois que la liaison PPP est opérationnelle (spécifiquement, une fois que les
trames IP fonctionnent), <tt/pppd/ peut lancer automatiquement
(comme utilisateur <tt/root/) un script pour accomplir n'importe quelle 
fonction qu'un script peut accomplir.

<p>
La section <ref id="ip-up" name="Une fois que la connexion est lancée">
fournit des informations sur le script <tt>/etc/ppp/ip-up</tt>, les paramètres
que PPP lui envoie et comment l'utiliser pour récupérer votre courrier
électronique de votre compte de votre fournisseur d'accès, ou envoyer
les messages en attente de transmission sur votre machine.

<sect1>Problèmes avec les services IP standards et l'adresse IP dynamique de la 
liaison PPP.
<p>
Comme cela est mentionné dans l'introduction, les adresses IP dynamiques 
affectent la capacité de votre PC Linux à agir comme un serveur sur Internet.

<p>
La section <ref id="dynamic-serveur" name="Problèmes avec les services IP 
standard et l'adresse IP dynamique de la liaison PPP"> fournit des informations
sur les (principaux) services affectés et ce que vous pouvez faire (si c'est 
possible) pour contourner cela.

<sect>Configurer votre noyau Linux <label id="Configuration du noyau">
<p>
Pour utiliser PPP, votre noyau Linux doit être compilé avec le support PPP.
Récupérez le code source de votre noyau Linux si vous ne l'avez pas encore -
il se situe dans <tt>/usr/src/linux</tt> dans un système de fichiers Linux
standard.

<p>
Vérifiez ce répertoire - de nombreuses distributions installent les sources
(fichiers et répertoires) pendant leur processus d'installation.

<p>
Au démarrage, votre noyau écrit une grande quantitée d'informations. Parmi
elles, est indiqué si le noyau contient le support PPP.
Pour afficher ces informations, regardez votre fichier syslog, ou utilisez
<tt/dmesg | less/ pour afficher ces informations à l'écran. Si votre noyau 
contient le support PPP, vous verrez quelques lignes du genre

<code>
PPP Dynamic channel allocation code copyright 1995 Caldera, Inc.
PPP line discipline registered.
</code>

<p>
(pour les noyau Linux version 2.0.x)

<p>
Les sources du noyau Linux sont disponibles par ftp à <tt/sunsite.unc.edu/ ou
ses nombreux miroirs, en particulier <tt/ftp.lip6.fr/.

<sect1>Installer les sources du noyau
<p>
La suite regroupe de brèves instructions pour obtenir et installer les sources
du noyau Linux. Des informations complètes sont disponibles a  <url
url="http://sunsite.unc.edu/mdw/HOWTO/Kernel-HOWTO.html" name="The Linux
Kernel HOWTO">.

<p>
Pour installer et compiler le noyau Linux vous devez être <tt/root/.

<enum>
<item>Changer de répertoire vers <tt>/usr/src/</tt> <newline>
<tt>cd /usr/src/</tt>
<item>Vérifier dans <tt>/usr/src/linux</tt> pour voir si les sources sont
déjà installées.
<item>Si vous n'avez pas les sources, récupérez les à <url
url="ftp://sunsite.unc.edu/pub/Linux/kernel/v2.0" name="Linux kernel
source directory"> ou sur un miroir plus proche comme <tt/ftp.lip6.fr/.
<newline>
Si vous cherchez une version plus ancienne du noyau (comme la 1.2.X),
elles sont conservées dans  
<url url="ftp://sunsite.unc.edu/pub/Linux/kernel/old"
name="Old Linux kernel source directory">. 
<item>Choisissez le noyau approprié - généralement le plus récent
disponible est le meilleur. Le récupérer et mettre le fichier tar dans 
<tt>/usr/src</tt>.<newline>
<bf/Remarque/: un fichier 'tar' est une archive - parfois compressée (comme le
sont les fichiers tar des sources du noyau Linux) il contient de nombreux
fichiers répartis dans plusieurs répertoires. C'est l'équivalent Linux des
fichiers multi-répertoires sous MS-DOS.

<item>Si vous avez déjà les sources de Linux installées, mais que vous voulez
les mettre à jour, il faut effacer les anciens fichiers. Utiliser la
commande <newline>
<tt>rm -rf /usr/src/linux</tt>
<item>Maintenant décompresser et extraire les sources avec la commande<newline>
<tt>tar xzf linux-2.0.XX.tar.gz</tt>
<item>Maintenant, <tt>cd /usr/usr/linux</tt> et lire le fichier README. Il
contient une excellente explication de la façon de faire pour configurer et
compiler un nouveau noyau. Lisez ce fichier (c'est une bonne idée de 
l'imprimer pour en garder une copie sous la main quand vous compilerez votre
noyau jusqu'à ce que vous l'ayez fait suffisamment pour vous débrouiller
tout seul).
</enum>

<sect1>Connaître votre matériel
<p>
Vous <bf/DEVEZ/ savoir quelles cartes/périphériques vous avez dans votre PC
si vous commencer à recompiler votre noyau !!! Pour certains périphériques
(comme les cartes sons) vous devez également connaitre quelques paramètres
(comme les IRQ et les adresse I/O et des choses du genre).

<sect1>Compilation du noyau - le noyau Linux 1.2.13
<p>
Pour commencer le processus de configuration, suivre les instructions du
fichier README pour installer les sources correctement. Vous lancez le
processus de configuration du noyau avec

<tscreen><verb>make config</verb></tscreen>

<p>
Pour utiliser PPP, vous devez configurer le noyau pour inclure le support PPP
(PPP a besoin DE <tt/pppd/ ET DU support de PPP dans le noyau).

<code>
  PPP (point-to-point) support (CONFIG_PPP) [n] y
</code>

<p>
Répondre aux autres questions du <tt/make config/ en accord avec le matériel de
votre PC et les caractéristiques que vous souhaitez pour votre système 
d'exploitation Linux. Continuer ensuite à suivre les instructions de
compilation et d'installation du <tt/README/ pour votre nouveau noyau.

<p>
Le noyau 1.2.13 créait seulement 4 périphériques PPP. Pour les cartes séries
multiports, vous devez éditer les sources du noyau PPP pour avoir plus de 
ports. (Voir le fichier <tt/README.Linux/ accompagnant la distribution de 
PPP-2.1.2 pour des détails complets des éditions simples que vous devez
faire).

<p>
Remarque : la configuration du noyau 1.2.13 ne permet pas de revenir en
arrière - si vous faites une erreur en répondant à une des questions dans
le <tt/make config/ quitter avec CTRL-C et recommencer.

<sect1>Compilation du noyau Linux 1.3.x et 2.0.x
<p>
Pour Linux 1.3.x et 2.0.x, vous pouvez utiliser le même processus que pour 
Linux 1.2.13. De même, suivez les instructions du fichier <tt/README/ pour 
installer les sources correctement. Vous lancez la configuration du noyau avec

<tscreen><verb>make config</verb></tscreen>

<p>
Cependant, vous pouvez aussi utiliser 
<tscreen><verb>make menuconfig</verb></tscreen>

<p>
Qui fournit un système de configuration avec une aide en ligne et vous 
pouvez avancer et reculer dans la configuration.

<p>
Il y a aussi l'interface de configuration sous X-Window chaudement recommandée
<tscreen><verb>make xconfig</verb></tscreen>

<p>
Vous pouvez compiler le support PPP directement dans votre noyau ou sous la 
forme d'un module chargeable dynamiquement.

<p>
Si vous utilisez PPP occasionnellement, alors compiler le support PPP en 
module chargeable est recommandé. Avec <tt/kerneld/, votre noyau chargera
automatiquement le(s) module(s) nécessaires pour fournir le support PPP
quand vous lancerez une liaison PPP. Cela permet d'économiser une partie
de l'espace mémoire : le noyau ne peut être swappé, alors que les modules
chargeables sont automatiquement enlevés si ils ne sont pas utilisés.

<p>
Pour cela, vous devez activer le support des modules chargeables :
<code>
        Enable loadable module support (CONFIG_MODULES) [Y/n/?] y
</code>

Pour ajouter le support PPP à votre noyau, répondre à la question suivante :
<code>
        PPP (point-to-point) support (CONFIG_PPP) [M/n/y/?]
</code>

<p>
Pour un module chargeable, répondre <bf/M/, sinon pour le compiler directement
dans le noyau, répondre <bf/Y/.

<p>
A la différence du 1.2.13, le noyau 2.0.x crée les périphériques PPP au vol et
selon les besoins, et il n'y a absolument pas besoin de bricoler le source
pour augmenter le nombre de périphériques PPP.

<sect1>Remarque sur PPP-2.2 et <tt>/proc/net/dev</tt>
<p>
Si vous utilisez PPP-2.2, vous trouverez qu'un problème de la création
des périphériques PPP 'au vol' est qu'aucun périphérique n'est trouvé dans le
fichier <tt>/proc/net</tt> tant qu'un périphérique n'est pas créé avec le
lancement de <tt/pppd/ :

<code>
[hartr@archenland hartr]$ cat /proc/net/dev
Inter-|   Receive                  |  Transmit
 face |packets errs drop fifo frame|packets errs drop fifo colls carrier
    lo:  92792    0    0    0    0    92792    0    0    0     0    0
  eth0: 621737   13   13    0   23   501621    0    0    0  1309    0
</code>

<p>
Une fois que vous avez un (ou plus) services ppp lancés, vous verrez
des entrées comme celles-ci (sur un serveur PPP) :

<code>
[root@kepler /root]# cat /proc/net/dev
Inter-|   Receive                  |  Transmit
 face |packets errs drop fifo frame|packets errs drop fifo colls carrier
    lo: 428021    0    0    0    0   428021    0    0    0     0    0
  eth0:4788257  648  648  319  650  1423836    0    0    0  4623    5
  ppp0:   2103    3    3    0    0     2017    0    0    0     0    0
  ppp1:  10008    0    0    0    0     8782    0    0    0     0    0
  ppp2:    305    0    0    0    0      297    0    0    0     0    0
  ppp3:   6720    7    7    0    0     7498    0    0    0     0    0
  ppp4: 118231  725  725    0    0   117791    0    0    0     0    0
  ppp5:  38915    5    5    0    0    28309    0    0    0     0    0
</code>

<sect1>Considérations générales sur la configuration du noyau pour PPP
<p>
Si vous configurez votre PC Linux comme un serveur PPP, vous devez
activer le support IP Forwarding. Il est également nécessaire si vous voulez
utiliser Linux pour relier deux réseaux locaux entre eux ou un réseau local
à Internet.

<p>
Si vous reliez un réseau local à Internet (ou reliez deux réseaux entre eux),
vous devez être concernés par la sécurité. Ajouter le support pour IP
firewall dans votre noyau est alors sans doute obligatoire !

<p>
Vous aurez également besoin, d'utiliser IP Masquerade pour
relier un réseau local qui utilise les adresses IP non connectées mentionnées
plus haut.

<p>
Pour activer IP Masquerade et IP firewalling, vous <bf/DEVEZ/ répondre Oui
à la première question de <tt/make config/ :
<code>
Prompt for developement and/or incomplete code/drivers (CONFIG_EXPERIMENTAL)?
</code>

<p>
Bien que cela puisse sembler un peu bizarre aux nouveaux utilisateurs, je 
confirme que de nombreux utilisateurs utilisent les possibilités de IP 
Masquerading et de IP firewalling du noyau Linux 2.0.X sans problèmes.

<p>
Une fois que vous avez installé et booté votre nouveau noyau, vous pouvez 
commencer à configurer et à tester votre liaison PPP.

<sect>Fournir les informations dont vous avez besoin pour votre serveur PPP
<label id="Info Serveur">
<p>
Avant d'établir la connexion PPP avec un serveur, vous devez obtenir les
informations suivantes (de l'administrateur système/support utilisateur/
personnes gérant le serveur PPP) :
<itemize>
<item>Le numéro de téléphone à composer pour le service<newline>
Si vous êtes derrière un standard, vous avez aussi besoin du numéro qui vous
permet de sortir à l'extérieur du standard - c'est généralement le chiffre zéro
(0) ou neuf(9).

<item>Est-ce que le serveur utilise des adresse IP DYNAMIQUES ou STATIQUES ?
<newline>
Si le serveur utilise des adresses IP STATIQUES, vous devez savoir quelle
adresse IP utiliser à la fin de la connexion PPP. Si votre FAI
vous fournit une adresse de sous-réseau valide, vous devez connaître
le masque de sous-réseau à utiliser (netmask).<newline>

La plupart des FAI utilisent des adresses IP DYNAMIQUES. Comme cela est 
mentionné plus haut, cela a des impliquations sur les services que vous pouvez 
utiliser.<newline>

Cependant, même si vous utilisez des adresses IP STATIQUES, la plupart des 
serveurs PPP ne laisseront jamais (pour des raisons de sécurité) les clients
spécifier leur adresse IP car c'est un risque pour la sécurité. Vous <bf/devez/
connaître aussi cette information !

<item>Quel sont les adresses IP des serveur de noms des fournisseurs d'accès ?
<newline>
Il doit y en avoir au moins deux, même si un seul suffit.<newline>

Il peut y avoir un problème à ce niveau. Le service PPP de MS Windows 95
permet que l'adresse DNS soit transmise au client dans le processus de
connexion. Ainsi, votre fournisseur d'accès pourrait vous répondre que
vous n'avez pas besoin de l'adresse IP du serveur DNS. <newline>

Avec Linux, vous <bf/devez/ connaître l'adresse d'au moins un DNS. 
L'implémentation PPP de Linux ne permet pas de configurer dynamiquement
à la connexion l'adresse du serveur DNS - et ne pourra certainement jamais.
<newline>

<bf/Remarque/: bien que Linux (comme client PPP) ne peut pas recevoir d'adresse
DNS du serveur, il peut, en tant que serveur, envoyer l'information au client
en utilisant l'option <tt/dns-addr/ de pppd.

<item>Est-ce-que le serveur a besoin d'utiliser PAP/CHAP ? <newline>
Si tel est le cas, vous devez connaître le id et le secret que vous avez 
pour vous connecter. (c'est probablement votre nom utilisateur et le mot de
passe de votre fournisseur d'accès).

<item>Le serveur est-il un système Microsoft Windows NT et, dans ce cas,
utilise-t-il le système PAP/CHAP ? <newline>
De nombreux fournisseurs d'accès semblent utiliser MS-Windows NT de cette façon
pour améliorer la sécurité.
</itemize>

<p>
Attention à l'information suivante - elle risque d'être utile !

<sect>Configurer votre modem et votre port série <label id="Modem"> 
<p>
Vous devez vous assurer que votre modem est correctement configuré et que
vous savez sur quel port série il est branché.

<p>
<bf>Se souvenir que</bf> :
<itemize>
<item>DOS COM1: = Linux /dev/cua0 (et /dev/ttyS0)
<item>DOS COM2: = Linux /dev/cua1 (et /dev/ttyS1)<newline>
etc.
</itemize>

<p>
Il est également bien de se souvenir que si vous avez 4 ports séries, la 
configuration standard d'un PC est d'avoir COM1 et COM3 partageant IRQ4 et 
COM2 et COM4 partageant IRQ3.

<p>
Si vous avez des périphériques sur vos ports séries qui partagent une IRQ avec 
votre modem vous allez avoir des problèmes. Vous devez vous assurer que le
port série de votre modem est sur sa propre et unique IRQ. De nombreuses 
cartes séries modernes (et les ports séries des cartes mères de bonne qualité)
permettent de changer les IRQ des ports série.

<p>
Si vous utilisez le noyau Linux 2, vous pouvez afficher des IRQ actuellement 
utilisés avec <tt>cat /proc/interrupts</tt>, qui produira une sortie 
ressemblant à :
<code>
 0:    6766283   timer
 1:      91545   keyboard
 2:          0   cascade
 4:     156944 + serial
 7:     101764   WD8013
10:     134365 + BusLogic BT-958
13:          1   math error
15:    3671702 + serial
</code>

<p>
Cela montre que le le port série en IRQ4 (une souris) et le port série en IRQ15
(un modem permanent basé sur PPP pour une liaison Internet). (Il y a également
un port série sur le port COM2, IRQ3 et COM4 est dans l'IRQ14, mais comme ils
ne sont pas utilisés, ils ne sont pas affichés).

<p>
Avertissement - vous devez vous rendre compte de ce que vous faites lorsque 
vous voulez jouer avec
vos IRQ ! Non seulement, vous devez ouvrir votre ordinateur, retirer vos cartes
et jouer avec les jumpers, mais vous devez savoir ce qu'il y a sur chaque IRQ.
Dans mon cas, j'ai un PC totalement SCSI, et j'ai donc désactivé les
interfaces IDE de la carte-mère qui utilisent normalement les IRQ14 et 15 !

<p>
Je tiens également à préciser que si votre PC utilise un autre système 
d'exploitation, changer les IRQ pourrait bien signifier que votre OS ne bootera
plus correctement, ou plus du tout !

<p>
Si vous déplacez vos ports séries vers des IRQ non-standard, vous devez
spécifier à Linux quel IRQ utilise chaque port. <tt/setserial/ permet de 
le faire, et de préférence lors du processus de lancement dans <tt/rc.local/
ou <tt/rc.serial/ qui est appelé dans <tt/rc.local/ ou comme une partie de
l'initialisation SysV system. Pour la machine présentée ci-dessus, les 
commandes utilisées sont
<code>
/bin/setserial -b /dev/ttyS2 IRQ 11
/bin/setserial -b /dev/ttyS3 IRQ 15
</code>

<p>
Toutefois, si vous utilisez le module série chargé dynamiquement au besoin avec
le processus <tt/kerneld/, vous ne pouvez pas définir et perdre les IRQ à chaque
redémarrage. Si le module série est effacé, Linux perds alors les
configurations spéciales.

<p>
Donc, si vous chargez le module série à la demande, vous devez reconfigurer
les IRQ à chaque fois qu'il est chargé.

<sect1>Remarque au sujet des ports séries et des capacité de vitesse
<p>
Si vous utilisez un modem haut débit (externe) (14.400 Bits par seconde ou 
plus), votre port série doit être capable de suivre le débit qu'un tel modem 
est capable de produire, en particulier si le modem compresse les données.

<p> Cela demande que votre port série utilise un UART(Universal Asynchronous
Receiver Transmitter) moderne comme un 16550(A). Si vous utilisez une
vieille machine (ou une vieille carte série), il est tout à fait possible que
votre port série ait seulement un UART 8250, ce qui amènera des problèmes
considérables avec un modem haute vitesse.

<p>
Utiliser la commande
<tscreen><verb>setserial -a /dev/ttySx</verb></tscreen>

<p>
Pour que Linux vous affiche le type d'UART que vous avez. Si vous n'avez pas un
UART de type 16550, acheter une nouvelle carte série (disponible pour moins de
300 F). Quand vous acheterez une nouvelle carte, assurez vous que vous pouvez
changer les IRQ !

<p>
Remarque : les premières versions des puces UART 16550 avaient une erreur. Elle
a été rapidement découverte et une mise à jour de la puce est sortie - l'UART
16550A. Un nombre relativement faible de puces erronées ont cependant été mises 
en circulation. Ça serait de la malchance que d'un récupérer une, en particulier
sur certaines cartes d'occasion, mais il suffit de chercher la réponse qui 
s'appelle 16550A.

<sect1>Noms des ports série
<p>
Historiquement, Linux utilise les périphériques <tt/cuaX/ pour les appels 
sortants et <tt/ttySx/ pour les appels entrants.

<p>
Le code du noyau a eu besoin de changer cela dans la version 2.0.x du noyau,
et vous devez maintenant utiliser <tt/ttySx/ pour les appels entrants et 
sortants. Cela semble annoncer que les noms de périphériques <tt/cuaX/
devraient disparaître dans les futures versions du noyau.

<sect1>Configuration de votre modem
<p>
Vous devez configurer votre modem correctement pour PPP - pour cela,
<bf/LISEZ LE MANUEL DE VOTRE MODEM/ ! La plupart des modems ont <bf/une 
configuration par défaut en usine/ avec les options requises par PPP.
La configuration minimale spécifie :
<itemize>
<item>Contrôle de flux matériel (RTS/CTS) (<tt>&amp;</tt>K3 sur les modems 
Hayes)
</itemize>
<p>
Les autres paramètres (en commandes Hayes standard) que vous devez vérifier 
sont :
<itemize>
<item>La commande E1 Echo ON (nécessaire pour que <tt/chat/ fonctionne)
<item>S0=0 Auto Answer OFF (à moins que vous ne vouliez que votre modem réponde
au téléphone)
<item><tt>&amp;</tt>C1 Carrier Detect ON seulement après la connexion
<item><tt>&amp;</tt>S0 Data Set Ready (DSR) toujours ON
<item>(variable) Data Terminal Ready
</itemize>

<p>
Un site fournit la configuration des modems pour une variété de fabricants
et de modèles de modems croissante à <url 
url="http://www.in.net/info/modems/index.html" name="Modem setup information">
qui devrait vous simplifier la configuration.

<p>
Il est aussi intéressant de vérifier comment fonctionne l'interface série entre
votre ordinateur et votre modem. La plupart des modems modernes vous 
permettent d'utiliser l'interface série à une vitesse FIXE permettant à 
l'interface avec la ligne téléphonique de changer de vitesse pour atteindre
la plus haute vitesse que les deux modems peuvent supporter.

<p>
Cela s'appelle l'opération de division de la vitesse. Si votre modem le 
supporte, bloquer l'interface série du modem à la vitesse disponible la
plus rapide (d'habitude 115.200 bauds mais parfois 38.400 pour les modems
14.400).

<p>
Utiliser les outils de communication (c.-à-d. <tt/minicom/ ou <tt/seyon/) pour 
accéder à la configuration de votre modem, et l'adapter à ce qui est nécessaire 
à PPP. De nombreux modems renvoient leurs réglages courants après la commande
AT<tt>&amp;</tt>V, mais vous devez consulter le manuel de votre modem.

<p>
Si vous avez complètement modifié les réglages, vous pouvez repartir sur des
bases saines (généralement) en envoyant AT<tt>&amp;</tt>F - ça retourne aux
réglages usine. (Pour la majorité des modems que j'ai rencontré, les réglages
usine on tout ce qu'il faut pour faire du PPP - mais vous devez vérifier).

<p>
Un fois que vous avez la commande nécessaire pour configurer votre modem, 
écrivez-là.
Vous devez maintenant prendre une décision : vous pouvez stocker ces paramètres
dans la mémoire non-volatile de votre modem, comme cela vous pourrez la 
relancer en envoyant une commande AT appropriée. Alternativement, vous pouvez
passer le paramétrage correct à votre modem lors du processus de connexion de
PPP.

<p>
Si vous utilisez uniquement votre modem sous Linux pour appeler votre 
FAI ou un serveur d'entreprise, la manière la plus simple est
de sauver la configuration de votre modem dans la mémoire non-volatile.

<p>
D'un autre coté, si votre modem est utilisé par d'autres applications et
systèmes d'exploitation, il est plus sûr de passer ces informations au modem
à chaque appel que vous passez, comme cela, c'est sûr que le modem sera bien
configuré lors de l'appel. (Cela a aussi l'avantage de conserver la
ligne de configuration du modem au cas où le modem perdrait le contenu de sa
NV-RAM, ce qui peut parfois arriver).

<sect1>Remarque sur le contrôle de flux série
<p>
Lorsque les données transitent sur les lignes de communication série, il
peut arriver que les données arrivent plus vite que l'ordinateur ne peut les
traiter (l'ordinateur peut être occupé à faire autre chose - n'oubliez pas
que Linux est un système Multi-tâches Multi-utilisateurs). Pour s'assurer que
des données ne se sont pas perdues (les données n'arrivent pas dans le tampon
d'entrée pour se perdre ensuite), certaines méthodes de contrôles sont
nécessaires.

<p>
Il y a deux façons de faire sur des lignes séries :
<itemize>
<item>Utiliser des signaux matériels (Clear To Send/Request To Send CTS/RTS)
<item>Utiliser des signaux logiciel (control S et control Q, aussi appelés XON/XOFF).
</itemize>

<p>
Bien que le dernier soit correct pour les liaisons vers des terminaux(texte),
les données sur une liaison PPP utilisent les 8 bits - et il est fort probable
que quelque part dans les données, un octet se traduis par un control S ou 
un control Q. Donc, si un modem est configuré pour utiliser le contrôle de 
flux, les choses vont rapidement s'envenimer !

<p>
Pour les liaisons à haut débit utilisant PPP (avec l'utilisation des 8 bits
de données) le contrôle de flux matériel est vital, et c'est la raison pour
laquelle vous devez utiliser le contrôle de flux matériel.

<sect1>Tester votre modem pour composer un numéro
<p>
Maintenant que vous en avez terminé avec la configuration du modem et du port
série, il serait utile de vérifier si cette configuration marche
vraiment en appelant votre fournisseur d'accès et voir si vous pouvez vous
connecter.

<p>
En utilisant le paquetage du terminal de communication (tel que <tt/minicom/), 
la commande d'initialisation de votre modem pour PPP, appelez le
serveur PPP sur lequel vous voulez vous connecter pour une session PPP.

<p>
(Remarque : à ce niveau, nous <bf/n'essayerons pas/ d'établir la connexion PPP
- mais juste d'être sûr que nous pouvons composer un numéro et ainsi
trouver <bf/exactement/ ce que le serveur nous envoie pour se connecter et
lancer PPP).

<p>
Pendant le processus, soit vous capturez (dans un fichier) la totalité du
processus de login soit vous notez attentivement (<em/très attentivement/)
<bf/exactement/ ce que le serveur envoie pour savoir quand est le moment 
d'entrer votre nom utilisateur et votre mot de passe (et quelques autres
commandes nécessaires pour établir la connexion PPP).

<p>
Si votre serveur utilise PAP, vous ne verrez pas de message de login, mais
vous verrez à la place la (représentation texte) du protocole de contrôle de
liaison (une suite incohérente de caractères) s'afficher sur votre écran.

<p>
Quelques mots d'avertissements :

<itemize>

<item>certains serveurs sont relativement intelligents : vous pouvez vous
connecter en utilisant un nom utilisateur /mot de passe basé sur du texte OU
en utilisant PAP. Ainsi, si votre fournisseur d'accès ou votre serveur
d'entreprise utilise PAP mais n'affiche pas le message directement, cela ne
signifie pas que vous avez fait une erreur.

<item>certains serveurs ont besoin que vous entriez du texte avant
de lancer <em/ensuite/ la séquence PAP standard.

<item>Certains serveurs PPP sont passifs - il attendent et n'envoient rien
tant que le client avec lequel il dialogue ne lui envoie un paquet LCP valide.
Si le serveur PPP sur lequel vous vous connectez fonctionne en mode passif,
vous ne verrez jamais de message !

<item>Certains serveurs ne lancent pas PPP tant que vous n'avez pas pressé 
<tt/ENTREE/ - essayez donc cela si vous êtes connecté et ne voyez pas de 
message !
</itemize>

<p>
Il est intéressant de dialoguer au moins deux fois - certains serveurs 
changent leur message d'accueil (c.-à-d. avec le temps !) chaque fois que vous
vous connectez. Les deux messages critiques que votre machine Linux doit
pouvoir identifier chaque fois que vous vous vous connectez sont :
<itemize>
<item>le message qui vous demande d'entrer votre nom utilisateur ;
<item>le message qui vous demande d'entrer votre mot de passe ;
</itemize>

<p>
Si vous avez tapé une commande pour lancer PPP sur le serveur, vous devez aussi
rechercher le message que le serveur vous envoie une fois que vous êtes 
connecté pour vous informer que vous pouvez entrer la commande pour lancer ppp.

<p>
Si votre serveur lance automatiquement PPP, une fois que vous êtes connecté,
vous allez voir des caractères s'afficher sur votre écran - c'est le serveur
PPP qui envoie à votre machine les informations pour démarrer et configurer 
la connexion PPP.

<p>
Ça doit donner quelque chose comme ceci :

<code>
</code>

<p>
(et ça ne s'arrête pas !)

<p>
Sur certains systèmes, PPP doit être explicitement lancé sur le serveur. Cela
vient généralement du fait que le serveur a été configuré pour permettre
aux connexions PPP et aux connexions Shell a utiliser les mêmes paires 
nom utilisateur/mot de passe. Si c'est le cas, envoyez cette commande lorsque
vous êtes connecté. Une nouvelle fois vous verrez des caractères que le serveur
envoie à la fin du lancement de la connexion PPP.

<p>
Si vous ne voyez pas directement après la connexion (et le processus de 
connexion et le lancement du serveur PPP si besoin), tapez <bf/Entrée/ pour 
voir si le serveur PPP démarre...

<p>
A ce niveau, vous pouvez raccrocher votre modem (généralement, taper 
<tt>+++</tt> rapidement et envoyer la commande ATHO une fois que votre modem
vous a répondu OK).

<p>
Si vous n'arrivez pas à faire fontionner votre modem, lisez le manuel du
modem, les pages de manuel des programmes de communication, et le Serial 
HOWTO ! Une fois que vous aurez fait tout cela reprenez l'étape précédente.


<sect>Configurer la résolution de nom vers l'adresse (DNS) <label id="DNS">
<p>
Alors que les humains aiment donner des noms aux choses, les ordinateurs 
préfèrent les nombres. Sur un réseau TCP/IP (comme Internet), nous appelons 
les machines avec un nom particulier et chaque machine se trouve dans un 
<tt>&dquot;</tt>domaine<tt>&dquot;</tt> particulier. Par exemple, ma station
de travail Linux s'appelle <bf>archenland</bf> et se trouve dans le domaine
<bf>interweft.com.au</bf>. Son adresse lisible par un humain est donc 
archenland.interweft.com.au (qui s'appelle le FQDN - nom de domaine 
totalement qualifié).

<p>
Cependant, pour que cette machine soit trouvée par les autres ordinateurs sur
Internet, elle est réellement connue par son adresse IP lorsque les 
ordinateurs communiquent à travers Internet.

<p>
Traduire (résoudre) les noms de machines (et de domaine) en nombres réellement 
utilisés sur Internet est le travail de machines qui offrent le DNS.

<p>
Ce qui se passe en fait :

<itemize>
<item>Votre machine à besoin de savoir l'adresse IP d'un ordinateur 
particulier. L'application qui a besoin de cette information interroge le 
resolveur de votre PC Linux pour obtenir cette information;

<item>
Le résolveur interroge le fichier local <tt>/etc/hosts</tt>
et/ou les serveurs de noms des domaines qu'il connaît (le comportement
exact du résolveur est déterminé dans <tt>/etc/hosts.conf</tt>);

<item>si la réponse se trouve dans le fichier <tt/hosts/, la réponse est 
renvoyée;

<item>si un serveur de nom est spécifié, votre PC interroge alors cette
machine

<item>si la machine DNS connaît déjà l'adresse IP du nom demandé, elle le 
retourne. Si elle ne le connaît pas, elle interroge un autre serveur de noms
sur Internet pour trouver l'information. Le serveur de noms redescend alors les
informations au résolveur qui les a demandé - qui les envoie à l'application 
qui l'a interrogé.
</itemize>

<p>
Quand vous utilisez une connexion PPP, vous devez indiquer à votre machine Linux
où elle peut récupérer l'adresse IP à partir du nom (résolution des adresses),
comme cela <bf/vous pourrez utiliser le nom des machines/ mais votre 
ordinateur pourra traduire ces derniers vers les adresses IP dont il a 
besoin pour travailler.

<p>
Une solution est de rentrer tous les hôtes avec qui vous voulez dialoguer dans
le fichier <tt>/etc/hosts</tt> (ce qui est en réalité totalement impossible
si vous êtes connecté à Internet); une autre façon est d'utiliser les
adresses IP plutôt que les noms (une tâche de mémorisation impossible sauf pour
les petits réseaux).

<p>
La meilleure façon est de configurer Linux pour qu'il connaisse ou récupère
l'information de conversion des noms en adresses - automatiquement. Ce service
est fourni par le système DNS. La seule chose à faire est d'entrer l'adresse IP
des serveurs de noms dans le fichier /etc/resolv.conf.

<sect1>Le fichier <tt>/etc/resolv.conf</tt>
<p>
Le support client de votre serveur PPP doit vous fournir deux adresses IP de
DNS (un seul est nécessaire - mais deux permettent une redondance en cas 
d'échec).

<p>
Comme c'est mentionné plus haut, Linux ne peut pas définir l'adresse IP de son
serveur de noms comme MS Windows 95 le fait. Ainsi, vous devez <bf/insister/
(poliment) auprès de votre FAI pour qu'il vous fournisse cette
information !

<p>
Votre <tt>/etc/resolv.conf</tt> doit ressembler à quelque chose comme :


<code>
domain votre.nom.de.domaine
nameserver 10.25.0.1
nameserver 10.25.1.2
</code>


<p> Éditer ce fichier (le créer si nécessaire) pour contenir les
informations que votre FAI vous a donné. Il doit avoir les droits et les
permissions comme suit :

<tscreen><verb>
-rw-r--r--   1 root     root           73 Feb 19 01:46 /etc/resolv.conf
</verb></tscreen>


<p>
Si vous avez déjà configuré un <tt>/etc/resolv.conf</tt> car vous êtes sur un
réseau local, ajoutez simplement les adresses IP du serveur DNS PPP dans votre
fichier existant.

<sect1>Le fichier <tt>/etc/hosts.conf</tt>
<p>
Vous devez également vérifier que votre fichier <tt>/etc/hosts.conf</tt> est
correctement configuré. Il doit ressembler à 
<code>
order hosts,bind
multi on
</code>

<p>
Il indique au résolveur d'utiliser les informations du fichier host avant
d'envoyer les requêtes pour une résolution DNS.

<sect>Utiliser PPP et les privilèges <bf/root/ <label id="root">
<p>
Puisque PPP à besoin de configurer les périphériques réseau, modifier les
tables de routage entre autres, il a besoin des privilèges <bf/root/.

<p>
Si des utilisateurs autres que <bf/root/ doivent lancer des connexions PPP, le
programme <tt/pppd/ doit avoir l'uid <bf/root/ :

<tscreen><verb>-rwsr-xr-x   1 root     root        95225 Jul 11 00:27 /usr/sbin/pppd</verb></tscreen>

<p>
Si <tt>/usr/sbin/pppd</tt> n'est pas défini comme cela, alors <bf/en étant 
root/ taper la commande :

<p>
<tscreen><verb>chmod u+s /usr/sbin/pppd</verb></tscreen>

<p>
Cela permet à <tt/pppd/ de fonctionner avec les privilèges <tt/root/ <bf/même/ i
si le programme est lancé par un utilisateur ordinaire. Ainsi <tt/pppd/ a
les bons privilèges pour configurer les interfaces réseau et les tables de 
routage.

<p>
Les programmes qui utilisent le uid root sont autant de trous de sécurité
potentiels et vous devez être extrêmement vigilant par rapport aux programmes
uid root. De nombreux programmes (comme <tt/pppd/) ont été écrits minutieusement
pour minimiser le danger d'utiliser suit root, vous devez donc être tranquille
avec celui-ci (mais sans garanties totales).

<p>
Selon ce que vous voulez faire de votre système - particulièrement si vous
voulez qu'un utilisateur puisse initialiser une liaison PPP, vous devez
mettre vos scripts <tt>ppp-on/off</tt> lisibles et exécutables par tout le 
monde.   (c'est sans doute génial si vous êtes le SEUL utilisateur du PC).

<p>
Cependant, si vous NE voulez PAS que n'importe qui puisse lancer une 
connexion PPP (par exemple, votre enfant qui a un compte sur votre PC Linux
et que vous ne voulez pas qu'il se connecte à Internet sans votre
permission), vous devez faire un groupe PPP (en tant que <tt/root/, éditer le 
fichier <tt>/etc/group</tt>) et :
<itemize>

<item>Rendre <tt/pppd/ 'suid root', possédé par l'utilisateur <bf/root/ et le 
groupe PPP, avec ces nouvelles permissions sur le fichier. Il doit ressembler à 
<tscreen><verb>-rwsr-x---   1 root     PPP        95225 Jul 11 00:27 /usr/sbin/pppd</verb></tscreen>

<item>Mettre les scripts <tt>ppp-on/off</tt> possédés par l'utilisateur 
<bf/root/ et le groupe <bf/PPP/

<item>Rendre le script <tt>ppp-on/off</tt> lisible/exécutable par le groupe PPP
<tscreen><verb>
  -rwxr-x---   1 root     PPP           587 Mar 14  1995 /usr/sbin/ppp-on
  -rwxr-x---   1 root     PPP           631 Mar 14  1995 /usr/sbin/ppp-off
</verb></tscreen>

<item>Ajouter les utilisateurs qui utilisent PPP dans le groupe PPP dans 
<tt>/etc/group</tt>
</itemize>

<p>
Même si vous faites cela, les utilisateurs normaux ne pourront pas fermer
la connexion avec un programme ! Utiliser <tt/ppp-off/ nécessite les 
privilèges <bf/root/. Même si n'importe quel utilisateur peut éteindre le
modem (ou déconnecter la ligne téléphonique sur un modem interne).

<p>
Un alternative (et une meilleure méthode) de faire cela est d'utiliser le 
programme <tt/sudo/, qui offre une meilleure sécurité et vous permettra de 
choisir quels utilisateurs (autorisés) pourrons activer/désactiver
la liaison en utilisant des scripts. Utiliser <tt/sudo/ permet aux utilisateurs
autorisés d'activer/désactiver la liaison PPP de façon propre et
sécurisée.


<sect>Configurer les fichiers de connexion de PPP <label id="options">
<p>
Maintenant, vous devez être connecté en tant que <bf/root/ pour créer les
répertoires et éditer les fichiers nécessaires à la configuration de PPP, 
même si vous souhaitez que PPP soit utilisable par tous les utilisateurs.

<p>
PPP utilise un certain nombre de fichiers pour configurer les connexions.
Ceux-ci diffèrent dans leur nom et les chemins entre PPP 2.1.2 et 2.2.

<p>
Pour PPP 2.1.2 les fichiers sont :

<code>
/usr/sbin/pppd          # le programme PPP
/usr/sbin/ppp-on        # le script d'appel/connexion
/usr/sbin/ppp-off       # le script de déconnexion
/etc/ppp/options        # les options utilisées pour toutes le connexions
/etc/ppp/options.ttyXX  # les options spécifiques pour ce connecter sur ce port
</code>

<p>
Pour PPP 2.2. les fichiers sont :
<code>
/usr/sbin/pppd                  # Le programme PPP
/etc/ppp/scripts/ppp-on         # le script d'appel connexion
/etc/ppp/scripts/ppp-on-dialer  # première partie du script d'appel
/etc/ppp/scripts/ppp-off        # le script chat réel
/etc/ppp/options                # options utilisées par pppd pour toutes les 
				# connexions
/etc/ppp/options.ttyXX          # options spécifiques pour se connecter sur ce
				# port
</code>

<p>
Je rappelle aux utilisateurs de la RedHat Linux que dans l'installation
standard de la Red Hat 4.X les scripts sont placés dans
<tt>/usr/doc/ppp-2.2.0f-2/scripts</tt>.

<p>
Dans votre répertoire <tt>/etc</tt>, il devrait y avoir un répertoire <bf/ppp/ :

<tscreen><verb>
drwxrwxr-x   2 root     root         1024 Oct  9 11:01 ppp
</verb></tscreen>

<p>
S'il n'existe pas - le créer avec ces possessions et permissions.

<p>
Si le répertoire existe déjà, il devrait contenir un fichier d'options
modèle appelé <bf>options.tpl</bf>. Ce fichier est inclus plus bas au cas où
il n'existerait pas.

<p>
Imprimez-le il contient une explication de presque toutes les options de PPP
et c'est pratique de le lire en même temps que les pages de manuel de ppp).
Même si vous pouvez utiliser ce fichier comme base à votre 
<tt>/etc/ppp/options</tt>, il est sans doute mieux de créer votre propre
fichier d'options qui ne contiendra pas tous les commentaires du modèle -
il sera bien plus court, et plus facile à lire/maintenir.

<p>
Si vous avez une ligne série/modems multiple (c'est typiquement le cas des 
serveurs PPP), créer un fichier général <tt>/etc/ppp/options</tt>
contenant les options communes à tous les ports séries dans lequel vous
supportez la composition et la réception d'appels et un fichier de 
configuration individuel pour chaque ligne série sur laquelle vous établirez
la configuration individuelle nécessaire pour chaque port.

<p>
Ces fichiers d'options spécifiques aux ports sont appelés <tt/options.ttyx1/,
<tt/options.ttyx2/ et ainsi de suite (ou x est la lettre appropriée pour 
votre port série).

<p>
Toutefois, pour une connexion simple, vous pouvez tranquillement utiliser le
fichier <tt>/etc/ppp/options</tt>. Vous pouvez aussi mettre toutes les options 
comme argument de la commande <tt/pppd/ elle-même.

<p>
Il est plus simple de maintenir une configuration qui utilise les fichiers
<tt>/etc/ppp/options.ttySx</tt>. Si vous utilisez PPP sur différents
sites, vous pouvez créer un fichier d'options pour chaque site dans
<tt>/etc/ppp/options.site</tt>, et ainsi spécifier le fichier d'options en
paramètre à la commande PPP lorsque vous vous connectez (en utilisant 
l'option <tt/file option-file/ de <tt/pppd/ dans la ligne de commande de 
<tt/pppd/).

<sect1>Le fichier options.tpl fourni
<p>
Certaines distributions de PPP semblent avoir perdu le fichier options.tpl,
donc voici le fichier complet. Je suggère de NE PAS éditer ce fichier pour 
créer votre fichier(s) <tt>/etc/ppp/options</tt>. Copiez plutôt celui-ci
dans un nouveau fichier et éditez-le alors. Si vous vous trompez dans votre
édition, vous pourrez toujours revenir en arrière en recommençant sur
l'original.

<code>
# /etc/ppp/options -*- sh -*- fichiers d'options generales pour pppd
# cree le 13-Jul-1995 jmk
# autodaté: 01-Aug-1995
# autotime: 19:45
# adaptation francaise par Antoine Levavasseur levavass@efrei.fr

# Utilise l'executable ou la commande shell specifiee pour configurer la ligne
# serie. Ce script va en fait utiliser le programme "chat" pour appeler le
# modem et le debut de la liaison distante ppp.
#connect "echo Vous devez installer une commande connect."

# Lance l'executable ou la commande shell specifie, une fois que ppp a termine
# la liaison. Ce script va, par exemple, envoyer les commandes au modem pour le
# faire raccrocher si les signaux de controles matériels ne sont pas 
# disponibles.
#disconnect "chat -- \d+++\d\c OK ath0 OK"

# table de caractere async -- 32-bit hex; chacun des bit est un caractere qui
# doit etre echappe pour que pppd le recoive.  0x00000001 represente '\x01', 
# et 0x80000000 represente '\x1f'.
#asyncmap 0

# Demande a votre correspondant de s'authentifier avant de pouvoir envoyer ou
# recevoir des paquets reseaux
#auth

# Utilise le controle de flux materiel (i.e. RTS/CTS) pour controler le flux
# de donnees du port série
#crtscts

# Utilise le controle de flux logiciel (i.e. XON/XOFF) pour controler le flux
# de donnees du port serie.
#xonxoff
# Ajouter une route par defaut aux tables de routage systeme, pour utiliser
# votre correspondant comme gateway, lorsque la negociation ICP reussi. Cette
# entree est supprimee lorsque la connexion PPP se termine.
#defaultroute

# Specifie que certains caracteres doivent etre echapes sur la transmission
# (en fonction de la facon dont le client souhaite qu'ils soient echappes avec
# la table de controle async). Les caracteres qui sont echappes sont specifies
# comme une liste de nombres hexa separes par des guillemets. La plupart des
# caracteres peuvent etres specifies avec l'option escape, a moins que l'option 
# asyncmap soit activee puisque dans ce cas seuls les caracteres de controle
# peuvent etres specifies. Les caracteres qui ne peuvent etre echapes ont les
# valeurs hexa 0x20 - 0x3f ou 0x5e.
#escape 11,13,ff

# Ne pas utiliser les lignes de controle du modem
#local

# Specifie que pppd doit utiliser un verouillage du peripherique serie style
# UUCP pour s'en assurer un acces exclusif.
#lock

# Utilise les lignes de controle du modem. Sur un Ultrix, cette option implique
# un controle de flux materiel, comme avec l'option crtscts. (Cette option 
# n'est pas completement implementee.)
#modem

# Definit la valeur MRU [Unite de Reception Maximum] a n pour la negociation.
# pppd demandera alors de se faire renvoyer les paquets pour au plus <n> octets
# La valeur MRU minimale est de 128. La valeur par defaut est 1500. La valeur
# 296 est recommandee pour les liaisons lentes (40 octets pour l'entete TCP/IP
# + 256 octets de donnees).
#mru 542

# Definit le masque reseau avec <n> qui est un masque reseau 32 bit en 
# "chiffres decimaux" note (e.g 255.255.255.0).
#netmask 255.255.255.0

# Desactive le comportement par defaut lorsque aucune adresse IP n'est 
# specifiee, et qu'elle est determine (quand c'est possible) a partir du
# hostname. Avec cette option, votre correspondant devra vous fournir votre
# adresse IP locale pendant la negotiation IPCP (a moins que cela ne soit
# specifie explicitement dans la ligne de commande ou un fichier d'options)
#noipdefault

# Active l'option passive sur le LCP. Avec cette option, pppd, essayera 
# d'initier la connexion; si aucune reponse n'est recue de votre correspondant,
# pppd attendra passivement un packet LCP (au lieu de s'arreter comme il fait
# sans cette option)
#passive

# Avec cette option, pppd ne va pas transmettre les paquets LCP pour 
# initialiser la connexion tant qu'un paquet LCP valide n'est pas envoye
# par votre correspondant (comme avec l'option "passive" pour des versions
# plus anciennes de pppd).
#silent

# Ne requiert et ne permet pas de negociation pour n'importe quelle option de
# LCP et IPCP (utilise  les valeurs par defaut).
#-all

# Desactive la negociation de la compression d'adresses/controle (utilise les
# reglages par defaut, i.e. le champ adresse/controle desactive)
#-ac

# Desactive la negociation asyncmap (utilise le reglage asyncmap par defaut,
# i.e. echappement de tout les caracteres de controle)
#-am

# Ne forke pas pour devenir un processus en tache de fond (sinon pppd le fera
# si un peripherique serie est specifie).
#-detach

# Desactive la negociation d'adresses IP (avec cette option, l'adresse IP
# distante doit etre specifiee avec une option en ligne de commande ou dans
# un fichier d'options).
#-ip

# Desactive la negociation des nombres magiques. Avec cette option, pppd ne
# peut pas detecter une ligne avec une boucle.
#-mn

# Desactive la negociation MRU [Unite de Reception Maximum] (utilise la valeur
# par defaut, i.e. 1500).
#-mru

# Desactive la negociation du protocole de compression par champ (utilise la
# valeur par defaut, i.e le protocole de compression par champs desactive)
#-pc

# Impose a votre corresondant de s'autentifier avec PAP. Cela necessite une
# authentification des DEUX COTES - NE PAS utiliser pour une liaison standard
# authentifiee par PAP vers un FAI puisqu'il faudra que la machine du FAI
# soit authentifie aupres de votre machine (et ce qu'elle ne pourra pas faire).
#+pap

# Refuse d'utiliser l'authentification avec PAP.
#-pap

# Oblige votre correspondant a s'authentifier avec une authentification
# CHAP [Cryptographic Handshake Authentication Protocol]
# Cela necessite une authentification des DEUX COTES - ne PAS utiliser pour une
# liaison avec un FAI puisqu'il faudra que la machine du FAI
# soit authentifie aupres de votre machine (et ce qu'elle ne pourra pas faire).
#+chap

# Refuse d'utiliser l'authentification avec CHAP.
#-chap

# Desactive la negociation de la compression de l'entete IP style Van Jacobson
# (utilise la valeur par defaut, i.e. pas de compression).
#-vj
# Augmente de niveau de deboguage (comme -d). Si cette option est passee, pppd
# enverra dans le log le contenu de tous les paquets de controle envoyes ou 
# recus dans une forme lisible. Les paquets seront envoyes dans syslog avec les
# possibilites des daemons et du niveau de deboguage. Ces informations peuvent
# etre diriges dans un fichier en configurant /etc/syslog.conf correctement
# (voir syslog.conf(5)). (Si pppd est compile avec des options de deboguage
# supplementaires, il enverra les messages de log dans local2 au lieu du 
# daemon).
#debug

# Ouvre le nom de domaine <d> pour permettre l'authentification de nom d'hote
# local. Par exemple, si gethostname() retourne le nom porsche,
# mais le nom de domaine qualifie est porsche.Quotron.COM, vous devriez
# utiliser l'option domain pour mettre le nom de domaine a Quotron.COM.
#domain <d>

# Active le code de deboguage du pilote PPP au niveau du noyau. L'argument n
# est un nombre qui est la somme des valeurs suivantes : 1 active les messages
# de deboguage generaux, 2 pour que le contenu des paquets recus soient 
# affiches, et 4 pour que le contenu des paquets envoyes soient affiches.
#kdebug n

# Configure la valeur MTU [Unitee de Transmission Maximum] a <n>. A moins
# que votre correspondant ne demande une valeur plus petite lors de la
# negociation MRU, pppd demande que les codes reseaux du noyau envoie des
# paquets d'au plus n octets dans l'interface reseau PPP.
#mtu <n>

# Definit le nom du systeme local avec <n> dans un but d'authentification.
# Cela doit certainement avoir ete configure avec votre nom utilisateur de votre
# FAI si vous utilisez PAP/CHAP. 
#name <n>

# Definit le nom utilisateur avec <u> pour l'authentification avec le 
# correspondant utilisant PAP .
# Ne pas utiliser si vous utilisez le 'name' au-dessus !
#user <u>

# Force l'utilisation du nom d'hote comme nom du systeme local pour les
# authentification (masque l'option name).
#usehostname

# Configure le nom du systeme distant pour les authentifications a <n>.
#remotename <n>

# Ajoute une entree au systeme des tables ARP [Protocole de Resolution 
# d'Adresses] avec l'adresse IP de votre correspondant et l'adresse Ethernet
# de ce syteme.
#proxyarp

# Utilise le systeme de base de donnes de mots de passe pour l'authentification
# de votre correspondant avec PAP.
#login

# Si cette option est passee, pppd va envoyer une requete-echo LCP a votre
# correspondant toutes les n secondes. Sous Linux, une requete-echo est envoyee
# lorsqu'aucun paquet n'a ete recu du correspondant depuis n secondes. 
# Normalement, le correspondant doit repondre a la requete-echo en envoyant une
# reponse-echo. Cette option peut etre utilise avec l'option lcp-echo-failure
# pour detecter que le correspondant n'est plus connecte.
#lcp-echo-interval <n>

# Si cette option est passe, pppd va supposer que le correspondant est mort
# si n requetes-echo LCP sont envoyees sans recevoir de reponse-echo LCP
# valide. Si cela arrive, pppd va terminer la connexion. Utiliser cette option
# necessite une valeur non nulle pour le parametre lcp-echo-interval.
# Cette option peut etre utilisee pour permettre a pppd de terminer une fois 
# qu'une connexion pppd ait ete cassee (c.-a-d. le modem a ete raccroche) dans 
# les situations ou aucune ligne de controle materiel du modem n'est 
# disponibles
#lcp-echo-failure <n>

# Definit l'intervale relance LCP (delay de retransmission) a <n> secondes
# (defaut 3).
#lcp-restart <n>

# Definit le nombre maximal de transmission de requete-fin de LCP a <n>
# (defaut 3).
#lcp-max-terminate <n>

# Definit la nombre maximum de transmission de requete-configure LCP a <n>
# (defaut 10).
# Certains serveurs PPP sont lents a demarrer. Vous devrez alors augmenter 
# ceci si vous avez des erreurs 'serial line looped back' et que vous etes
# SUR que vous etes connecte correctement et que PPP doit demarrer sur le 
# serveur.
#lcp-max-configure <n>

# Definit le nombre maximum de retours LCP configure-NAKs avant de commencer
# a envoyer des configure-Rejects a la place a <n> (defaut 10).
#lcp-max-failure <n>

# Definit l'intervale de relancce de IPCP (temps de retransmission) a <n> 
# secondes (defaut 3).
#ipcp-restart <n>

# Definit le nombre maximum de transmission de requete-fin IPCP a <n>
# (defaut 3).
#ipcp-max-terminate <n>

# Definit la nombre maximum de transmission de requete-configure IPCP a <n>
# (defaut 10).
#ipcp-max-configure <n>

# Definit la nombre maximem de retour configure-NAKs IPCP avant de commencer
# a envoyer des configure-Rejects a la place a <n> (defaut 10).
#ipcp-max-failure <n>

# Definit l'intervalle de relance PAP (temps de retransmission) a <n> secondes
# (defaut 3).
#pap-restart <n>

# Definit le nombre maximum de transmission de requete-d'authentification PAP
# a n (defaut 10)
#pap-max-authreq <n>

# Definit les intervales de relance de CHAP (temps de retransmission) a <n>
# secondes (defaut 3).
#chap-restart <n>

# Definit le nombre maximal d'essai de  transmission de CHAP a <n>
# (defaut 10).
#chap-max-challenge

# Si cette option est passee, pppd va relancer votre correspondant toutes les
# <n> secondes.
#chap-interval <n>

# Avec cette option, pppd va accepter la proposition de votre correspondant
# pour votre adresse IP locale, meme si l'adresse IP est specifiee en option.
#ipcp-accept-local

# Avec cette option, pppd va accepter la proposition d'adresse IP (distante),
# meme si l'adresse distante est specifiee en option.
#ipcp-accept-remote
</code>


<sect1>Quelles options dois-je utiliser ? (Sans PAP/CHAP)

<p>
En fait, comme toujours, ça dépend. Les options spécifiées ici devraient
marcher avec la plupart des serveurs.

<p>
Cependant, si ça NE fonctionne PAS LISEZ LE FICHIER MODELE
(<tt>/etc/ppp/options.tpl</tt>) <bf/et/ les pages de manuel de <tt/pppd/ <bf/et/
demandez à votre administrateur/support client qui fait marcher le
serveur sur lequel vous vous connectez.

<p>
Je rappelle également que les scripts de connexion présentés ici
utilisent également des options en ligne de commande pour <tt/pppd/ et
rendre les choses plus facilement modifiables.

<code>
# /etc/ppp/options (NO PAP/CHAP)
#
# Empeche pppd de forker en tache de fond
-detach
#
# utilise les lignes de controle du modem
modem
# utilise les verrous style uucp pour assurer une utilisation exclusive du 
# port serie
lock
# utilise le flux de controle materiel
crtscts
# creer une route par defaut pour cette connexion dans la table de routage
defaultroute
# ne configure aucune sequence de controle echapee
asyncmap 0
# utlise une taille maximale de paquet transmis de 552 octets
mtu 552
# utilise une taille maximale de paquets recus de 552 octets.
mru 552
#
#-------FIN D'EXEMPLE /etc/ppp/options (sans PAP/CHAP)
</code>

<sect>Si votre serveur PPP utilise PAP (Password Authentification Protocol) 
<label id="pap">
<p>
Si le serveur sur lequel vous vous connectez a besoin de l'authentification
PAP ou CHAP, vous avez un petit peu plus de travail.

<p>
Pour les fichiers de configuration précédents, ajouter les lignes suivantes :
<code>
#
# force pppd a utiliser le nom utilisateur de FAI comme 'nom d'hote' pendant
# le processus d'authentification
name <le nom de votre FAI>       # vous devez editer cette ligne
#
# Si vous avez un *serveur* PPP vous devez forcer PAP ou CHAP en decommentant
# l'une des lignes suivantes. Ne pas les utiliser si vous etes un client qui
# se connecte sur un serveur PPP (meme s'il utilise PAP ou CHAP) puisque cela
# forcera le serveur a s'authentifier aupres de votre machine (alors que cela
# ne sera certainement pas possible - et la liaison echouera).
#+chap
#+pap
#
# Si vous utilisez des secrets ENCRYPTES dans le fichier /etc/ppp/pap-secrets,
# alors decommentez la ligne suivante.
# Remarque: ce n'est pas pareil que d'utiliser les mots de passe MS encryptes
# comme ils peuvent etres avec MS RAS sur Windows NT.
#+papcrypt
</code>

<sect1>Utiliser MSCHAP
<p>
Microsoft Windows NT RAS peut être configuré pour utiliser une variation particulière de CHAP (Challenge/Handshake Authentication Protocol). Dans l'archive des
sources de PPP, vous devriez trouver un fichier appelé README.MSCHAP80 qui
parle de cela.

<p>
Vous pouvez déterminer si le serveur demande une authentification utilisant ce
protocole en activant le deboguage dans <tt/pppd/. Si le serveur demande une 
authentification MS CHAP, vous devriez voir les lignes 

<code>
rcvd [LCP ConfReq id=0x2 <asyncmap 0x0> <auth chap 80> <magic 0x46a3>]
</code>

<p>
L'information critique ici est <bf/auth chap 80/.

<p>
Pour utiliser MS CHAP, vous devez recompiler pppd. Veuillez consulter les
instructions dans le fichier README.MSCHAP80 des sources de PPP pour obtenir
les instructions sur la façon de compiler en utilisant cette variante.

<p>
Vous devez remarquer que le code présent supporte uniquement des clients Linux
PPP connectés sur un serveur MS Windows NT. Mais NE supporte PAS
la configuration d'un serveur PPP Linux pour utiliser l'authentification 
MSCHAP80 pour les clients.

<sect1>Le fichier de secrets de PAP/CHAP
<p>
Si vous utilisez l'authentification PAP ou CHAP, alors vous devez créer les
fichiers . Ce sont
<code>
/etc/ppp/pap-secrets
/etc/ppp/chap-secrets
</code>

<p>
Il doivent être possédés par <bf/root/, le groupe <bf/root/ et avoir les 
permissions 740 pour la sécurité.

<p>
Le premier point à remarquer au sujet de PAP et CHAP est qu'ils sont conçus
pour authentifier <bf/les ordinateurs/ mais pas <bf/les utilisateurs/

<p>
&dquot;Humm? Qu'est ce que ça change ? &dquot; Me demandez vous.

<p>
Hé bien, une fois que l'ordinateur a établi une connexion PPP avec le serveur,
<bf/n'importe quel/ utilisateur de votre système peut utiliser cette connexion
- pas seulement vous. C'est pourquoi vous pouvez configurer un réseau à
large domaine en reliant deux réseaux locaux avec PPP.

<p>
PAP peut (et CHAP <bf/DOIT/) demander une authentification 
<bf/bidirectionnelle/ - c'est un nom et un code secret qui est nécessaire pour
chaque ordinateur avec lequel il est impliqué. Cependant, ce n'est
pas la façon dont tous les serveurs PPP fonctionnent pour offrir 
l'authentification PAP des appels PPP.

<p>
Il a été dit que votre FAI vous donnerait certainement un nom utilisateur et
un mot de passe pour vous permettre de vous connecter sur son système et 
ensuite sur Internet. Votre FAI se fiche de connaître le nom de votre 
ordinateur, vous devrez donc utiliser votre nom utilisateur chez votre FAI
comme nom pour votre machine.

<p>
Cela est possible avec l'option <tt/name username/ de <tt/pppd/. Donc, si vous 
utilisez le nom donné par votre FAI, ajoutez la ligne
<code>
name votre_utilisateur nom_chez_votre_FAI
</code>
<p>
dans votre fichier <tt>/etc/ppp/options</tt>.

<p>
Techniquement, vous devrez utiliser  
<tt/user votre_utilisateur nom_chez_votre_FAI/ pour PAP, mais <tt/pppd/ est
suffisamment intelligent pour interpréter l'option <tt/name/ comme <tt/user/
si nécessaire pour utiliser PAP. L'avantage d'utiliser l'option <tt/name/
est qu'elle est également valide pour CHAP.

<p>
Puisque PAP permet d'authentifier les <bf/ordinateurs/, techniquement, vous
devez aussi spécifier un nom d'ordinateur distant. Toutefois, comme de
nombreuses personnes ont plus d'un seul FAI, vous pouvez utiliser un caractère
générique (*) pour le nom d'ordinateur distant dans le fichier de secrets.

<p>
Il est aussi intéressant de remarquer que de nombreux FAI utilise des banques
de modems multiples connectés sur différents serveurs de terminaux - tous ont
un nom différent, mais sont accessibles avec un seul numéro d'appel. Il peut 
alors être difficile dans certaines circonstances de savoir à l'avance quel 
est le nom de l'ordinateur distant, puisque cela dépendra du serveur de 
terminal sur lequel vous vous connecterez !

<sect1>Le fichier de secrets de PAP
<p>
Le fichier <tt>/etc/ppp/pap-secrets</tt> ressemble à
<code>
# Authentication Secrete avec PAP
# client        serveur       secret     adresses_IP_locale_acceptable
</code>

<p>
Les quatre champs sont séparés par des espaces et le dernier peut être omis
(c'est l'adresse dynamique ou sans doute statique de votre FAI).

<p>
Supposons que votre FAI vous ait donné un nom utilisateur <tt/fred/ et un mot
de passe <tt/flintstone/ vous aurez l'option <tt/name fred/ dans 
<tt>/etc/ppp/options[.ttySx]</tt> et vous configurerez votre
<tt>/etc/ppp/pap-secrets</tt> comme suit

<code>
# Authentication Secrete avec PAP
# client        serveur       secret     adresses_IP_locale_acceptable
fred            *       flintstone
</code>

<p>
Cela signifie que pour une machine locale <tt/fred/ (<tt/pppd/ lui impose de 
s'appeler comme cela même si ça n'est pas son nom de machine réel) et 
pour <bf/n'importe quel/ serveur, utiliser le mot de passe (secret) 
<tt/"flintstone"/.

<p>
Remarquez que vous ne devez pas spécifier d'adresse IP locale, à moins que 
vous ne deviez FORCER une adresse locale statique particulière. Même si vous
essayez cette option, il y a peu de chances qu'elle marche puisque la 
plupart des serveurs PPP (pour des raisons de sécurité) ne permettent pas
au système distant de configurer l'adresse IP qu'ils reçoivent.

<sect1> Le fichier de secrets de CHAP
<p> 
Cette méthode nécessite une méthode authentification mutuelle - c'est à dire
que vous devez permettre à votre machine d'authentifier le serveur distant
<bf/ET/ le serveur distant d'authentifier votre machine.

<p>
Donc, si votre machine s'appelle <tt/fred/ et que le serveur distant s'appelle
<tt/barney/ il faut définir sur fred <tt>name fred remotename barney</tt> et
sur la machine distante <tt>name barney remotename fred</tt> dans les fichiers
<tt>/etc/ppp/options.ttySx</tt> respectifs.

<p>
Le fichier <tt>/etc/chap-secrets</tt> de <tt/fred/ ressemblera à 
<code>
# Authentication Secrete avec CHAP
# client        serveur       secret     adresses_IP_locale_acceptable
fred            barney      flintstone
barney          fred        wilma
</code>

<p>
et pour <tt/barney/

<code>
# Authentication Secrete avec CHAP
# client        serveur       secret     adresses_IP_locale_acceptable
barney          fred    flintstone
fred            barney  wilma
</code>


<p>
Remarquez en particulier que les deux machines doivent avoir des entrées pour 
une authentification bidirectionnelle. Cela permet à la machine locale 
d'authentifier elle-même la machine distante <bf/ET/ la machine distante
d'authentifier elle-même la machine locale.

<sect1>Supporter plusieurs connexions authentifiées avec PAP
<p>
Certains utilisateurs ont plus d'un serveur sur lesquels ils se connectent en
utilisant PAP. A partir du moment où votre nom utilisateur est différent sur
chacune des machines sur lesquelles vous vous connectez, il n'y a pas de 
problème.

<p>
Mais, nombreux sont les utilisateurs qui ont le même nom utilisateur sur deux
(ou plus, voire même tous les) systèmes où ils se connectent. Le problème 
revient donc à choisir la bonne ligne du fichier <tt>/etc/ppp/pap-secrets</tt>.

<p>
Comme vous pouvez le supposer, PPP fournit un mécanisme pour régler cela.
PPP permet de définir un << pseudonyme >> pour le serveur distant final de la
connexion en utilisant l'option <bf/remotename/ de pppd.

<p>
Supposons que vous vous connectiez sur deux serveurs PPP utilisant le même nom
utilisateur <tt/fred/. Vous configurerez votre <tt>/etc/ppp/pap-secrets</tt> 
avec

<code>
fred    pppserveur1      barney
fred    pppserveur2      wilma
</code>

<p>
Maintenant, pour se connecter sur <tt/pppserveur1/ vous utiliserez 
<tt>name fred remotename pppserver1</tt> dans votre <tt/ppp-options/ et pour
<tt/pppserveur2/ <tt>name fred remotename pppserver2</tt>.

<p>
Puisque vous pouvez sélectionner le fichier d'options à utiliser avec
<tt/pppd/ en utilisant l'option <tt>file filename</tt>, vous pouvez définir un
script pour se connecter sur chacun de vos serveurs PPP, qui choisira le
fichier d'options correct et mettra la bonne option <tt>remotename</tt>.

<sect>Configurer une connexion PPP à la main<label id="manual">
<p>
Maintenant que vous avez créé les fichiers <tt>/etc/ppp/options</tt> et
<tt>/etc/resolv.conf</tt> (et si besoin le fichier 
<tt>/etc/ppp/pap/chap-secrets</tt>), vous pouvez tester les paramètres en
établissant une connexion PPP à la main. (Une fois que la connexion 
manuelle marchera, nous automatiserons le processus).

<p>
Pour ce faire, votre programme de communication doit pouvoir être quitté sans
réinitialiser le modem. <tt/Minicom/ peut le faire avec Alt-Q (ou dans les
versions plus ancienne de <tt/minicom/ CTRL-A Q)

<p>
Vérifiez que vous êtes <bf/root/.

<p>
Lancez le programme de communication (<tt/minicom/ par exemple), appelez le 
serveur PPP et connectez-vous comme d'habitude. Si vous avez besoin d'envoyer 
une commande pour démarrer PPP sur le serveur, faites-le. Vous devriez 
maintenant voir les messages que vous aviez déjà vus.

<p>
Si vous utilisez PAP ou CHAP, se connecter simplement sur le système distant
devrait démarrer PPP et vous devriez voir des caractères s'afficher sans
toutefois se connecter (même si ça peut ne pas marcher sur certains serveurs -
essayez alors d'appuyer sur <bf/Entrée/ et les caractères devraient s'afficher).

<p>
Maintenant quittez le programme de communication <em/sans initialiser le modem/
(ALT-Q ou CTRL-A Q dans <tt/minicom/) et au message d'accueil de Linux (étant 
<bf/root/) tapez

<code>
pppd -d -detach /dev/ttySx 38400 &
</code>

<p>
L'option -d active le déboguage - la conversation de démarrage de la connexion
ppp sera retranscrite dans votre journal système - ce qui est très utile si des
problèmes apparaissent.

<p>
Les lumières de votre modem devraient alors clignoter puisque la connexion PPP
est établie. Cela peut prendre un peu de temps avant que la connexion soit
terminée.

<p>
A ce niveau, vous pouver afficher l'interface PPP en tapant la commande :

<code>
ifconfig
</code>

<p>
En plus des éventuels périphériques loopback et Ethernet, vous devriez avoir
quelque chose qui ressemble à :

<code>
ppp0     Link encap:Point-Point Protocol
         inet addr:10.144.153.104  P-t-P:10.144.153.51 Mask:255.255.255.0
         UP POINTOPOINT RUNNING  MTU:552  Metric:1
         RX packets:0 errors:0 dropped:0 overruns:0
         TX packets:0 errors:0 dropped:0 overruns:0
</code>

<p>
Où
<itemize>
<item>inet addr:10.144.153.10 est l'adresse IP de votre connexion.
<item>P-t-P:10.144.153.5 est l'adresse IP du serveur.
</itemize>
<p>
(Naturellement, <tt/ifconfig/ ne renvoie pas ces nombres là, mais ceux qui sont
utilisés par le serveur PPP.)

<p>
Remarque : <tt/ifconfig/ indique également que votre liaison fonctionne 
correctement !

<p>
Si vous aucun périphérique PPP n'est affiché ou quelque chose du genre

<code>
ppp0     Link encap:Point-Point Protocol
         inet addr:0.0.0.0  P-t-P:0.0.0.0  Mask:0.0.0.0
         POINTOPOINT  MTU:1500  Metric:1
         RX packets:0 errors:0 dropped:0 overruns:0
         TX packets:0 errors:0 dropped:0 overruns:0
</code>

<p>
Votre liaison PPP n'est pas correcte... voir la section suivante sur le 
débuggage !

<p>
Vous devez aussi pouvoir voir une route vers l'hôte distant (et même plus).
Pour cela, entrez la commande

<code>
route -n
</code>

<p>
Vous devriez obtenir quelque chose comme :

<code>
Kernel routing table
Destination     Gateway         Genmask         Flags MSS    Window Use Iface
10.144.153.3    *               255.255.255.255 UH    1500   0        1 ppp0
127.0.0.0       *               255.0.0.0       U     3584   0       11 lo
10.0.0.0        *               255.0.0.0       U     1500   0       35 eth0
default         10.144.153.3    *               UG    1500   0        5 ppp0
</code>

<p>
Ce qui est important ici, c'est d'avoir DEUX entrées pointant vers votre 
interface ppp.

<p>
La première est une route d'hôte (indiqué par le drapeau H) et qui permet de 
voir l'hôte sur lequel vous êtes connecté - mais pas plus.

<p>
La seconde est la route par défaut (établie en donnant à <tt/pppd/ l'option
<tt/defaultroute/). C'est cette route qui indique à votre PC Linux d'envoyer
tous les paquets qui ne sont pas destinés à vos interfaces Ethernet - vers
lesquelles vous avez des routes réseau spécifiques - au serveur PPP lui-même.
Le serveur PPP est alors responsable de router vos paquets vers Internet et
de vous renvoyer les paquets chez vous.

<p>
Si vous ne voyez pas une table de routage avec deux entrées, quelque chose ne
marche pas. En particulier si votre syslog contient des messages indiquant que
<tt/pppd/ ne remplace pas la route par défaut, vous devez avoir une route par
défaut qui pointe sur votre interface Ethernet - qui <bf/DOIT/ être remplacée
par une route réseau spécifique : <bf/VOUS NE POUVEZ AVOIR QU'UNE SEULE ROUTE
PAR DEFAUT !!!/

<p>
Vous devez explorer vos fichiers d'initialisation de votre système pour trouver
où est configuré votre route par défaut (elle doit utiliser la commande
<tt/route add default.../). Changer cette commande par quelque chose du genre
<tt/route add net .../.

<p>
Maintenant testez la liaison en 'pingant' le serveur à l'adresse IP affiché
par ifconfig, comme suit : 

<code>
ping 10.144.153.51
</code>

<p>
Vous devriez obtenir

<code>
PING 10.144.153.51 (10.144.153.51): 56 data bytes
64 bytes from 10.144.153.51: icmp_seq=0 ttl=255 time=328.3 ms
64 bytes from 10.144.153.51: icmp_seq=1 ttl=255 time=190.5 ms
64 bytes from 10.144.153.51: icmp_seq=2 ttl=255 time=187.5 ms
64 bytes from 10.144.153.51: icmp_seq=3 ttl=255 time=170.7 ms
</code>

<p>
Ce listing doit continuer sans jamais s'arrêter - pour le stopper, taper
CTRL C, vous recevrez alors des informations complémentaires :

<code>
--- 10.144.153.51 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 170.7/219.2/328.3 ms
</code>

<p>
Jusqu'ici tout va bien, jusqu'ici tout va bien.

<p>
Maintenant, essayez de pinger un nom d'hôte (pas le nom du serveur PPP 
lui-même) mais un hôte d'un autre site dont vous SAVEZ qu'il y a de très fortes 
chances qu'il marche...). Par exemple

<code>
ping sunsite.unc.edu
</code>
<em/ ou lip6.fr/

<p>
Dans ce cas, il va y avoir une petite pause le temps que Linux obtienne 
l'adresse IP du nom de hôte que vous avez 'pingé' par le DNS que vous avez
spécifié dans le <tt>/etc/resolv.conf</tt> - ne vous inquiétez pas (les 
lumières de votre modem devraient clignoter). Rapidement, vous devriez avoir
l'affichage suivant

<code>
 PING sunsite.unc.edu (152.2.254.81): 56 data bytes
64 bytes from 152.2.254.81: icmp_seq=0 ttl=254 time=190.1 ms
64 bytes from 152.2.254.81: icmp_seq=1 ttl=254 time=180.6 ms
64 bytes from 152.2.254.81: icmp_seq=2 ttl=254 time=169.8 ms
64 bytes from 152.2.254.81: icmp_seq=3 ttl=254 time=170.6 ms
64 bytes from 152.2.254.81: icmp_seq=4 ttl=254 time=170.6 ms
</code>

<p>
Là encore, arrêtez le en tapant CTRL C pour obtenir les statistiques...

<code>
--- sunsite.unc.edu ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 169.8/176.3/190.1 ms
</code>

<p>
Si vous n'avez pas de réponse, essayer de pinger l'adresse de votre serveur DNS
de votre FAI. Si vous n'avez pas de résultat, alors il doit y avoir un
problème avec votre <tt>/etc/resolv.conf</tt>.

<p>
Si ça ne fonctionne pas, vous devez avoir un problème de routage, ou votre FAI
a un problème à vous renvoyer les paquets. Vérifiez les tables de routages
présentées plus haut et si tout est OK, contacter votre FAI. Si cela se trouve
après votre FAI, alors le problème est de votre coté.

<p>
Si tout marche correctement, fermez la connexion en tapant

<code>
ppp-off
</code>

<p>
Après une courte pause, le modem devrait raccrocher.

<p>
Si ça ne marche pas, soit vous éteignez votre modem, soit vous lancez votre 
programme de communication et vous interrompez votre modem avec +++ puis 
vous raccrochez avec ATH0 quand vous recevez le message OK de votre modem.

<p>
Vous devez également effacer le fichier créé par pppd
<code>
rm -f /var/lock/LCK..ttySx
</code>

<sect>Automatiser votre connexion - Créer les scripts de connexion 
<label id="automatiser">
<p>
Même si vous pouvez continuer à vous connecter à la main comme montré ci-dessus
il est plus sympa de faire quelques scripts pour automatiser tout ça.

<p>
Quelques scripts vont automatiser la connexion et le lancement de PPP, vous
n'aurez alors plus qu'à envoyer une seule commande (en étant <bf/root/ ou membre
du groupe PPP) pour lancer votre connexion.

<sect1>Scripts de connexion pour l'authentification nom utilisateur/mot de passe
<p>
Si votre FAI n'a pas besoin d'utiliser PAP/CHAP, ces scripts sont faits pour
vous !

<p>
Si le paquetage ppp est correctement installé, vous devez avoir deux fichiers
d'exemple. Pour PPP 2.1.2 il sont dans <tt>/usr/sbin</tt> et pour PPP 2.2 il
sont dans <tt>/etc/ppp/scripts</tt>. Ils s'appellent

<p>
pour PPP-2.1.2

<tscreen><verb>
ppp-on
ppp-off
</verb></tscreen>

<p>
et pour PPP 2.2

<tscreen><verb>
ppp-off
ppp-on
ppp-on-dialer
</verb></tscreen>

<p>
Maintenant, si vous utilisez PPP 2.1.2, je vous presse fermement de détruire 
ces fichiers d'exemple. Il y a pleins de problèmes potentiels avec ceux-ci -
et ne me dites pas qu'ils marchent correctement - je les ai également utilisé
pendant des années (et les recommandait même dans la première version de ce
HOWTO) !

<p>
Pour les utilisateurs de PPP 2.1.2, voici de BIEN MEILLEURS modèles,
pris dans la distribution 2.2 de PPP. Je vous conseille de les copier et
d'utiliser ces scripts à la place des anciens de PPP-2.1.2.

<sect1>Le script ppp-on
<p>
C'est le premier des DEUX scripts qui lance la connexion.

<code>
#!/bin/sh
#
# Script pour initialiser une connexion PPP. C'est la premiere partie de deux
# scripts. Ce ne sont pas des scripts securises, puisque les codes sont
# visibles avec la commande 'ps'. Cependant ils sont simples.
#
# Ce sont des parametres a changer selon les besoins
TELEPHONE=555-1212    # Le numero de telephone de la connexion
ACCOUNT=george        # Le nom du compte (comme dans 'George Burns')
PASSWORD=gracie       # Le mot de passe du compte (et 'Gracie Allen')
LOCAL_IP=0.0.0.0      # L'adresse IP locale si elle est connue Dynamic = 0.0.0.0
REMOTE_IP=0.0.0.0     # Adresse IP distante. Normally 0.0.0.0
NETMASK=255.255.255.0 # Le masque reseau si besoin
#
# Les exporter pour qu'ils soit disponible avec 'ppp-on-dialer'
export TELEPHONE ACCOUNT PASSWORD
#
# C'est l'emplacement du script qui compose le numero et se connecte.
# Utilisez les noms de fichiers absolus, car la variable $PATH n'est pas
# utilisee avec l'option connect. (Faire ca en etant 'root' entraine un
# trou de securite.)
#
DIALER_SCRIPT=/etc/ppp/ppp-on-dialer
#
# Commencer la connexion
#
#
exec /usr/sbin/pppd debug /dev/ttySx 38400 \
        $LOCAL_IP:$REMOTE_IP \
        connect $DIALER_SCRIPT
</code>

<p>
Voici le script ppp-on-dialer :

<code>
#!/bin/sh
#
# C'est la deuxieme partie du script ppp-on. Il contient le protocole de 
# connexion de la connexion desiree.
#
/usr/sbin/chat -v                                                 \
        TIMEOUT         3                               \
        ABORT           '\nBUSY\r'                      \
        ABORT           '\nNO ANSWER\r'                 \
        ABORT           '\nRINGING\r\n\r\nRINGING\r'    \
        ''              \rAT                            \
        'OK-+++\c-OK'   ATH0                            \
        TIMEOUT         30                              \
        OK              ATDT$TELEPHONE                  \
        CONNECT         ''                              \
        ogin:--ogin:    $ACCOUNT                        \
        assword:        $PASSWORD
</code>

<p>
Avec PPP-2.2, le script <tt/ppp-off/ ressemble à :

<code>
#!/bin/sh
######################################################################
#
# Determine le peripherique a terminer.
#
if [ "$1" = "" ]; then
        DEVICE=ppp0
else
        DEVICE=$1
fi

######################################################################
#
# Si le fichier pid ppp0 est present alors le programme est lance. Le stopper.
if [ -r /var/run/$DEVICE.pid ]; then
        kill -INT `cat /var/run/$DEVICE.pid`
#
# Si le kill ne marche pas, alors il n'y a pas de processus lance pour ce pid.
# Cela peut signifier que le fichier de lock a ete laisse. Vous souhaitez 
# peut-etre detruire le fichier de lock en meme temps.
        if [ ! "$?" = "0" ]; then
                rm -f /var/run/$DEVICE.pid
                echo "ERROR: Removed stale pid file"
                exit 1
        fi
#
# Succes. pppd a enlever tout ce qu'il avait cree.
        echo "PPP link to $DEVICE terminated."
        exit 0
fi
#
# Le processus ppp ne marche pas pour ppp0
echo "ERROR: PPP link is not active on $DEVICE"
exit 1
</code>

<sect1>Editer les scripts de démarrage de PPP fournis
<p>
Puisque les nouveaux scripts sont en deux parties, nous allons les éditer 
chacun leur tour.

<sect2>Le script ppp-on
<p>
Vous devez éditer ces fichiers pour contenir VOTRE nom utilisateur de votre FAI,
VOTRE mot de passe de votre FAI, et le numéro de téléphone de votre FAI. 

<p>
Chacune des lignes ressemblant à <tt/TELEPHONE=/ définissent une variable
du shell contenant les informations à droite du '=' (mise à part les
commentaires évidemment). Éditer donc toutes les lignes de ce fichier
pour qu'il corresponde a votre FAI et votre connexion.

<p>
De plus, si vous configurez l'adresse IP (si vous avez besoin) dans le fichier
<tt>/etc/ppp/options</tt>, DETRUISEZ les lignes mentionnant

<code>
$LOCAL_IP:$REMOTE_IP \
</code>

<p>
Assurez-vous également que la variable shell DIALER_SCRIPT pointe sur le
chemin complet du script d'appel qui sera réellement utilisé. Ainsi, si vous
déplacez ou renommez ce script, assurez-vous que vous modifier correctement
cette ligne dans le script <tt/ppp-on/ !

<sect2> Le script ppp-on-dialer
<p>
C'est le deuxième des scripts qui lance votre liaison PPP.

<p>
Remarque : un script <tt/chat/ est normalement sur une ligne complète.
Les backslashs sont utilisés pour permettre à la ligne de se répartir
sur plusieurs lignes physiques (pour une lisibilité plus humaine) et 
ne font pas partie du script lui-même.

<p>
Cependant, il est très utile de le regarder en détail, comme cela nous 
comprenons ce qu'il est réellement supposé faire !

<sect1>Ce que script Chat signifie...
<p>
Un script <tt/chat/ est une séquence de paires de <tt>&dquot;</tt>chaînes
d'attentes<tt>&dquot;</tt> et de <tt>&dquot;</tt>chaînes d'envoi
<tt>&dquot;</tt>. En particulier, remarquez que nous attendons <bf/TOUJOURS/
quelque chose avant d'envoyer quoi que ce soit.

<p>
Si nous envoyons quelque chose <bf/SANS/ avoir rien reçu avant, nous devons
attendre une chaîne vide avant (indiquée par un 
<tt>&dquot;</tt><tt>&dquot;</tt>) Et de la même manière attendre quelque chose
sans avoir rien envoyé ! Ainsi, si les chaîne consistent en quelques mots,
(c.-à-d. NO CARRIER), vous devez entourez les chaînes par des quotes pour 
qu'elles soient vues comme une seule entité par chat.

<p>
La ligne <tt/chat/ de notre modèle est :

<code>
exec /usr/sbin/chat -v
</code>
<p>
Invoque chat, le -v indique à <tt/chat/ de mettre toutes ses entrée/sorties 
dans le journal système (généralement /var/log/messages). Une fois que votre 
script <tt/chat/ marchera correctement, éditez cette ligne et enlevez le -v 
pour économiser des messages inutiles dans votre syslog.

<code>
TIMEOUT         3
</code>
Ça définit un temps d'attente de trois secondes avant la réception d'une 
entrée attendue. Vous devrez l'augmenter à 5 ou 10 secondes si vous utilisez un
modem extrêmement lent !

<code>
ABORT           '\nBUSY\r'
</code>
<p>
Si la chaîne BUSY est reçue, abandonner l'opération.

M<code>
ABORT           '\nNO ANSWER\r'
</code>
<p>
Si la chaîne NO ANSWER est reçue, abandonner l'opération.

<code>
ABORT           '\nRINGING\r\n\r\nRINGING\r'
</code>
<p>
Si la chaîne RINGING est reçue de manière répétée, abandonner l'opération.
C'est parce que quelqu'un vous appelle !

<code>
&dquot;              \rAT
</code>
<p>
Ne rien attendre du modem et envoyer la chaîne AT.
 

<code>
OK-+++\c-OK   ATH0
</code>
<p>
C'est un petit plus compliqué car cela utilise certaines capacités de chat
à récupérer les erreurs.

<p>
Ça veux dire...Expect OK, si on ne l'a pas reçu (parce que le modem n'est pas
en ligne de commande) alors envoyer +++ (la chaîne standard des modems
compatible Hayes pour retourner en ligne de commande) et attendre OK.
Ensuite envoyer ATH0 (la chaîne pour raccrocher). Cela permet au script de 
répondre à la situation ou votre modem avait laissé la ligne décrochée !

<code>
TIMEOUT         30
</code>
<p>
Mettre le temps d'attente à 30 secondes pour le reste du script. Si vous avez
des soucis avec des abandons du script <tt/chat/ à cause de timeout, augmentez 
cette valeur à 45 secondes ou plus.

<code>
OK              ATDT$TELEPHONE
</code>
<p>
Attends un OK (la réponse du modem à la commande ATH0) et compose le numéro
que nous voulez appeler.

<code>
CONNECT         ''
</code>
<p>
Attendre CONNECT(ce que le modem nous envoie lorsque le modem distant décroche)
et n'envoie rien en réponse.

<code>
ogin:--ogin:    $ACCOUNT
</code>
<p>
Une fois encore nous avons une récupération d'erreur ici. Attendre le message
de login (...ogin:) mais si nous ne le recevons pas au bout d'un certain temps,
envoyer un retour chariot et attendre une nouvelle fois le message de
login. Lorsque le message est reçu, envoyer le nom utilisateur (stocké dans
la variable shell &dollar;ACCOUNT).

<code>
assword:        $PASSWORD
</code>
<p>
Attendre le message du mot de passe et envoyer le mot de passe (là aussi 
stocké dans une variable shell).

<p>
Ce script <tt/chat/ à une capacité de récupération d'erreurs résonnable. Chat 
possède bien d'autres possibilités que celles détaillés. Pour plus
d'informations, consulter la page de manuel de <tt/chat/ (<tt/man 8 chat/).

<sect2>Démarrer PPP sur le serveur final
<p>
Bien que le script ppp-on-dialer soit parfait pour les serveurs qui lancent
automatiquement <tt/pppd/ sur le serveur final une fois que vous êtes connectés,
certains serveurs nécessitent que vous lanciez PPP explicitement sur le serveur.

<p>
Si vous avez besoin d'envoyer une commande de lancement de PPP sur le serveur,
vous DEVEZ éditer le script ppp-on-dialer.

<p>
A la fin du script (après la ligne password) ajouter une paire 
<bf/attente envoi/ en plus - elle cherchera un message de login (une suite de
caractères qui ont une signification particulière dans le shell Bourne - 
comme &dollar; et [ ou ] (les crochets ouverts et fermés).

<p>
Une fois que <tt/chat/ à obtenu le prompt du shell, <tt/chat/ doit envoyer la 
commande de démarrage de ppp nécessaire sur le serveur PPP de votre FAI.

<p>
Pour ma part, mon serveur PPP utilise un prompt Bash standard
<code>
[hartr@kepler hartr]$
</code>

<p>
et nécessite que je tapes

<code>
ppp
</code>

<p>
pour lancer ppp sur le serveur.

<p>
Une idée judicieuse peut être d'ajouter un peu de récupération d'erreur, dans
mon cas j'utilise
<code>
        hartr--hartr    ppp
</code>

<p>
Cela signifie que si je ne reçois pas le prompt dans le temps imparti, j'envoie
un retour chariot et je recherche le prompt une nouvelle fois.

<p>
Une fois que le message est reçu, j'envoie la chaîne <tt/ppp/.

<p>
Remarque : n'oubliez pas d'ajouter un &bsol; à la fin de la ligne précédente
pour que <tt/chat/ pense que le script de connexion de <tt/chat/ est toujours 
sur une seule ligne !

<p>
Malheureusement, certains serveurs génèrent un nombre de messages très 
variable ! Vous aurez peut-être besoin de vous connecter plusieurs fois
avec <tt/minicom/ pour comprendre comment ça marche et récupérer une chaîne 
&dquot;d'attente&dquot; stable.

<sect1>Un script chat pour les connections authentifiées avec PAP/CHAP
<p>
Si votre FAI utilise PAP/CHAP, alors votre script <tt/chat/ est bien plus 
simple. Tout ce que votre script <tt/chat/ doit faire est de composer le 
numéro, attendre
la connexion et ensuite laisser <tt/pppd/ s'occuper du processus de connexion !

<code>
#!/bin/sh
#
# C'est la deuxieme partie du script ppp-on. Il contient le protocole de 
# connexion de la connexion desiree.
#
exec /usr/sbin/chat -v                                  \
        TIMEOUT         3                               \
        ABORT           '\nBUSY\r'                      \
        ABORT           '\nNO ANSWER\r'                 \
        ABORT           '\nRINGING\r\n\r\nRINGING\r'    \
        ''              \rAT                            \
        'OK-+++\c-OK'   ATH0                            \
        TIMEOUT         30                              \
        OK              ATDT$TELEPHONE                  \
        CONNECT         ''                              \
</code>

<sect1>Les options <tt/debug/ et <tt/file option_file/ de pppd
<p>
Comme nous l'avons déjà vu, vous pouvez activer les informations de débuggage
avec l'option -d de pppd. L'option 'debug' est équivalente à celle-ci.

<p>
Puisque vous établissez la connexion avec un nouveau script, laissez pour le
moment les informations de débuggage. (Attention : si votre espace disque est
réduit, les échanges de connexion de <tt/pppd/ peuvent rapidement augmenter 
votre fichier syslog et vous amener des problèmes - mais pour aller jusque là,
il faut que vous essayez et vous échouiez vos connexions un certain temps).

<p>
Une fois que tout marche correctement, vous pouvez alors enlever cette option.

<p>
Si vous avez appelé votre fichier d'options de ppp autrement que
<tt>/etc/ppp/options</tt> ou <tt>/etc/ppp/options.ttySx</tt>, spécifiez le
nom du fichier avec l'option <tt/file/ de <tt/pppd/ :

<code>
exec /usr/sbin/pppd debug file options.myserver /dev/ttyS0 38400 \
</code>

<sect>Testez votre script de connexion
<p>
Ouvrez un nouveau Xterm <bf/root/ (si vous êtes sous X) ou ouvrez une nouvelle 
console virtuelle et connectez vous comme <bf/root/.

<p>
Dans cette nouvelle session, tapez la commande

<tscreen><verb>
tail -f /var/log/messages
</verb></tscreen>

<p>
(ou l'endroit exact ou se trouve le fichier log).

<p>
Dans la première fenêtre (ou console virtuelle), tapez la commande

<tscreen><verb>
ppp-on &amp;
</verb></tscreen>

<p>
(ou le nom que vous avez donné à la nouvelle version de votre  /usr/sbin/ppp-
on). Si vous ne mettez pas le script en tâche de fond en spécifiant &amp; en
fin de commande, vous ne récupérerez pas le prompt de votre terminal avant
que ppp se termine (ou que la liaison se termine).

<p>
Maintenant revenez dans la fenêtre ou vous affichez votre journal système.

<p>
L'affichage devrait ressembler à ce qui suit (si vous avez spécifié l'option -vi
a <tt/chat/ et -d à <tt/pppd/ )....c'est le déroulement du script <tt/chat/ et 
des réponses envoyées dans le fichier journal système suivi des informations 
de démarrage de <tt/pppd/ :

<code>
Oct 21 16:09:58 hwin chat[19868]: abort on (NO CARRIER)
Oct 21 16:09:59 hwin chat[19868]: abort on (BUSY)
Oct 21 16:09:59 hwin chat[19868]: send (ATZ^M)
Oct 21 16:09:59 hwin chat[19868]: expect (OK)
Oct 21 16:10:00 hwin chat[19868]: ATZ^M^M
Oct 21 16:10:00 hwin chat[19868]: OK -- got it
Oct 21 16:10:00 hwin chat[19868]: send (ATDT722298^M)
Oct 21 16:10:00 hwin chat[19868]: expect (CONNECT)
Oct 21 16:10:00 hwin chat[19868]: ^M
Oct 21 16:10:22 hwin chat[19868]: ATDT722298^M^M
Oct 21 16:10:22 hwin chat[19868]: CONNECT -- got it
Oct 21 16:10:22 hwin chat[19868]: send (^M)
Oct 21 16:10:22 hwin chat[19868]: expect (ogin:)
Oct 21 16:10:23 hwin chat[19868]: kepler login: -- got it
Oct 21 16:10:23 hwin chat[19868]: send (hartr^M)
Oct 21 16:10:23 hwin chat[19868]: expect (ssword:)
Oct 21 16:10:23 hwin chat[19868]:  hartr^M
Oct 21 16:10:23 hwin chat[19868]: Password: -- got it
Oct 21 16:10:23 hwin chat[19868]: send (??????^M)
Oct 21 16:10:23 hwin chat[19868]: expect (hartr)
Oct 21 16:10:24 hwin chat[19868]: [hartr -- got it
Oct 21 16:10:24 hwin chat[19868]: send (ppp^M)
Oct 21 16:10:27 hwin pppd[19872]: pppd 2.1.2 started by root, uid 0
Oct 21 16:10:27 hwin pppd[19873]: Using interface ppp0
Oct 21 16:10:27 hwin pppd[19873]: Connect: ppp0 <--> /dev/cua1
Oct 21 16:10:27 hwin pppd[19873]: fsm_sdata(LCP): Sent code 1, id 1.
Oct 21 16:10:27 hwin pppd[19873]: LCP: sending Configure-Request, id 1
Oct 21 16:10:27 hwin pppd[19873]: fsm_rconfreq(LCP): Rcvd id 1.
Oct 21 16:10:27 hwin pppd[19873]: lcp_reqci: rcvd MRU
Oct 21 16:10:27 hwin pppd[19873]: (1500)
Oct 21 16:10:27 hwin pppd[19873]:  (ACK)
Oct 21 16:10:27 hwin pppd[19873]: lcp_reqci: rcvd ASYNCMAP
Oct 21 16:10:27 hwin pppd[19873]: (0)
Oct 21 16:10:27 hwin pppd[19873]:  (ACK)
Oct 21 16:10:27 hwin pppd[19873]: lcp_reqci: rcvd MAGICNUMBER
Oct 21 16:10:27 hwin pppd[19873]: (a098b898)
Oct 21 16:10:27 hwin pppd[19873]:  (ACK)
Oct 21 16:10:27 hwin pppd[19873]: lcp_reqci: rcvd PCOMPRESSION
Oct 21 16:10:27 hwin pppd[19873]:  (ACK)
Oct 21 16:10:27 hwin pppd[19873]: lcp_reqci: rcvd ACCOMPRESSION
Oct 21 16:10:27 hwin pppd[19873]:  (ACK)
Oct 21 16:10:27 hwin pppd[19873]: lcp_reqci: returning CONFACK.
Oct 21 16:10:27 hwin pppd[19873]: fsm_sdata(LCP): Sent code 2, id 1.
Oct 21 16:10:27 hwin pppd[19873]: fsm_rconfack(LCP): Rcvd id 1.
Oct 21 16:10:27 hwin pppd[19873]: fsm_sdata(IPCP): Sent code 1, id 1.
Oct 21 16:10:27 hwin pppd[19873]: IPCP: sending Configure-Request, id 1
Oct 21 16:10:27 hwin pppd[19873]: fsm_rconfreq(IPCP): Rcvd id 1.
Oct 21 16:10:27 hwin pppd[19873]: ipcp: received ADDR
Oct 21 16:10:27 hwin pppd[19873]: (10.144.153.51)
Oct 21 16:10:27 hwin pppd[19873]:  (ACK)
Oct 21 16:10:27 hwin pppd[19873]: ipcp: received COMPRESSTYPE
Oct 21 16:10:27 hwin pppd[19873]: (45)
Oct 21 16:10:27 hwin pppd[19873]:  (ACK)
Oct 21 16:10:27 hwin pppd[19873]: ipcp: returning Configure-ACK
Oct 21 16:10:28 hwin pppd[19873]: fsm_sdata(IPCP): Sent code 2, id 1.
Oct 21 16:10:30 hwin pppd[19873]: fsm_sdata(IPCP): Sent code 1, id 1.
Oct 21 16:10:30 hwin pppd[19873]: IPCP: sending Configure-Request, id 1
Oct 21 16:10:30 hwin pppd[19873]: fsm_rconfreq(IPCP): Rcvd id 255.
Oct 21 16:10:31 hwin pppd[19873]: ipcp: received ADDR
Oct 21 16:10:31 hwin pppd[19873]: (10.144.153.51)
Oct 21 16:10:31 hwin pppd[19873]:  (ACK)
Oct 21 16:10:31 hwin pppd[19873]: ipcp: received COMPRESSTYPE
Oct 21 16:10:31 hwin pppd[19873]: (45)
Oct 21 16:10:31 hwin pppd[19873]:  (ACK)
Oct 21 16:10:31 hwin pppd[19873]: ipcp: returning Configure-ACK
Oct 21 16:10:31 hwin pppd[19873]: fsm_sdata(IPCP): Sent code 2, id 255.
Oct 21 16:10:31 hwin pppd[19873]: fsm_rconfack(IPCP): Rcvd id 1.
Oct 21 16:10:31 hwin pppd[19873]: ipcp: up
Oct 21 16:10:31 hwin pppd[19873]: local  IP address 10.144.153.104
Oct 21 16:10:31 hwin pppd[19873]: remote IP address 10.144.153.51
</code>

<p>
(Remarque - j'utilise les adresses IP STATIQUES - ma machine l'envoie au 
serveur PPP - vous ne verrez pas la même chose si vous utilisez des adresses IP
DYNAMIQUES.) Ainsi, le server nécessite une commande spécifique pour démarrer
ppp à la fin.

<p>
Ca semble OK - alors testez comme avant avec des ping des adresses IP et des
noms des hôtes.

<p>
Lancer votre navigateur web ou n'importe quoi d'autre et allez surfer -
vous êtes connecté !

<sect>Terminer une connexion PPP<label id="off">
<p>
Quand vous en avez terminé avec la liaison PPP, utilisez la commande standard
ppp-off pour la terminer (rappel - vous devez être <bf/root/ ou membre du 
groupe PPP ! ).

<p>
Dans votre fichier journal de votre système, il devrait y avoir quelque chose 
ressemblant à :

<code>
Oct 21 16:10:45 hwin pppd[19873]: Interrupt received: terminating link
Oct 21 16:10:45 hwin pppd[19873]: ipcp: down
Oct 21 16:10:45 hwin pppd[19873]: default route ioctl(SIOCDELRT): Bad address
Oct 21 16:10:45 hwin pppd[19873]: fsm_sdata(LCP): Sent code 5, id 2.
Oct 21 16:10:46 hwin pppd[19873]: fsm_rtermack(LCP).
Oct 21 16:10:46 hwin pppd[19873]: Connection terminated.
Oct 21 16:10:46 hwin pppd[19873]: Exit.
</code>

<p>
Ne pas s'inquiéter du <tt/SIOCDELRT/ - c'est juste <tt/pppd/ qui indique qu'il 
se termine, il n'y a pas à s'en inquiéter.

<sect>Résoudre les problèmes <label id="problemes"> 
<p>
Il y a de nombreuses raisons pour que votre liaison ne fonctionne pas -
<tt/chat/ n'a pas réussi à aller jusqu'au bout, vous avez une mauvaise ligne, 
etc.  Regardez votre syslog pour avoir des indications.

<sect1>J'ai compilé le support PPP dans le noyau, mais...
<p>
Un problème relativement courant est que les gens compilent le support PPP
dans leur noyau et après, lorsqu'ils essayent de lancer pppd, le noyau répond
qu'il ne supporte pas ppp ! Un grand nombre de raisons peuvent en être
la cause.

<sect2>Bootez-vous avec le bon noyau ?
<p>
Même si vous <bf/avez/ recomplié votre support de ppp dans le noyau, vous ne
bootez pas sur le nouveau noyau. Cela peut arriver si vous n'avez pas mis à
jour <tt>/etc/lilo.conf</tt> et relancé lilo.

<p>
Une bonne façon de vérifier le noyau est d'envoyer la commande <tt/uname -a/,
qui affiche la ligne ressemblant à

<code>
Linux archenland 2.0.28 #2 Thu Feb 13 12:31:37 EST 1997 i586
</code>

<p>
Cela donne la version du noyau et la date à laquelle il a été compilé - ce qui
vous donnera une bonne idée de ce qui se passe.

<sect2>Avez-vous compilé le support noyau de ppp comme un module ?
<p>
Si vous avez compilé le support de ppp comme un module, mais n'avez pas fait
d'installation des modules, alors vous pouvez avoir cette erreur. Relisez le
kernel-HOWTO et le fichier README de <tt>/usr/src/linux</tt> !

<p>
Une autre possibilité concernant les modules est que vous supposez que les
modules sont chargés automatiquement, alors que le daemon <tt/kerneld/ n'est
pas lancé (il charge et décharge les modules au vol). Vérifiez le mini-HOWTO
kerneld pour des informations sur la configuration de kerneld.

<sect2>Utilisez-vous une bonne version de PPP pour votre noyau ?
<p>
Vous <bf/devez/ utiliser ppp-2.2 avec les versions 2.0.x du noyau. Vous pouvez
utiliser ppp-2.2 avec les versions 1.2.x du noyau (si vous le patchez) sinon
vous devez utiliser ppp-2.1.2.

<sect2>Lancez vous pppd en étant root ?
<p>
Si vous ne lancez pas <tt/pppd/ en étant l'utilisateur <bf/root/ (et que 
<tt/pppd/ n'est pas suid vers <bf/root/), vous pourrez recevoir ce message.

<sect1>Mon modem se connecte mais PPP ne démarre jamais
<p>
Il y a d'innombrables possibilités avec ça (regardez dans comp.os.linux....).

<p>
Une erreur <bf/EXTREMEMENT/ fréquente est que vous avez mal tapé quelque chose
dans vos scripts. La seule chose à faire est de vérifier que vous avez la
conversation entre votre PC Linux et le serveur rapporté dans le syslog
/var/log/message) allez ensuite dans celui-ci <em/ligne par ligne/. Vous aurez
peut-être besoin d'appeler votre serveur ppp à la main pour revérifier tout ça.

<p>
Vous devez vérifier les messages de logs réels très attentivement - et ayez à
l'esprit que les hommes on tendance à lire ce qu'ils PENSENT avoir tapé - et non
ce qu'ils ont sous leurs yeux !

<sect1>Le syslog contient &dquot;<tt/serial line is not 8 bit clean/...&dquot;
<p>
Il y a plusieurs possibilités à cela - comme des retours sur la ligne etc.,
qui peuvent être la conséquence d'une (ou plusieurs) choses.

<p>
Pour comprendre ce qui se passe, il est nécessaire de chercher se qui se passe
en coulisses dans <tt/pppd/ lui-même.

<p>
Lorsque <tt/pppd/ démarre, il envoie des paquets LCP (Link Control Protocol) 
à la machine distante. Si il reçoit une réponse valide il passe ensuite à 
l'étape suivante (avec IPCP - les paquets de contrôle IP) et c'est seulement 
une fois que cette négociation est terminée que les trames IP réelles 
commencent et que vous pouvez utiliser la liaison PPP.

<p>
Si il n'y a pas de serveur ppp fonctionnel à l'autre bout quand votre PC envoie
les paquets LCP, ceux-ci sont renvoyés par le processus de login final. Comme
ces paquets utilisent 8 bits, et sont réfléchis avec le 8ème bit (souvenez
vous qu'ASCII est un code 7 bits). PPP s'en aperçoit et s'en plaint.

<p>
Il y a plusieurs possibilité pour qu'un réflexion arrive.

<sect2>Vous n'êtes pas correctement connecté sur le serveur
<p>
Lorsque le script <tt/chat/ se termine, <tt/pppd/ démarre sur votre PC. 
Cependant, si
vous n'avez pas terminé le processus de connexion au serveur (comme envoyer
une commande nécessaire à lancer PPP sur le serveur), PPP ne se lancera pas.

<p>
Ainsi, le paquet LCP sera réfléchi et vous aurez une erreur.

<p>
Vous devez vérifier et corriger (si nécessaire) attentivement votre
script <tt/chat/ (voir plus haut).

<sect2>Vous n'avez pas lancé PPP sur le serveur
<p>
Certains serveurs PPP nécessitent que vous entriez une commande et/ou un
retour chariot après avoir terminé le processus de connexion et avant que
ppp soit lancé à l'autre bout.

<p> 
Vérifiez votre script <tt/chat/ (voir plus haut).

<p>
Si vous vous connectez à la main et que vous vous rendez compte que vous devez
envoyer sur ENTREE après avoir lancé PPP, ajouter simplement une paire 
attente/envoi vide à la fin de votre script <tt/chat/ (un chaîne vide envoie 
en fait ENTREE).

<sect1>Le processus PPP distant est long à démarrer
<p>
Là c'est un peu délicat !

<p>
Par défaut, votre <tt/pppd/ Linux est compilé pour envoyer un maximum de 10 
requêtes LCP de configuration. Si le serveur est un peu lent à démarrer, la 
totalité des 10 requêtes auront été envoyées avant que le serveur PPP distant 
n'ait eu le temps de les recevoir.

<p>
Sur votre machine, <tt/pppd/ voit la réflexion des 10 requêtes (avec le 8éme bit
inversé) et s'arrête.

<p>
Il y a deux façon de résoudre cela :

<p>
Ajouter <tt/lcp-max-configure 30/ comme option de ppp. Cela augmentera le
nombre de packets de configuration LCP que <tt/pppd/ enverra avant d'abandonner.
Pour les serveurs vraiment lents, vous devez même mettre plus que ça.

<p>
Sinon, vous pouvez être un peu malin de votre côté. Vous avez peut-être 
remarqué que lorsque vous vous connectez à la main au serveur PPP et que vous
démarrez alors PPP, le <bf/premier/ caractère que ppp envoie et qui apparaît est
toujours le caractère tilda (&tilde;).

<p>
En savant cela, vous pouvez ajouter une nouvelle paire <tt>attente/envoi</tt> à
la fin de votre script <tt/chat/ qui attendra un tilda et n'enverra rien. Cela
ressemblera alors à :

<code>
\~      ''
</code>

<p>
Remarque : comme le caractère tilda a une signification particulière pour le
shell, il doit être échappé (en fait précédé par un backslash).

<sect1>La route par défaut n'est pas configurée
<p>
Si <tt/pppd/ refuse de configurer la route par défaut, c'est parce que (assez 
justement) il refuse de remplacer/supprimer une route par défaut existante.

<p>
La raison habituelle lorsque cette erreur apparaît est que certaines 
distributions configurent une route par défaut pour votre carte Ethernet
au lieu de la configurer comme une route réseau spécifique.

<p>
Voir le Linux NAG et le HOWTO Net2/3 pour des informations sur la façon de 
configurer correctement votre carte Ethernet et les routes associées.

<p>
Une alternative à cela est que votre réseau local utilise déjà un
gateway/routeur et que votre table de routage est déjà configurée pour envoyer
la route par défaut à cet endroit.

<p>
Résoudre cette situation peut nécessiter quelques connaissances de réseau IP
qui sort du domaine de ce HOWTO. Il est suggéré d'obtenir l'avis d'un expert
(par les groupes de news ou quelqu'un que vous pouvez interroger près de vous).

<sect1>Autres problèmes
<p>
Il y a des tas de raisons autres que celles-ci pour que ppp ne parvienne pas
à se connecter et/ou fonctionner correctement.

<p>
Lisez la FAQ PPP(qui est une série de questions-réponses). C'est un document
très didactique et les réponses y SONT ! De ma propre (et triste) expérience,
si la réponse à votre problème n'est pas dedans, votre problème N'est PAS de la
faute de ppp ! Pour ma part, j'utilisais un noyau ELF alors que je n'avais pas
mis à jour les modules du noyau. J'ai juste perdu 2 jours (et presque une 
nuit) à chercher comment doit être un serveur PPP parfait avant de faire 
lumière !

<sect>Obtenir de l'aide quand on est totalement perdu
<p>
Si vous n'arrivez pas à faire fonctionner votre liaison PPP, relisez ce 
document et tout vérifier - en conjonction avec les sorties de "chat-v..."
et "pppd -d" dans votre journal système.
 
<p>
Consultez également la documentation de PPP la FAQ et tout les documents
mentionnés ici !

<p>
Si vous êtes encore bloqué, essayez les groupes de news comp.os.linux.misc et
comp.os.linux.networking qui sont régulièrement parcourus par des gens
capable de vous aider sur PPP ainsi que dans comp.protocols.ppp

<p>
Vous pouvez essayer de m'envoyer personnellement un email, mais si j'ai
une journée (et même une vie) chargé, je ne garanti pas de répondre rapidement
(même pas du tout) selon la quantité de travail en cours et l'état de ma
vie privée !

<p>
En particulier - <bf/NE POSTEZ PAS DES PAGES ET DES PAGES DE SORTIE DE 
DEBUGGAGE DANS LES NEWS GROUPS NI MEME A MOI PAR EMAIL/ - c'est une énorme 
perte de bande passante, et la majorité sera envoyé dans /dev/null (à moins 
qu'elle ne soit expressément demandé).

<sect>Problèmes classiques lorsque la liaison fonctionne
<p>
Un des problèmes que vous rencontrerez est que de nombreux fournisseurs 
d'accès est qu'ils ne supporterons que les programmes de connexions qu'ils 
distribuent avec les nouveaux comptes. Il sont (habituellement) pour Microsoft
Windows :-( - et la plupart des bureau d'aide des fournisseurs d'accès
ne sembleront rien savoir au sujet d'Unix (ou Linux). Donc préparez vous
à une assistance limité de leur part !

<p>
Vous pouvez évidemment leur faire une faveur et leur apprendre ce qu'est Linux
(certaines personnes au support de votre fournisseur d'accès seront
relativement 'branché' avec le monde Internet est auront une machine Linux
chez eux - bien sûr que ça existe ! )

<sect1>Je n'arrive pas à voir après le serveur PPP ou je suis connecté
<P>
OK - votre connexion PPP est lancée et fonctionne vous pouvez pinger le
serveur PPP avec son adresse IP (la deuxième ou "remote" adresse IP affichée 
par <tt/ifconfig ppp0/), mais vous ne pouvez rien atteindre après cela.

<p>
Tout d'abord, essayez de pinger les adresses IP que vous avez spécifié dans
/etc/resolv.conf comme serveur de noms. Si elles marchent, vous <bf/pouvez/ 
voir après votre serveur PPP (en tout cas ce qui à une adresse IP identique
à ce que vous avez spécifié). Maintenant essayez de pinger l'adresse 
complète de votre fournisseur d'accès :

<tscreen><verb>
ping mon.fournisseur.internet.fr
</verb></tscreen>

<p>
Si ça ne marche pas, vous avez un problème avec la résolution des noms. C'est
probablement à cause d'une faute de frappe dans votre fichier /etc/resolv.conf.
Vérifiez ça attentivement à partir des informations que vous aviez obtenues en
appelant votre fournisseur d'accès. Si ça semble correct, appelez votre
fournisseur d'accès, et vérifiez que vous avez noté l'adresse IP correctement.

<p>
Si ça ne marche TOUJOURS pas (et que votre fournisseur d'accès vous confirme
que le serveur de noms fonctionne correctement), vous devez avoir un problème
ailleurs - et je vous suggère de vérifier votre installation de Linux 
(en particulier les permissions des fichiers).

<p>
Si vous ne pouvez TOUJOURS pas pinger le serveur de nom de votre fournisseur
d'accès par l'adresse IP, soit il est éteint (appelez les par téléphone et 
vérifiez) soit il y a un problème de routage du côté de votre fournisseur
d'accès. De même appelez-les et demandez leur.

<p>
Un autre possibilité est qu'à l'autre bout le serveur PPP Linux n'ait pas
l'option IP forwarding d'activée dans le noyau !

<p>
Un bon test est d'essayer de se connecter avec le programme que votre 
fournisseur d'accès vous a donné pour (oups) Microsoft Windows. Si tout marche
sur un autre système d'exploitation avec exactement le même compte, alors
le problème vient de votre machine Linux et NON de votre fournisseur d'accès.

<sect1>Je peux envoyer du courrier mais pas en recevoir
<p>
Si vous avez une adresse IP dynamique, c'est tout à fait normal. Voir 
"Configurer les services" plus bas.

<sect1>Pourquoi les gens ne peuvent pas faire de finger, WWW, gopher, talk etc
avec ma machine ?
<p>
La aussi, si vous utilisez une adresse IP dynamique c'est tout à fait normal.
voir "Configurer les services" plus bas.


<sect>Utiliser les services Internet avec des adresses IP dynamiques
<label id="dynamic-serveur">
<p>
Si vous utilisez une adresse IP dynamique (et tous les provideurs ne vous
donnerons qu'une adresse dynamique à moins que vous ne payez bien plus pour
votre connexion), vous devez accepter les limitations qu'elle impose.

<p>
Tout d'abord, les requêtes pour les services sortant fonctionneront 
parfaitement. Cela signifie que vous pourrez envoyer du courrier avec sendmail
(si sendmail est configuré correctement), les fichiers ftp pour les sites 
distants, les fingers vers d'autres machines, surfer sur le web etc.

<p>
En particulier, vous pourrez répondre au courrier que vous avez reçu même si 
votre machine n'est plus connectée. Le courrier restera dans votre queue de
messages jusqu'à ce que vous appeliez votre FAI.

<p> 
Cependant, votre machine N'est PAS connectée à Internet 24H/24, et en plus elle
n'a pas la même adresse IP à chaque fois qu'elle se connecte. Il est donc
impossible de recevoir du courrier électronique directement sur votre machine,
et de créer un serveur web et ftp que vos amis pourraient accéder ! A partir
du moment ou ça concerne Internet, votre machine n'est pas unique, ni accessible
de manière permanente comme cela serait le cas avec une adresse IP unique
(rappel - les autres machines utilisent les adresses IP pour accéder à votre 
machine).

<p>
Si vous configurez en serveur WWW (ou n'importe quoi d'autre), il est 
totalement inconnu des utilisateurs d'Internet A MOINS QU'ils soient au 
courant que votre machine est connectée et qu'ils connaissent votre adresse IP
courante. Il y a plusieurs façon de fournir cette information, vous demander
par téléphone, leur envoyer un e-mail pour leur dire, ou utiliser un fichier
".plan" sur le compte shell de votre fournisseur d'accès (en partant du 
principe que votre fournisseur d'accès permet les script shell et les finger).

<p>
Maintenant, pour la majorité des utilisateurs, ça n'est pas vraiment un 
problème - la plupart des gens veulent pouvoir envoyer et recevoir leur email
(sur le compte de leur fournisseur d'accès) et faire des connexions sortantes
vers WWW, ftp et d'autres services d'Internet. Si vous AVEZ un besoin impératif
de connexion sortantes, vous feriez mieux de prendre une adresse IP statique.
Cependant, vous pouvez aussi explorer les méthodes astucieuses ci dessous...

<sect1>Configurer le courrier électronique (email)
<p>
Même avec une adresse IP dynamique, vous devrez certainement configurer 
sendmail sur votre machine pour envoyer le courrier que vous écrivez localement.
La configuration de sendmail peut être obscure et difficile - ce document
ne vous parleras pas de la façon de faire. Cependant, vous aimeriez sans doute
configurer sendmail pour que votre fournisseur d'accès soit considéré comme 
un hôte "smart relay" (l'options <bf/DS/ de sendmail). (Pour plus d'info sur
la configuration de sendmail, voir la documentation de sendmail - et regardez 
la configuration de m4 fourni avec sendmail. Il y a forcement quelque chose
qui réponds à ce que vous cherchez).

<p>
Il y a un excellent livre sur Sendmail (une véritable 'bible' aux éditions
O'Reilly and Associates), mais c'est certainement beaucoup trop pour la 
plupart des utilisateurs !

<p>
Une fois que vous avez configuré sendmail, vous avez probablement envie que
sendmail envoie les messages en attente dès que la connexion PPP est lancée.
Pour cela, ajouter la commande

<tscreen><verb>
sendmail -q &
</verb></tscreen>

<p>
dans votre script /etc/ppp/ip-up (voir plus haut).

<p>
Les mails entrant sont problématique avec les adresses IP dynamiques. La
façon de les supporter est de :
<itemize>
<item>configurer votre lecteur d'email pour que le courrier contiennent un
champ "reply to" dans lequel il y aura votre adresse électronique chez votre
fournisseur d'accès.<newline> 
Si vous le pouvez, configurez également le champ FROM avec votre adresse
électronique chez votre FAI.

<item>utiliser les programmes popclient, fetchmail pour récupérer le courrier
chez votre fournisseur d'accès. Ou bien, si votre FAI utilise IMAP, utilisez
un lecteur de courrier électronique ayant IMAP d'activé (comme pine).
</itemize>

<p>
Vous pouvez automatiser ce processus lors de l'appel en ajoutant la commande
nécessaire dans le script <tt>/etc/ppp/ip-up</tt> (voir plus haut).

<sect1>Configurer un serveur de noms local
<p>
Même si vous êtes content d'utiliser le serveur de noms situé chez votre
fournisseur d'accès, vous pouvez en plus configurer un serveur de nom local
(secondaire) de cache uniquement qui serait lancé avec le script ip-up. 
L'avantage d'utiliser un serveur de noms local (cache uniquement) est de gagner
du temps (et de la bande passante) si vous contactez souvent les même sites 
pendant de longues sessions en ligne.

<p>
La configuration du DNS pour un serveur de cache seulement (qui utilise une
ligne 'forwarders' dans le fichier named.boot pointant sur le DNS de votre FAI)
est relativement simple. Le livre O'Reilly (DNS et Bind) explique tout ce que
vous devez savoir sur le sujet.

<p>
Il existe également un DNS-HOWTO.

<p>
Si un petit réseau local accède à Internet grâce à votre PC Linux (avec IP
masquerading par exemple), c'est sans doute une excellente idée d'utiliser
un serveur de noms (avec la directive forwarders) puisque cela réduira les
delais et la bande passante utilisée pour la résolution des noms.

<p>
Un point de la Netiquette : demandez la permission à votre fournisseur d'accès
avant de mettre en place un serveur de noms secondaire de cache uniquement dans
le domaine de votre FAI. Configuré correctement, il n'entrainera aucun problème
chez votre FAI, mais si il ne l'est pas, il peut causer de nombreux problèmes.

<sect>Relier deux réseaux locaux avec PPP
<p>
Il y a fondamentalement aucune différence entre le fait de relier un seul PC
Linux avec PPP et relier deux réseaux locaux avec PPP et une machine sur
chaque réseau. Souvenez-vous PPP est un protocole <bf/réversible/.

<p>
Cependant, vous devez <bf/REELLEMENT/ comprendre comment le routage se déroule.
Lisez le NET-2 HOWTO et le Guide d'administration Linux (NAG). Vous trouverez
également une aide inestimable dans le  &dquot; TCP/IP Network
Administration&dquot; (publié par O'Reilly and Assoc - ISBN 0-937175-82-X) 

<p>
Si vous utilisez une adresse de sous-réseau de chaque côté de la liaison, le
(brouillon) de mini-howto Linux sub networking pourra vous être utile.
Il est disponible à <url url="http://www.interweft.com.au/other/" name="Linux
Sub networking mini-HOWTO">.

<p>
Pour relier deux réseaux locaux, vous <bf/devez/ utiliser des adresses IP
différentes (ou des sous-réseau d'adresses différentes) et vous devrez utiliser
des adresses IP statiques ou l'IP Masquerading. Si vous voulez utiliser
l'IP Masquerading, consultez le mini-howto IP masquerade pour avoir des 
instructions sur la manière de le configurer.

<sect1>Configurer les adresses IP
<p>
Arrangez-vous avec l'administrateur système de l'autre réseau local pour
choisir les adresses IP qui seront utilisés de chaque côté de l'interface PPP. 
Si vous utilisez des adresses IP statiques, il sera sans doute pratique 
d'appeler un numéro de téléphone dédié.

<p>
Maintenant, éditez le fichier <tt>/etc/ppp/options[.ttyXX]</tt> approprié - il
est judicieux d'avoir un modem et un port dédié de chaque côté de la connexion.
Cela nécessite quelques changements dans le fichier <tt>/etc/ppp/options</tt>
et la création d'un fichier options.ttyXX approprié pour les autres connexions !

<p>
Spécifiez les adresses IP pour le côté de votre liaison PPP dans les fichiers
d'options appropriés exactement comme cela est décris plus haut pour les 
adresses IP statiques.

<sect1>Configurer le routage.
<p>
Vous devez vous occuper que les paquets du réseau local soit routés à travers
l'interface lorsque la liaison PPP est lancée. Ce processus se fait en deux 
parties.

<p>
Tout d'abord, vous devez configurer une route partant de la machine qui
fait marcher la liaison PPP vers le réseau situé à l'autre bout. Si
cette liaison donne sur Internet, vous pouvez utilisez la route par défaut
mise en place par <tt/pppd/ lui-même à la connexion avec l'option 
<tt/defaultroute/.

<p>
Si toutefois, la liaison relie seulement deux réseaux locaux, alors une
route réseau spécifique doit être ajoutée pour tous les réseaux accessible
par cette liaison. C'est la commande 'route' qui le fait pour chaque réseau
dans le script /etc/ppp/ip-up script (voir une fois que la liaison 
fonctionne...) pour des instructions détaillées.

<p>
La seconde chose dont vous avez besoin est de prévenir les autres ordinateurs
que vous êtes le gateway vers les réseaux situés à l'autre bout de la liaison.

<p>
Bien sûr, l'administrateur réseau de l'autre coté de la liaison doit faire les
même choses ! Cependant, puisque qu'il route les paquets vers votre
réseau particulier, une <bf/route réseau spécifique/ est indispensable, et non
la route par défaut (à moins que le réseau situé à l'autre bout se connecte
chez vous pour accéder à Internet).

<sect1>Sécurité réseau
<p>
Si vous reliez votre réseau local à Internet avec PPP - ou du moins avec un
réseau local &dquot;étranger&dquot;, vous devez réfléchir aux problèmes de 
sécurité. Je vous conseille fermement de penser à configurer un firewall !

<p>
Vous devriez également parler à l'administrateur réseau de votre site
<bf/AVANT/ de lancer une connexion vers un réseau local étranger voire vers
Internet ce cette manière. Ne rien faire peut soit n'amener aucune réaction
soit de sérieux problèmes !

<sect>Une fois que la connexion fonctionne - le script <tt>/etc/ppp/ip-up</tt>
<label id="ip-up">
<p>
Une fois que la connexion est établie, <tt/pppd/ cherche un 
<tt>/etc/ppp/ip-up</tt>.
Si ce script existe et est exécutable, le daemon PPP le lance. Cela permet
d'automatiser des commandes de routages spéciales qui peuvent être nécessaires
et toutes les autres actions que vous souhaitez lancer une fois que la liaison
PPP est activée.

<p>
C'est un simple script shell qui fait uniquement ce qu'un script shell peut 
faire (en fait quasiment tout ce que vous voulez).

<p>
Par exemple, vous pouvez demander à sendmail d'envoyer les messages en attentes.

<p>
Il y a quelques restrictions avec <tt>/etc/ppp/ip-up</tt>:

<itemize>
<item>Il fonctionne délibéremment dans un environnement réduit pour augmenter
la sécurité. Cela signifie que vous devez donner le chemin complet des 
exécutables.
<item>Techniquement, <tt>/etc/ppp/ip-up</tt> est un <em/programme/ et non un
script. Cela signifie qu'il ne peut pas être exécuté directement - même si
il a besoin du (<tt>#!/bin/bash</tt>) magique au début de la première ligne
et qu'il doit être lisible est exécutable par root.
</itemize>


<sect1>Routages spéciaux
<p>
Si vous reliez deux réseaux locaux, vous devez configurer des routes 
spécifiques vers le réseau 'étranger'. Le script <tt>/etc/ppp/ip-up</tt> peut
le faire facilement. La seule difficulté est lorsque votre machine supporte
plusieurs liaisons PPP.

<p>
<tt>/etc/ppp/ip-up</tt> est utilisé à chaque lancement de ppp, vous devez donc
être extrêmement vigilant d'exécuter les commandes de routage correctes pour
la liaison qui démarre - et non lorsque n'importe quelle liaison démarre !

<sect1>Support du courrier électronique en attente
<p>
Lorsqu'une liaison entre deux réseaux locaux démarre, vous voudriez vous
assurez que le courrier en attente de chaque coté de la liaison est bien
envoyé à son destinataire. Cela est possible en ajoutant un appel correct à
<tt/sendmail/.

<p>
Utiliser la commande case du bash sur le bon paramètre que passe pppd
au script permet cela. Par exemple, voici un script <tt>/etc/ppp/ip-up</tt> que
j'utilise pour mes liaisons entre l'entreprise et chez mon réseau Ethernet 
(également connecté au même serveur ppp).

<sect1>Un exemple de script <tt>/etc/ppp/ip-up</tt>
<p>
Le script suivant permet de nombreuses utilisations.

<code>
#!/bin/bash
#
# Script permettant de supporter les possiblites de routages necessaires a pppd
# Seule la liaison vers Newman necessite ce support.
#
# Quand la liaison ppp demarre, ce script est appele avec les parmetres 
# suivants
#       $1      le nom de l'interface utilisee par pppd (c.-a-d. ppp3)
#       $2      le nom du peripherique tty
#       $3      la vitesse du peripherique tty
#       $4      l'adresse IP locale de l'interface
#       $5      l'adresse  IP distante
#       $6      le parametre specifie par l'option 'ipparam' a pppd
#
case "$5" in
# Supporte le routage vers le serveur du Newman Campus
        202.12.126.1)
                /sbin/route add -net 202.12.126.0 gw 202.12.126.1
# et envoie les courriers en attente la-bas !
                /usr/sbin/sendmail -q &
                ;;
        139.130.177.2)
# Notre liaison Internet
# Lorsque notre liaison est lancee, demarre le serveur de temps et 
# se synchronise avec le monde si il n'a pas encore bouge.
                if [ ! -f /var/lock/subsys/xntpd ]; then
                        /etc/rc.d/init.d/xntpd.init start &
                fi
# Demarre le serveur de news (si il ne marche pas encore)
                if [ ! -f /var/lock/subsys/news ]; then
                        /etc/rc.d/init.d/news start &
                fi
                ;;
        203.18.8.104)
# Recupere le courrier electronique sur ma machine tant que la liaison 
# fonctionne. Aucun routage n'est necessaire tant que mon reseau local
# Ethernet supporte IP masquerade et le routages proxyarp.
                /usr/sbin/sendmail -q &
                ;;
        *)
esac
exit 0</code>

<p>
Le résultat du lancement de la liaison PPP vers notre campus Newman et le 
démarrage de ce script, détermine les entrées de la table de routage (cette 
machine est aussi notre serveur PPP général ET supporte nos liaisons Internet).
J'ai ajouté des commentaires sur la sortie pour expliquer a quoi correspond
chaque entrée) :

<code>
[root@kepler /root]# route -n
Kernel routing table
Destination     Gateway         Genmask         Flags MSS    Window Use Iface
# la route de l'HOTE de notre gateway internet
139.130.177.2   *               255.255.255.255 UH    1500   0      134 ppp4
# la route de l'HOTE vers le serveur Newman campus
202.12.126.1    *               255.255.255.255 UH    1500   0       82 ppp5
# la route de l'HOTE de mon réseau local ethernet
203.18.8.104    *               255.255.255.255 UH    1500   0       74 ppp3
# deux des lignes générales PPP
203.18.8.64     *               255.255.255.255 UH    552    0        0 ppp2
203.18.8.62     *               255.255.255.255 UH    552    0        1 ppp1
# la route réseau specifique vers le réseau Newman campus
202.12.126.0    202.12.126.1    255.255.255.0   UG    1500   0        0 ppp5
# la route de notre réseau local Ethernet (super-netting two adjacent C classes)
203.18.8.0      *               255.255.254.0   U     1500   0     1683 eth0
# la route vers le périphérique loop back
127.0.0.0       *               255.0.0.0       U     3584   0      483 lo
# la route par défaut vers Internet
default         139.130.177.2   *               UG    1500   0     3633 ppp4
</code>

<sect1>Support du courrier électronique
<p>
La section précédente montrait comment supporter le mail sortant - en
envoyant simplement le courrier lorsque la liaison démarrait.

<p>
Si vous utilisez une liaison pour un réseau large, vous pouvez vous arranger 
avec l'administrateur réseau du site distant pour qu'il fasse exactement la 
même chose. Par exemple, à l'autre bout de la liaison au Newman Campus, le 
script <tt>/etc/ppp/ip-up</tt> ressemble à :

<code>
#!/bin/bash
#
# Script permettant de supporter les possiblites de routages necessaires a pppd
# Seule la liaison vers Hedland necessite ce support.
#
# Quand la liaison ppp demarre, ce script est appele avec les parmetres 
# suivants
#       $1      le nom de l'interface utilisee par pppd (c.-a-d. ppp3)
#       $2      le nom du peripherique tty
#       $3      la vitesse du peripherique tty
#       $4      l'adresse IP locale de l'interface
#       $5      l'adresse  IP distante
#       $6      le parametre specifie par l'option 'ipparam' a pppd
#
case "$5" in
        203.18.8.4)
                /usr/sbin/sendmail -q
                ;;
        *)
esac
exit 0
</code>

<p>
Si toutefois, vous n'avez qu'une adresse IP dynamique chez votre FAI, vous
devrez recevoir votre courrier sur le compte de votre fournisseur d'accès. Cela
est généralement possible en utilisant POP (Post Office Protocol). Ce processus
peut être supporté avec le programme 'popclient" - le script ip-up peut
automatiser le processus pour vous !

<p>
Créez simplement un script <tt>/etc/ppp/ip-up</tt> qui contient un appel correct
à popclient. Pour mon portable avec la RedHat Linux (que je prends lorsque je
voyage), j'ai 

<code>
popclient -3 -c -u hartr -p <password> kepler.hedland.edu.au |formail -s procmail
</code>

<p>
Vous pouvez aussi utiliser slurp en quelque chose d'autre d'identique pour les
news, et d'autres trucs. Souvenez vous que le script ip-up est un script bash
standard et qui peut servir à automatiser TOUTES les fonctions que vous devez
accomplir chaque fois qu'une liaison PPP correspondante démarre.

<sect>Utiliser <tt>/etc/ppp/ip-down</tt>
<p>
Vous pouvez écrire un script, qui sera exécuté à chaque fois qu'une liaison se
termine. Qui se situe dans <tt>/etc/ppp/ip-down</tt>. Il peut être utilisé pour
retirer ce que vous avez ajoutez de spécial avec le script /etc/ppp/ip-up
correspondant.

<sect>Possibilité de routage sur un réseau local
<p>
Si vous êtes connecté sur un réseau local et que vous voulez toujours utiliser
PPP avec votre machine Linux, vous devez définir les routes que les packets
doivent prendre pour atteindre le réseau local à partir de votre machine (par
l'interface Ethernet) et également le serveur PPP distant voire plus loin.

<p>
Cette section ne prétend pas vous apprendre le routage - elle traite seulement
de cas simples et spéciaux de routage (statique) !

<p>
Je vous recommande chaudement de lire de Guide d'administration Réseau Linux
si vous n'êtes pas habitué avec le routage. De même le livre d'O'Reilly
"TCP/IP Network Administration" couvre le sujet de manière très abordable.

<p>
La règle de base du routage statique est que la route par DEFAUT pointe à
l'endroit où il y le PLUS grand nombre d'adresse réseau. Pour les autres
réseau, entrés des routes spécifiques dans la table de routage.

<p>
La SEULE situation que je couvre ici est lorsque votre machine Linux est sur
un réseau non connecté à Internet - et vous voulez vous connectez à Internet
pour une utilisation personnelle tout en restant connecté au réseau local.

<p>
Tout d'abord, assurez-vous que votre route Ethernet est bien configuré comme
une adresse réseau spécifique disponible sur votre réseau local - et PAS dans
la route par defaut !

<p>
Vérifiez cela en tapant la commande route, vous devriez avoir quelque chose
qui ressemble à ce qui suit :

<tscreen><verb>
[root@hwin /root]# route -n
Kernel routing table
Destination     Gateway         Genmask         Flags MSS    Window Use Iface
loopback        *               255.255.255.0   U     1936   0       50 lo
10.0.0.0        *               255.255.255.0   U     1436   0      565 eth0
</verb></tscreen>

<p>
Si votre interface Ethernet (eth0) pointe vers la route par défaut, (la 
première colonne contiendra un "default" dans la ligne eth0) vous devez
changer les scripts d'inititalisation d'Ethernet pour qu'ils utilisent des
adresses réseau spécifiques plutôt que la route par défaut (consultez le
HOWTO Net2 et le NAG).

<p>
Cela va permettre à <tt/pppd/ de configurer votre route par défaut comme suit :

<tscreen><verb>
[root@hwin /root]# route -n
Kernel routing table

Destination     Gateway         Genmask         Flags MSS    Window Use Iface
10.144.153.51   *               255.255.255.255 UH    488    0        0 ppp0
127.0.0.0       *               255.255.255.0   U     1936   0       50 lo
10.1.0.0        *               255.255.255.0   U     1436   0      569 eth0
default         10.144.153.51   *               UG    488    0        3 ppp0
</verb></tscreen>

<p>
Comme vous pouvez le voir, nous avons une route d'hôte vers le serveur PPP
(10.144.153.51) par ppp0 qui est également la route par défaut utilisé par
le serveur PPP comme gateway.

<p>
Si votre configuration est plus compliqué que cela, lisez les documents
concernant le routage cités plus haut, et consultez un expert de votre site !

<p>
Si votre réseau local à aussi des routeurs, vous devez déjà avoir des gateways
pour interconnecter les réseaux disponibles sur votre site. Vous devez TOUJOURS
mettre la route par défaut vers l'interface PPP - et utiliser des routes 
spécifiques pour les autres réseaux que vous accédez.

<sect1>Remarques sur la sécurité
<p>
Lorsque vous configurez une machine Linux sur un réseau local existant sur
Internet, vous ouvrez potentiellement tout votre réseau local vers Internet -
ainsi que les pirates qui l'utilise. Avant de commencer, je vous conseille
vivement de consulter votre administrateur réseau et le responsable de la 
sécurité de votre site. Si votre connexion PPP vers Internet est utilisé et
permet d'attaquer votre site, vous serez dans la plus mauvaise position face
à la colère de vos collègues et votre administrateur système et réseau. Vous
pourriez vous-même avoir de sérieux problèmes !

<p>
Avant de connecter un réseau local sur Internet, vous devez prendre en compte
les problèmes de sécurité même avec une connexion DYNAMIQUE - dans ce cas la
référence la plus récente est le "Building Internet Firewalls" d'O'Reilly !

<sect>Configurer un serveur PPP <label id="ppp-serveur">
<p>
Comme c'est mentionné plus haut, il y a des tas de façons de faire. Ce que je
présente ici est la façon de faire une liaison tournante sur plusieurs
lignes téléphoniques (avec une carte série multi-ports utilisant des Cyclades)

<p>
Si vous n'aimez pas la méthode présentée ici, faites donc comme vous préférez.
J'aimerais toutefois ajouter des méthodes supplémentaires dans les prochaines
versions de ce HOWTO. Envoyez donc moi comment vous faites !

<p>
Remarquez que cette section ne concerne que la configuration de Linux comme
serveur PPP. Je ne compte absolument pas donner d'informations sur la façon de
configurer des serveurs terminaux ou autre.

<p>
Même si, j'ai déjà expérimenté l'utilisation de shadow password (et l'utilise
de temps en temps). Les informations présentées ici n'utiliserons toutefois
pas ce mécanisme.

<sect1>Compiler le noyau
<p>
Tous les commentaires précédent concernant la compilation du noyau et les
versions du noyau et de <tt/pppd/ sont encore valables. Cette section 
considère que vous avez lu les sections précédentes du document !

<p>
Pour un serveur PPP, vous <bf/DEVEZ/ ajouter le support de IP forwarding
dans votre noyau. Vous pouvez aussi inclure d'autres supports (comme le IP
fire walls, accounting etc etc).

<p>
Si vous utilisez une carte série multi-port, vous devez bien entendu inclure
également les pilotes nécessaires dans le noyau !

<sect1>Présentation du système de serveur
<p>
Nous offrons des comptes PPP (ou SLIP) et des comptes shell en utilisant les
mêmes paires nom utilisateur/ mot de passe. Cela permet (pour nous) que les 
utilisateurs n'aient qu'un seul compte qu'ils peuvent utiliser pour toutes
les connexions.

<p>
Comme nous sommes une organisation éducative, nous ne faisons pas payer le 
personnel ni les étudiants pour leur accès, et nous n'avons donc pas besoin de
nous inquiéter des problèmes de payement.

<p>
Un firewall existe entre notre site et Internet, et cela limite les accès des
utilisateurs puisque les lignes d'appels sont sur notre firewall Internet 
(pour certaines raisons évidentes, le détails des autres firewalls internes
ne sera pas présenté ici et serait de toute façon inutile)

<p>
Le processus avec lequel un utilisateur établit une liaison PPP avec notre 
site (une fois qu'ils ont un compte bien sûr) :
<itemize>
<item>Appeler notre ligne d'appel groupé (qui est un numéro de téléphone qui
se connecte sur une banque de modems - le premier modem libre est utilisé).
<item>Connexion avec une paire valide de nom utilisateur et mot de passe
<item>Au prompt du shell, lancement de la commande <tt/ppp/ pour lancer PPP sur
le serveur.
<item>Démarrer PPP sur le PC (il peut utiliser Windows, DOS, Linux, MAC OS ou
n'importe quoi d'autre - ce n'est pas un problème).
</itemize>

<p>
Le serveur utilise un fichier <tt>/etc/ppp/options.ttyXX</tt> individuel pour
chacune des connexions sur le port où est configuré l'adresse IP distante pour
l'allocation des adresses IP dynamiques. Le serveur utilisateur route les 
clients avec proxyarp (configuré avec l'option appropriée de pppd). Cela 
oblige la présence de routed ou gated.

<p>
Quand l'utilisateur raccroche de son coté, <tt/pppd/ le détecte et indique au 
modem de raccrocher, fermant en même temps la liaison PPP.

<sect1>Faire marcher les programmes tous ensemble
<p>
Vous avez besoin des programmes suivants :
<itemize>
<item>Linux, correctement compilé avec les options nécessaires
<item>La version de <tt/pppd/ correspondant à votre noyau
<item>Un programme 'getty' qui décroche intelligemment les communications par 
modem. <newline>
Nous utilisons getty_ps2.0.7h, mais mgetty est aussi bien. Je sais que mgetty
peut s'apercevoir qu'un appel utiliser PAP/CHAP (PAP est le standard pour
Windows 95) et invoquer <tt/ppp/d automatiquement, mais je dois encore explorer un
peu ça.
<item>Un serveur de nom (DNS) fonctionnel qui est accessible pour les 
utilisateurs qui se connectent.
</itemize>

<p>
<bf>Ce howto ne couvre pas sa configuration. Regardez la documentation de
getty de votre choix ou le serial HOWTO pour plus d'informations sur le sujet.
</bf>

<sect1>Configurer les fichiers d'options
<p>
Vous avez besoin de configurer la totalité de <tt>/etc/ppp/options</tt> avec 
les options standard pour les ports d'appel. Les options utiles sont :

<code>
asyncmap 0
netmask 255.255.254.0
proxyarp
lock
crtscts
modem
</code>

<p>
Remarque - nous n'utilisons AUCUN routage (direct) - et en particulier il
n'y a pas d'option defaultroute. La raison de cela est que tout ce dont vous
avez besoin (en tant que serveur PPP) à l'endroit où router les paquets
<bf/venant/ du client ppp vers votre réseau local ou Internet et de 
router les paquets <bf/vers/ le client ppp qui viennent du votre réseau local
ou d'Internet.

<p>
Tout ce dont vous avez besoin est la route hôte de la machine client et 
l'utilisation de l'option 'proxyarp' de pppd.

<p>
L'option 'proxyarp' configure (surprise) une entrée proxy ARP dans la table
ARP du serveur qui signifie en substance 'envoie moi tous les paquets destinés
au client'. C'est la manière la plus simple de configurer le routage vers un
client PPP unique - mais elle ne peut être utilisé pour le routage entre deux
réseaux locaux - vous devez alors utiliser les routes réseau réelles qui ne
pourront pas utiliser le proxy ARP.

<p>
Vous devez certainement avoir envie de fournir des adresses IP dynamiques aux
utilisateurs qui se connectent. Vous pouvez le faire en associant une adresse
IP dynamique sur chaque port d'appel. Créez alors pour chaque port d'appel
un <tt>/etc/ppp/options.ttyXX</tt>.

<p>
Dedans, mettez simplement l'adresse IP locale du serveur et l'adresse IP
qui doit être utilisé pour ce port. Par exemple 

<code>
kepler:slip01
</code>

Remarquez en particulier que vous pouvez utiliser les noms d'hôtes valides
dans ce fichier (je trouve que c'est la seule façon de se souvenir des adresses
IP des machines importantes de mon réseau, les noms sont bien plus 
significatifs) !

<sect1>Configurer pppd pour permettre aux utilisateurs de le lancer
<p>
Comme configurer une liaison ppp implique de configurer un périphérique dans
le noyau (une interface réseau) et de manipuler les tables de routage, des
privilèges spéciaux sont nécessaires - en fait la totalité des privilèges root.

<p>
Heureusement, <tt/pppd/ est prévu pour marcher correctement avec set uid root.
Vous devez donc
<code>
chmod u+s /usr/sbin/pppd
</code>

<p>
Quand vous listez le fichier, il doit apparaître comme cela
<code>
-rwsr-xr-x   1 root     root        74224 Apr 28 07:17 /usr/sbin/pppd
</code>

<p>
Si vous n'avez pas ça, vous ne pourrez pas utiliser votre liaison ppp.

<sect1>Créer un alias global pour pppd
<p>
Pour simplifier les choses pour les utilisateurs de notre connexion PPP, nous
créerons un alias global (dans /etc/bashrc) qui est en fait une simple
commande qui lancera ppp sur le serveur dès qu'ils seront connectés.

<p>
Cela nous donne
<code>
alias ppp="exec /usr/sbin/pppd -detach"
</code>

<p>
Et il fait ceci
<itemize>
<item>exec : va remplacer le programme en cours (dans le cas d'un shell)
par le programme qui va être lancé.
<item>pppd -detach : lance <tt/pppd/ et le laisse pas en tâche de fond. Cela
assure que <tt/pppd/ existe et qu'il n'y a pas d'autres processus qui traînent.
</itemize>

Quand un utilisateur se connecte comme cela, il va apparaître après un 'w'
<code>
  6:24pm  up 3 days,  7:00,  4 users,  load average: 0.05, 0.03, 0.00
User     tty       login@  idle   JCPU   PCPU  what
hartr    ttyC0     3:05am  9:14                -
</code>

<p>
Et c'est tout... Je vous avais dit que c'était simple un serveur PPP de base !

<sect>Utiliser PPP avec une connexion null modem <label id="directe">
<p>
C'est très simple - il n'y a pas de modem et ainsi les choses sont bien plus
facile.

<p>
Tout d'abord, choisissez une machine comme 'serveur', configurez getty sur 
le port série pour que vous testiez si vous avez une connectivité en utilisant
minicom sur le 'client'.

<p>
Une fois que ça fonctionne, vous pouvez enlever le getty A MOINS que vous 
vouliez être sûr que la connexion permet d'utiliser les paires nom utilisateur/
mot de passe pour les connexions entrantes. Comme vous avez un 'contrôle 
physique' des deux machines, je pense que vous n'avez pas besoin de ça.

<p>
Maintenant, sur le serveur, enlevez getty et assurez vous que les ports série
sont configurés correctement sur les deux machines avec 'setserial'.

<p>
Tout ce que vous avez besoin maintenant est de démarrer <tt/pppd/ sur les deux
systèmes. Je suppose que les connexions utilise une connexion par /dev/ttyS34.
Ainsi sur les deux machines lancez la commande :

<code>
pppd -detach crtscts lock <local IP>:<remote IP> /dev/ttyS3 38400 &
</code>

<p>
Cela devrait lancer la connexion - mais pour le moment il n'y a aucun routage 
de spécifié. Vous pouvez tester la connexion en pingant l'autre machine.
Si ça marche, éteignez la liaison en tuant le processus pppd

<p>
Le routage dont vous avez besoin dépend de ce que vous voulez faire exactement.
Généralement, une des machines sera connecté sur un réseau Ethernet (et même
plus) le routage nécessaire est donc exactement le même qu'entre un serveur
PPP et un client.

<p>
Sur la machine équipée d'Ethernet, la commande sera donc

<code>
pppd -detach crtscts lock proxyarp <local IP>:<remote IP> /dev/ttyS3 38400 &
</code>

<p>
et sur l'autre machine

<code>
pppd -detach crtscts lock defaultroute <local IP>:<remote IP> /dev/ttyS3 38400 &
</code>

Si vous reliez deux réseaux locaux (avec une liaison série !) vous aurez besoin
d'un routage plus complexe, vous pouvez utiliser /etc/ppp/ip-up exactement
de la même façon qu'il est décrit plus haut.


<p>
<p>
<bf/Robert Hart/<newline>
Port Hedland, Western Australia<newline>
Melbourne, Victoria, Australia
August/October 1996
January/March 1997

</article>
