levavass@efrei.fr, 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.
Copyright
Ce document est distribué sous les contraintes de la GPL (GNU Public Licence).
Distribution
Le document original sera posté dans comp.os.linux.answers lorsque de nouvelles versions du document arriveront. Il est également disponible en HTML à :
Les autres formats (SGML, ASCII, PostScript, DVI) sont disponibles à Howtos - other formats.
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/.
Remerciements
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.
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.
Traduction Française de ce document
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...
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.
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 ! :-)
Enfin merci à Thomas Parmelan pour la relecture et les conseils sur la forme de la version française de ce document.
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).
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.
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.
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).
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).
Par conséquent, selon le type de votre connexion PPP, il y aura des limitations sur l'utilisation des applications et des services.
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 serveur et client.
Quand vous appelez un site pour établir une connexion PPP, vous êtes un client. La machine sur laquelle vous-vous connectez est le serveur.
Quand vous configurez une machine Linux pour répondre aux appels pour les connexion PPP, vous configurez un serveur PPP.
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.
Ce document référence la machine qui initie l'appel (qui le compose) comme le 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 SERVEUR.
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.
La procédure exposée dans ce document va vous permettre d'établir et d'automatiser votre connexion à Internet.
Ce document va également vous offrir un guide pour permettre de configurer un 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).
Il y a de nombreuses distributions Linux différentes qui on leurs propres idiosyncrasies et façons de faire les choses.
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.
Il y l'initialisation BSD et 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 !
Les distributions les plus utilisées sont sans doute :
Les initialisations de type BSD conservent typiquement ces fichiers dans
/etc/ et ces fichiers sont :
/etc/rc
/etc/rc.local
/etc/rc.serial
(et parfois d'autres fichiers)
Récemment, certaines initialisation systèmes BSD se mettaient à utiliser
un répertoire /etc/rc.d/ contenant les fichiers de démarrage
plutôt que de tout mettre dans /etc.
L'initialisation System V conserve ses fichiers d'initialisation dans les
répertoires /etc/ ou /etc/rc.d et un certain nombre de
sous-répertoires de ces derniers.
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
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.
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 !
Pour les utilisateurs de Red Hat 4.x, il y a maintenant un Red Hat PPP-TIP dans la partie Linux ressources et également chez Red Hat Software dans la partie support.
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.
Si vous êtes connectés par un réseau local (LAN) à Internet, 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 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.
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)
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 :
Si vous avez un réseau pour lequel vous 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.
Ces adresses ne doivent jamais être utilisées sur Internet.
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.
Cependant, en utilisant Linux, les capacités de IP Masquerading (aussi appelé NAT - Network Adress Translation) de Linux et du programme 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.
Pour plus d'informations sur le sujet, consulter le mini-HOWTO IP Masquerade à Linux IP Masquerade mini HOWTO
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.
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.
Pour les utilisateurs qui connectent un seul PC à Internet, la plupart des FAI utilise l'allocation 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.
Avec les adresses IP dynamiques, vous 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).
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.
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).
Bien que dip (la manière standard de créer des connexions SLIP) puisse
être utilisé pour mettre en place un connexion PPP, les scripts dip sont
généralement un peu complexes. Pour cette raison, ce document ne traite pas
l'utilisation de dip pour lancer une connexion PPP.
A la place, ce document décrit les programmes standard Linux/PPP (chat/pppd).
Ce document donne des informations (de base) pour relier deux réseaux locaux entre eux ou un réseau local à Internet grâce à PPP.
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).
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).
Cette méthode est connue pour fonctionner correctement. Cependant, ce n'est pas forcément la meilleure méthode.
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é.
pppd que vous
utilisez.
dip pour faire des connexion PPPchat à la place
socks ou IP MasqueradingCe 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.
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.
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.
Vous devez également être particulièrement vigilant et ne pas utiliser le programme PPP 2.1.2 avec un noyau Linux 2.0.X.
Veuillez remarquer que ce document 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 à /usr/src/linux/Documentation/..).
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.
Je conseille aux utilisateurs de lire :
pppd et chat; man chat et man pppd pour les lire)Le meilleur point de départ pour la documentation Linux est The Linux Documentation Project Home Page. Les HOWTO sont mis à jour raisonnablement régulièrement.
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).
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.
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
"TCP/IP Network Administration" et
"Building Internet Firewalls" un bénéfice
considérable !
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.
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.
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é.
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 !
Un bon point de départ pour les mailing-list Linux est Linux Mailing List Directory
Ce document contient un grand nombre d'informations - qui augmente à chaque version !
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.
Si votre distribution Linux ne contient pas les programmes PPP, vous devez les obtenir sur the Linux PPP daemon
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).
Le paquetage PPP contient les instructions sur la façon de compiler et d'installer le logiciel donc ce HOWTO n'en parlera pas. !
L'installation de PPP Linux se divise en deux parties
De nombreuses distributions semblent fournir un support PPP dans les noyaux installés par défaut, mais certaines ne le font pas.
Si lors du boot, le noyau donne un message ressemblant à :
PPP Dynamic channel allocation code copyright 1995 Caldera, Inc. PPP line discipline registered.
Votre noyau à le support PPP compilé.
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.
Ce document fournit les instructions minimales pour la re-compilation du noyau à la section Configurer votre noyau Linux.
Pour plus de détails, voir le Kernel-HOWTO à The Linux Kernel HOWTO
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.
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.
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.
La section 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.
Pour se connecter à un serveur PPP et obtenir le meilleur taux de transfert possible, votre modem doit être configuré correctement.
De la même façon, les ports série de votre modem ainsi que votre ordinateur doivent être configurés correctement.
La section Configurer votre modem et votre port série fournit des informations à ce sujet.
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
www.interweft.com.au vers l'adresse IP qui est réellement utilisée
pour contacter cet ordinateur. Ces fichiers sont :
/etc/resolv.conf/etc/host.confVoir la section Configurer la résolution de nom vers l'adresse pour une configuration détaillée de cela.
En particulier, vous 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).
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, pppd
nécessite les privilèges root.
Pour des détails là-dessus, voir la section Utiliser PPP et les privilèges root.
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 :
/etc/ppp/options /etc/ppp/scripts/ppp-on /etc/ppp/scripts/ppp-on-dialer /etc/ppp/options.tpl
Vous devrez créer des fichiers supplémentaires en fonction de ce que vous souhaitez exactement utiliser avec PPP :
/etc/ppp/options.ttyXX /etc/ppp/ip-up /etc/ppp/pap-secrets /etc/ppp/chap-secrets
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.
Pour les détails à ce sujet, voir en section Configurer les fichiers de connexion de PPP.
De nombreux fournisseurs d'accès et serveurs PPP utilisent PAP. Si votre serveur 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.
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.
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.
La section 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.
Une fois les fichiers de base configurés, c'est une bonne idée que d'essayer
ceux-ci en se connectant (avec minicom ou seyon) et de lancer
pppd sur votre PC Linux à la main.
Voir la section Configurer une connexion PPP à la main pour des détails complets.
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.
La section
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 chat.
Cette section traite des scripts d'authentification du nom utilisateur/mot de passe ainsi que des scripts d'authentification pour les serveurs PAP/CHAP.
Une fois que votre connexion est activée et fonctionne, vous devez pouvoir désactiver la liaison.
Consultez la section Terminer une connexion PPP.
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.
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 !
La section 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.
Elle 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 !
Une fois que la liaison PPP est opérationnelle (spécifiquement, une fois que les
trames IP fonctionnent), pppd peut lancer automatiquement
(comme utilisateur root) un script pour accomplir n'importe quelle
fonction qu'un script peut accomplir.
La section
Une fois que la connexion est lancée
fournit des informations sur le script /etc/ppp/ip-up, 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.
Comme cela est mentionné dans l'introduction, les adresses IP dynamiques affectent la capacité de votre PC Linux à agir comme un serveur sur Internet.
La section 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.
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 /usr/src/linux dans un système de fichiers Linux
standard.
Vérifiez ce répertoire - de nombreuses distributions installent les sources (fichiers et répertoires) pendant leur processus d'installation.
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
dmesg | less pour afficher ces informations à l'écran. Si votre noyau
contient le support PPP, vous verrez quelques lignes du genre
PPP Dynamic channel allocation code copyright 1995 Caldera, Inc. PPP line discipline registered.
(pour les noyau Linux version 2.0.x)
Les sources du noyau Linux sont disponibles par ftp à sunsite.unc.edu ou
ses nombreux miroirs, en particulier ftp.lip6.fr.
La suite regroupe de brèves instructions pour obtenir et installer les sources du noyau Linux. Des informations complètes sont disponibles a The Linux Kernel HOWTO.
Pour installer et compiler le noyau Linux vous devez être root.
/usr/src/ cd /usr/src//usr/src/linux pour voir si les sources sont
déjà installées.ftp.lip6.fr./usr/src.rm -rf /usr/src/linuxtar xzf linux-2.0.XX.tar.gzcd /usr/usr/linux 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).Vous 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).
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
make config
Pour utiliser PPP, vous devez configurer le noyau pour inclure le support PPP
(PPP a besoin DE pppd ET DU support de PPP dans le noyau).
PPP (point-to-point) support (CONFIG_PPP) [n] y
Répondre aux autres questions du 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 README pour votre nouveau noyau.
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 README.Linux accompagnant la distribution de
PPP-2.1.2 pour des détails complets des éditions simples que vous devez
faire).
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 make config quitter avec CTRL-C et recommencer.
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 README pour
installer les sources correctement. Vous lancez la configuration du noyau avec
make config
Cependant, vous pouvez aussi utiliser
make menuconfig
Qui fournit un système de configuration avec une aide en ligne et vous pouvez avancer et reculer dans la configuration.
Il y a aussi l'interface de configuration sous X-Window chaudement recommandée
make xconfig
Vous pouvez compiler le support PPP directement dans votre noyau ou sous la forme d'un module chargeable dynamiquement.
Si vous utilisez PPP occasionnellement, alors compiler le support PPP en
module chargeable est recommandé. Avec 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.
Pour cela, vous devez activer le support des modules chargeables :
Enable loadable module support (CONFIG_MODULES) [Y/n/?] y
Pour ajouter le support PPP à votre noyau, répondre à la question suivante :
PPP (point-to-point) support (CONFIG_PPP) [M/n/y/?]
Pour un module chargeable, répondre M, sinon pour le compiler directement dans le noyau, répondre Y.
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.
/proc/net/dev
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 /proc/net tant qu'un périphérique n'est pas créé avec le
lancement de pppd :
[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
Une fois que vous avez un (ou plus) services ppp lancés, vous verrez des entrées comme celles-ci (sur un serveur PPP) :
[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
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.
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 !
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.
Pour activer IP Masquerade et IP firewalling, vous DEVEZ répondre Oui
à la première question de make config :
Prompt for developement and/or incomplete code/drivers (CONFIG_EXPERIMENTAL)?
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.
Une fois que vous avez installé et booté votre nouveau noyau, vous pouvez commencer à configurer et à tester votre liaison PPP.
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) :
dns-addr de pppd.
Attention à l'information suivante - elle risque d'être utile !
Vous devez vous assurer que votre modem est correctement configuré et que vous savez sur quel port série il est branché.
Se souvenir que :
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.
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.
Si vous utilisez le noyau Linux 2, vous pouvez afficher des IRQ actuellement
utilisés avec cat /proc/interrupts, qui produira une sortie
ressemblant à :
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
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).
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 !
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 !
Si vous déplacez vos ports séries vers des IRQ non-standard, vous devez
spécifier à Linux quel IRQ utilise chaque port. setserial permet de
le faire, et de préférence lors du processus de lancement dans rc.local
ou rc.serial qui est appelé dans rc.local ou comme une partie de
l'initialisation SysV system. Pour la machine présentée ci-dessus, les
commandes utilisées sont
/bin/setserial -b /dev/ttyS2 IRQ 11 /bin/setserial -b /dev/ttyS3 IRQ 15
Toutefois, si vous utilisez le module série chargé dynamiquement au besoin avec
le processus 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.
Donc, si vous chargez le module série à la demande, vous devez reconfigurer les IRQ à chaque fois qu'il est chargé.
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.
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.
Utiliser la commande
setserial -a /dev/ttySx
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 !
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.
Historiquement, Linux utilise les périphériques cuaX pour les appels
sortants et ttySx pour les appels entrants.
Le code du noyau a eu besoin de changer cela dans la version 2.0.x du noyau,
et vous devez maintenant utiliser ttySx pour les appels entrants et
sortants. Cela semble annoncer que les noms de périphériques cuaX
devraient disparaître dans les futures versions du noyau.
Vous devez configurer votre modem correctement pour PPP - pour cela, LISEZ LE MANUEL DE VOTRE MODEM ! La plupart des modems ont une configuration par défaut en usine avec les options requises par PPP. La configuration minimale spécifie :
&K3 sur les modems
Hayes)Les autres paramètres (en commandes Hayes standard) que vous devez vérifier sont :
chat fonctionne)&C1 Carrier Detect ON seulement après la connexion&S0 Data Set Ready (DSR) toujours ONUn site fournit la configuration des modems pour une variété de fabricants et de modèles de modems croissante à Modem setup information qui devrait vous simplifier la configuration.
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.
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).
Utiliser les outils de communication (c.-à-d. minicom ou 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&V, mais vous devez consulter le manuel de votre modem.
Si vous avez complètement modifié les réglages, vous pouvez repartir sur des
bases saines (généralement) en envoyant AT&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).
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.
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.
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).
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.
Il y a deux façons de faire sur des lignes séries :
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 !
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.
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.
En utilisant le paquetage du terminal de communication (tel que minicom),
la commande d'initialisation de votre modem pour PPP, appelez le
serveur PPP sur lequel vous voulez vous connecter pour une session PPP.
(Remarque : à ce niveau, nous n'essayerons pas d'établir la connexion PPP - mais juste d'être sûr que nous pouvons composer un numéro et ainsi trouver exactement ce que le serveur nous envoie pour se connecter et lancer PPP).
Pendant le processus, soit vous capturez (dans un fichier) la totalité du processus de login soit vous notez attentivement (très attentivement) 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).
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.
Quelques mots d'avertissements :
ENTREE - essayez donc cela si vous êtes connecté et ne voyez pas de
message !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 :
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.
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.
Ça doit donner quelque chose comme ceci :
(et ça ne s'arrête pas !)
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.
Si vous ne voyez pas directement après la connexion (et le processus de connexion et le lancement du serveur PPP si besoin), tapez Entrée pour voir si le serveur PPP démarre...
A ce niveau, vous pouvez raccrocher votre modem (généralement, taper
+++ rapidement et envoyer la commande ATHO une fois que votre modem
vous a répondu OK).
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.
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
"domaine" particulier. Par exemple, ma station
de travail Linux s'appelle archenland et se trouve dans le domaine
interweft.com.au. Son adresse lisible par un humain est donc
archenland.interweft.com.au (qui s'appelle le FQDN - nom de domaine
totalement qualifié).
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.
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.
Ce qui se passe en fait :
/etc/hosts
et/ou les serveurs de noms des domaines qu'il connaît (le comportement
exact du résolveur est déterminé dans /etc/hosts.conf);
hosts, la réponse est
renvoyée;
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 vous pourrez utiliser le nom des machines mais votre ordinateur pourra traduire ces derniers vers les adresses IP dont il a besoin pour travailler.
Une solution est de rentrer tous les hôtes avec qui vous voulez dialoguer dans
le fichier /etc/hosts (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).
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.
/etc/resolv.conf
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).
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 insister (poliment) auprès de votre FAI pour qu'il vous fournisse cette information !
Votre /etc/resolv.conf doit ressembler à quelque chose comme :
domain votre.nom.de.domaine nameserver 10.25.0.1 nameserver 10.25.1.2
É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 :
-rw-r--r-- 1 root root 73 Feb 19 01:46 /etc/resolv.conf
Si vous avez déjà configuré un /etc/resolv.conf car vous êtes sur un
réseau local, ajoutez simplement les adresses IP du serveur DNS PPP dans votre
fichier existant.
/etc/hosts.conf
Vous devez également vérifier que votre fichier /etc/hosts.conf est
correctement configuré. Il doit ressembler à
order hosts,bind multi on
Il indique au résolveur d'utiliser les informations du fichier host avant d'envoyer les requêtes pour une résolution DNS.
Puisque PPP à besoin de configurer les périphériques réseau, modifier les tables de routage entre autres, il a besoin des privilèges root.
Si des utilisateurs autres que root doivent lancer des connexions PPP, le
programme pppd doit avoir l'uid root :
-rwsr-xr-x 1 root root 95225 Jul 11 00:27 /usr/sbin/pppd
Si /usr/sbin/pppd n'est pas défini comme cela, alors en étant
root taper la commande :
chmod u+s /usr/sbin/pppd
Cela permet à pppd de fonctionner avec les privilèges root même i
si le programme est lancé par un utilisateur ordinaire. Ainsi pppd a
les bons privilèges pour configurer les interfaces réseau et les tables de
routage.
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 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).
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 ppp-on/off lisibles et exécutables par tout le
monde. (c'est sans doute génial si vous êtes le SEUL utilisateur du PC).
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 root, éditer le
fichier /etc/group) et :
pppd 'suid root', possédé par l'utilisateur root et le
groupe PPP, avec ces nouvelles permissions sur le fichier. Il doit ressembler à
-rwsr-x--- 1 root PPP 95225 Jul 11 00:27 /usr/sbin/pppd
ppp-on/off possédés par l'utilisateur
root et le groupe PPP
ppp-on/off lisible/exécutable par le groupe PPP
-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
/etc/groupMême si vous faites cela, les utilisateurs normaux ne pourront pas fermer
la connexion avec un programme ! Utiliser ppp-off nécessite les
privilèges root. Même si n'importe quel utilisateur peut éteindre le
modem (ou déconnecter la ligne téléphonique sur un modem interne).
Un alternative (et une meilleure méthode) de faire cela est d'utiliser le
programme 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 sudo permet aux utilisateurs
autorisés d'activer/désactiver la liaison PPP de façon propre et
sécurisée.
Maintenant, vous devez être connecté en tant que 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.
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.
Pour PPP 2.1.2 les fichiers sont :
/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
Pour PPP 2.2. les fichiers sont :
/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
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
/usr/doc/ppp-2.2.0f-2/scripts.
Dans votre répertoire /etc, il devrait y avoir un répertoire ppp :
drwxrwxr-x 2 root root 1024 Oct 9 11:01 ppp
S'il n'existe pas - le créer avec ces possessions et permissions.
Si le répertoire existe déjà, il devrait contenir un fichier d'options modèle appelé options.tpl. Ce fichier est inclus plus bas au cas où il n'existerait pas.
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
/etc/ppp/options, 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.
Si vous avez une ligne série/modems multiple (c'est typiquement le cas des
serveurs PPP), créer un fichier général /etc/ppp/options
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.
Ces fichiers d'options spécifiques aux ports sont appelés options.ttyx1,
options.ttyx2 et ainsi de suite (ou x est la lettre appropriée pour
votre port série).
Toutefois, pour une connexion simple, vous pouvez tranquillement utiliser le
fichier /etc/ppp/options. Vous pouvez aussi mettre toutes les options
comme argument de la commande pppd elle-même.
Il est plus simple de maintenir une configuration qui utilise les fichiers
/etc/ppp/options.ttySx. Si vous utilisez PPP sur différents
sites, vous pouvez créer un fichier d'options pour chaque site dans
/etc/ppp/options.site, et ainsi spécifier le fichier d'options en
paramètre à la commande PPP lorsque vous vous connectez (en utilisant
l'option file option-file de pppd dans la ligne de commande de
pppd).
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) /etc/ppp/options. 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.
# /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
En fait, comme toujours, ça dépend. Les options spécifiées ici devraient marcher avec la plupart des serveurs.
Cependant, si ça NE fonctionne PAS LISEZ LE FICHIER MODELE
(/etc/ppp/options.tpl) et les pages de manuel de pppd et
demandez à votre administrateur/support client qui fait marcher le
serveur sur lequel vous vous connectez.
Je rappelle également que les scripts de connexion présentés ici
utilisent également des options en ligne de commande pour pppd et
rendre les choses plus facilement modifiables.
# /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)
Si le serveur sur lequel vous vous connectez a besoin de l'authentification PAP ou CHAP, vous avez un petit peu plus de travail.
Pour les fichiers de configuration précédents, ajouter les lignes suivantes :
# # 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
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.
Vous pouvez déterminer si le serveur demande une authentification utilisant ce
protocole en activant le deboguage dans pppd. Si le serveur demande une
authentification MS CHAP, vous devriez voir les lignes
rcvd [LCP ConfReq id=0x2 <asyncmap 0x0> <auth chap 80> <magic 0x46a3>]
L'information critique ici est auth chap 80.
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.
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.
Si vous utilisez l'authentification PAP ou CHAP, alors vous devez créer les fichiers . Ce sont
/etc/ppp/pap-secrets /etc/ppp/chap-secrets
Il doivent être possédés par root, le groupe root et avoir les permissions 740 pour la sécurité.
Le premier point à remarquer au sujet de PAP et CHAP est qu'ils sont conçus pour authentifier les ordinateurs mais pas les utilisateurs
"Humm? Qu'est ce que ça change ? " Me demandez vous.
Hé bien, une fois que l'ordinateur a établi une connexion PPP avec le serveur, 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.
PAP peut (et CHAP DOIT) demander une authentification 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.
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.
Cela est possible avec l'option name username de pppd. Donc, si vous
utilisez le nom donné par votre FAI, ajoutez la ligne
name votre_utilisateur nom_chez_votre_FAI
dans votre fichier /etc/ppp/options.
Techniquement, vous devrez utiliser
user votre_utilisateur nom_chez_votre_FAI pour PAP, mais pppd est
suffisamment intelligent pour interpréter l'option name comme user
si nécessaire pour utiliser PAP. L'avantage d'utiliser l'option name
est qu'elle est également valide pour CHAP.
Puisque PAP permet d'authentifier les 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.
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 !
Le fichier /etc/ppp/pap-secrets ressemble à
# Authentication Secrete avec PAP # client serveur secret adresses_IP_locale_acceptable
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).
Supposons que votre FAI vous ait donné un nom utilisateur fred et un mot
de passe flintstone vous aurez l'option name fred dans
/etc/ppp/options[.ttySx] et vous configurerez votre
/etc/ppp/pap-secrets comme suit
# Authentication Secrete avec PAP # client serveur secret adresses_IP_locale_acceptable fred * flintstone
Cela signifie que pour une machine locale fred (pppd lui impose de
s'appeler comme cela même si ça n'est pas son nom de machine réel) et
pour n'importe quel serveur, utiliser le mot de passe (secret)
"flintstone".
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.
Cette méthode nécessite une méthode authentification mutuelle - c'est à dire que vous devez permettre à votre machine d'authentifier le serveur distant ET le serveur distant d'authentifier votre machine.
Donc, si votre machine s'appelle fred et que le serveur distant s'appelle
barney il faut définir sur fred name fred remotename barney et
sur la machine distante name barney remotename fred dans les fichiers
/etc/ppp/options.ttySx respectifs.
Le fichier /etc/chap-secrets de fred ressemblera à
# Authentication Secrete avec CHAP # client serveur secret adresses_IP_locale_acceptable fred barney flintstone barney fred wilma
et pour barney
# Authentication Secrete avec CHAP # client serveur secret adresses_IP_locale_acceptable barney fred flintstone fred barney wilma
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 ET la machine distante d'authentifier elle-même la machine locale.
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.
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 /etc/ppp/pap-secrets.
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 remotename de pppd.
Supposons que vous vous connectiez sur deux serveurs PPP utilisant le même nom
utilisateur fred. Vous configurerez votre /etc/ppp/pap-secrets
avec
fred pppserveur1 barney fred pppserveur2 wilma
Maintenant, pour se connecter sur pppserveur1 vous utiliserez
name fred remotename pppserver1 dans votre ppp-options et pour
pppserveur2 name fred remotename pppserver2.
Puisque vous pouvez sélectionner le fichier d'options à utiliser avec
pppd en utilisant l'option file filename, 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 remotename.
Maintenant que vous avez créé les fichiers /etc/ppp/options et
/etc/resolv.conf (et si besoin le fichier
/etc/ppp/pap/chap-secrets), vous pouvez tester les paramètres en
établissant une connexion PPP à la main. (Une fois que la connexion
manuelle marchera, nous automatiserons le processus).
Pour ce faire, votre programme de communication doit pouvoir être quitté sans
réinitialiser le modem. Minicom peut le faire avec Alt-Q (ou dans les
versions plus ancienne de minicom CTRL-A Q)
Vérifiez que vous êtes root.
Lancez le programme de communication (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.
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 Entrée et les caractères devraient s'afficher).
Maintenant quittez le programme de communication sans initialiser le modem
(ALT-Q ou CTRL-A Q dans minicom) et au message d'accueil de Linux (étant
root) tapez
pppd -d -detach /dev/ttySx 38400 &
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.
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.
A ce niveau, vous pouver afficher l'interface PPP en tapant la commande :
ifconfig
En plus des éventuels périphériques loopback et Ethernet, vous devriez avoir quelque chose qui ressemble à :
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
Où
(Naturellement, ifconfig ne renvoie pas ces nombres là, mais ceux qui sont
utilisés par le serveur PPP.)
Remarque : ifconfig indique également que votre liaison fonctionne
correctement !
Si vous aucun périphérique PPP n'est affiché ou quelque chose du genre
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
Votre liaison PPP n'est pas correcte... voir la section suivante sur le débuggage !
Vous devez aussi pouvoir voir une route vers l'hôte distant (et même plus). Pour cela, entrez la commande
route -n
Vous devriez obtenir quelque chose comme :
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
Ce qui est important ici, c'est d'avoir DEUX entrées pointant vers votre interface ppp.
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.
La seconde est la route par défaut (établie en donnant à pppd l'option
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.
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
pppd ne remplace pas la route par défaut, vous devez avoir une route par
défaut qui pointe sur votre interface Ethernet - qui DOIT être remplacée
par une route réseau spécifique : VOUS NE POUVEZ AVOIR QU'UNE SEULE ROUTE
PAR DEFAUT !!!
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
route add default...). Changer cette commande par quelque chose du genre
route add net ....
Maintenant testez la liaison en 'pingant' le serveur à l'adresse IP affiché par ifconfig, comme suit :
ping 10.144.153.51
Vous devriez obtenir
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
Ce listing doit continuer sans jamais s'arrêter - pour le stopper, taper CTRL C, vous recevrez alors des informations complémentaires :
--- 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
Jusqu'ici tout va bien, jusqu'ici tout va bien.
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
ping sunsite.unc.edu
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 /etc/resolv.conf - ne vous inquiétez pas (les
lumières de votre modem devraient clignoter). Rapidement, vous devriez avoir
l'affichage suivant
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
Là encore, arrêtez le en tapant CTRL C pour obtenir les statistiques...
--- 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
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 /etc/resolv.conf.
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é.
Si tout marche correctement, fermez la connexion en tapant
ppp-off
Après une courte pause, le modem devrait raccrocher.
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.
Vous devez également effacer le fichier créé par pppd
rm -f /var/lock/LCK..ttySx
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.
Quelques scripts vont automatiser la connexion et le lancement de PPP, vous n'aurez alors plus qu'à envoyer une seule commande (en étant root ou membre du groupe PPP) pour lancer votre connexion.
Si votre FAI n'a pas besoin d'utiliser PAP/CHAP, ces scripts sont faits pour vous !
Si le paquetage ppp est correctement installé, vous devez avoir deux fichiers
d'exemple. Pour PPP 2.1.2 il sont dans /usr/sbin et pour PPP 2.2 il
sont dans /etc/ppp/scripts. Ils s'appellent
pour PPP-2.1.2
ppp-on
ppp-off
et pour PPP 2.2
ppp-off
ppp-on
ppp-on-dialer
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) !
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.
C'est le premier des DEUX scripts qui lance la connexion.
#!/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
Voici le script ppp-on-dialer :
#!/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
Avec PPP-2.2, le script ppp-off ressemble à :
#!/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
Puisque les nouveaux scripts sont en deux parties, nous allons les éditer chacun leur tour.
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.
Chacune des lignes ressemblant à 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.
De plus, si vous configurez l'adresse IP (si vous avez besoin) dans le fichier
/etc/ppp/options, DETRUISEZ les lignes mentionnant
$LOCAL_IP:$REMOTE_IP \
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 ppp-on !
C'est le deuxième des scripts qui lance votre liaison PPP.
Remarque : un script 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.
Cependant, il est très utile de le regarder en détail, comme cela nous comprenons ce qu'il est réellement supposé faire !
Un script chat est une séquence de paires de "chaînes
d'attentes" et de "chaînes d'envoi
". En particulier, remarquez que nous attendons TOUJOURS
quelque chose avant d'envoyer quoi que ce soit.
Si nous envoyons quelque chose SANS avoir rien reçu avant, nous devons
attendre une chaîne vide avant (indiquée par un
"") 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.
La ligne chat de notre modèle est :
exec /usr/sbin/chat -v
Invoque chat, le -v indique à chat de mettre toutes ses entrée/sorties
dans le journal système (généralement /var/log/messages). Une fois que votre
script chat marchera correctement, éditez cette ligne et enlevez le -v
pour économiser des messages inutiles dans votre syslog.
TIMEOUT 3
ABORT '\nBUSY\r'
Si la chaîne BUSY est reçue, abandonner l'opération.
M
ABORT '\nNO ANSWER\r'
Si la chaîne NO ANSWER est reçue, abandonner l'opération.
ABORT '\nRINGING\r\n\r\nRINGING\r'
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 !
" \rAT
Ne rien attendre du modem et envoyer la chaîne AT.
OK-+++\c-OK ATH0
C'est un petit plus compliqué car cela utilise certaines capacités de chat à récupérer les erreurs.
Ç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 !
TIMEOUT 30
Mettre le temps d'attente à 30 secondes pour le reste du script. Si vous avez
des soucis avec des abandons du script chat à cause de timeout, augmentez
cette valeur à 45 secondes ou plus.
OK ATDT$TELEPHONE
Attends un OK (la réponse du modem à la commande ATH0) et compose le numéro que nous voulez appeler.
CONNECT ''
Attendre CONNECT(ce que le modem nous envoie lorsque le modem distant décroche) et n'envoie rien en réponse.
ogin:--ogin: $ACCOUNT
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 $ACCOUNT).
assword: $PASSWORD
Attendre le message du mot de passe et envoyer le mot de passe (là aussi stocké dans une variable shell).
Ce script 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 chat (man 8 chat).
Bien que le script ppp-on-dialer soit parfait pour les serveurs qui lancent
automatiquement pppd sur le serveur final une fois que vous êtes connectés,
certains serveurs nécessitent que vous lanciez PPP explicitement sur le serveur.
Si vous avez besoin d'envoyer une commande de lancement de PPP sur le serveur, vous DEVEZ éditer le script ppp-on-dialer.
A la fin du script (après la ligne password) ajouter une paire 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 $ et [ ou ] (les crochets ouverts et fermés).
Une fois que chat à obtenu le prompt du shell, chat doit envoyer la
commande de démarrage de ppp nécessaire sur le serveur PPP de votre FAI.
Pour ma part, mon serveur PPP utilise un prompt Bash standard
[hartr@kepler hartr]$
et nécessite que je tapes
ppp
pour lancer ppp sur le serveur.
Une idée judicieuse peut être d'ajouter un peu de récupération d'erreur, dans mon cas j'utilise
hartr--hartr ppp
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.
Une fois que le message est reçu, j'envoie la chaîne ppp.
Remarque : n'oubliez pas d'ajouter un \ à la fin de la ligne précédente
pour que chat pense que le script de connexion de chat est toujours
sur une seule ligne !
Malheureusement, certains serveurs génèrent un nombre de messages très
variable ! Vous aurez peut-être besoin de vous connecter plusieurs fois
avec minicom pour comprendre comment ça marche et récupérer une chaîne
"d'attente" stable.
Si votre FAI utilise PAP/CHAP, alors votre script chat est bien plus
simple. Tout ce que votre script chat doit faire est de composer le
numéro, attendre
la connexion et ensuite laisser pppd s'occuper du processus de connexion !
#!/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 '' \
debug et file option_file de pppd
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.
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 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).
Une fois que tout marche correctement, vous pouvez alors enlever cette option.
Si vous avez appelé votre fichier d'options de ppp autrement que
/etc/ppp/options ou /etc/ppp/options.ttySx, spécifiez le
nom du fichier avec l'option file de pppd :
exec /usr/sbin/pppd debug file options.myserver /dev/ttyS0 38400 \
Ouvrez un nouveau Xterm root (si vous êtes sous X) ou ouvrez une nouvelle console virtuelle et connectez vous comme root.
Dans cette nouvelle session, tapez la c