Mise en oeuvre de PPP pour un client Internet sous...

20
Mise en œuvre de PPP pour un client Internet sous Linux Phases de mise en œuvre d'un module sous linux ................................................................................................... 2 Ports série sous linux............................................................................................................................................... 3 Les répertoires et les fichiers du package PPP ....................................................................................................... 3 Les programmes .................................................................................................................................................. 3 La documentation................................................................................................................................................ 3 Consultation du journal de démarrage de linux................................................................................................... 4 Les données nécessaires à la configuration d'une liaison PPP ................................................................................ 5 Les données de base pour configurer un accès Internet: ..................................................................................... 5 autres données ..................................................................................................................................................... 5 Autres données éventuellement........................................................................................................................... 5 Etapes de mise en œuvre d’un accès Internet .......................................................................................................... 6 1 - tester les ports ............................................................................................................................................ 6 2 - Créer un lien symbolique ........................................................................................................................... 6 3 - Tester la liaison .......................................................................................................................................... 6 4 - Configurer DNS ......................................................................................................................................... 6 5 - Configurer PPP .......................................................................................................................................... 7 6 - Automatiser................................................................................................................................................ 7 Lancement du démon pppd ..................................................................................................................................... 8 Solutions de mise en œuvre de la connexion ...................................................................................................... 8 Solution 1 ........................................................................................................................................................ 8 Solution 2 ........................................................................................................................................................ 9 Solution 3 ........................................................................................................................................................ 9 Solution 4 ...................................................................................................................................................... 10 Solution 5 ...................................................................................................................................................... 11 Dial on demand ................................................................................................................................................. 11 Arrêt du démon pppd ............................................................................................................................................ 12 Autre script plus complexe............................................................................................................................ 12 Autre script ppp-off ....................................................................................................................................... 12 Donner les droits à plusieurs utilisateurs de lancer et d’arrêter ppp ...................................................................... 14 Configuration de plusieurs providers .................................................................................................................... 15 Les utilitaires graphiques ...................................................................................................................................... 16 netcfg................................................................................................................................................................. 16 Linuxconf .......................................................................................................................................................... 16 usernet ............................................................................................................................................................... 16 KPPP ................................................................................................................................................................. 16 Ezppp ................................................................................................................................................................ 16 gnomeppp.......................................................................................................................................................... 17 Autres produits, consulter le site ........................................................................................................................... 17 Diald...................................................................................................................................................................... 18 RNIS ..................................................................................................................................................................... 20 1/20

Transcript of Mise en oeuvre de PPP pour un client Internet sous...

Page 1: Mise en oeuvre de PPP pour un client Internet sous Linuxaldevar.free.fr/data/15-AccesDistant/Client_PPP_sous_Linux.pdf · Ports série sous linux - /dev/ttyS0 à /dev/ttyS9 ports

Mise en œuvre de PPP pour un client Internet sous Linux

Phases de mise en œuvre d'un module sous linux ................................................................................................... 2 Ports série sous linux............................................................................................................................................... 3 Les répertoires et les fichiers du package PPP ....................................................................................................... 3

Les programmes.................................................................................................................................................. 3 La documentation................................................................................................................................................ 3 Consultation du journal de démarrage de linux................................................................................................... 4

Les données nécessaires à la configuration d'une liaison PPP ................................................................................ 5 Les données de base pour configurer un accès Internet: ..................................................................................... 5 autres données ..................................................................................................................................................... 5 Autres données éventuellement........................................................................................................................... 5

Etapes de mise en œuvre d’un accès Internet.......................................................................................................... 6 1 - tester les ports ............................................................................................................................................ 6 2 - Créer un lien symbolique........................................................................................................................... 6 3 - Tester la liaison.......................................................................................................................................... 6 4 - Configurer DNS......................................................................................................................................... 6 5 - Configurer PPP .......................................................................................................................................... 7 6 - Automatiser................................................................................................................................................ 7

Lancement du démon pppd ..................................................................................................................................... 8 Solutions de mise en œuvre de la connexion ...................................................................................................... 8

Solution 1 ........................................................................................................................................................ 8 Solution 2 ........................................................................................................................................................ 9 Solution 3 ........................................................................................................................................................ 9 Solution 4 ...................................................................................................................................................... 10 Solution 5 ...................................................................................................................................................... 11

Dial on demand ................................................................................................................................................. 11 Arrêt du démon pppd ............................................................................................................................................ 12

Autre script plus complexe............................................................................................................................ 12 Autre script ppp-off....................................................................................................................................... 12

Donner les droits à plusieurs utilisateurs de lancer et d’arrêter ppp...................................................................... 14 Configuration de plusieurs providers .................................................................................................................... 15 Les utilitaires graphiques ...................................................................................................................................... 16

netcfg................................................................................................................................................................. 16 Linuxconf.......................................................................................................................................................... 16 usernet ............................................................................................................................................................... 16 KPPP................................................................................................................................................................. 16 Ezppp ................................................................................................................................................................ 16 gnomeppp.......................................................................................................................................................... 17

Autres produits, consulter le site ........................................................................................................................... 17 Diald...................................................................................................................................................................... 18 RNIS ..................................................................................................................................................................... 20

1/20

Page 2: Mise en oeuvre de PPP pour un client Internet sous Linuxaldevar.free.fr/data/15-AccesDistant/Client_PPP_sous_Linux.pdf · Ports série sous linux - /dev/ttyS0 à /dev/ttyS9 ports

PPP n'est pas un service comme HTTP ou DNS fonctionnant sur TCP/IP. Il offre une connectivité non hiérarchisée entre 2 machines reliées en point en point. Sous Unix c'est un démon appelé pppd. Cependant dans beaucoup de situations ou il est mis en œuvre (comme l’accès à un FAI (fournisseur d’accès Internet)), on parle de client (celui qui appelle) et de serveur (celui qui est appelé). Il s’agit là d’un cas précis d’utilisation de PPP mais les 2 machines pourraient être à la fois client et serveur (le démon pppd est potentiellement à la fois client et serveur). Dans le jargon PPP, l’entité à laquelle on est connecté s’appelle le peer (c’est un protocole peer to peer). Phases de mise en œuvre d'un module sous linux Pour que ça fonctionne il faut que le noyau linux soit compilé avec le support réseau (networking options) et le support PPP (PPP support) intégré au noyau (built in) ou sous forme de module Vérifier le noyau ou générer un nouveau noyau :

- aller dans /usr/src/linux-2.x.x (correspond à la version du noyau installé) - lancer la configuration du noyau par make config (austère), make menuconfig (mieux)

ou make xconfig (en mode xwindow) - vérifier que les options suivantes sont validées :

- menu general setup : [*] Networking support - menu Networking option : [*] TCP/IP Networking - menu Network device support : <*> PPP support - menu ISDN subsystem si on est RNIS

Pour recompiler le noyau : - gérer les dépendances : make dep - lancer la compilation du noyau : make bzimage - lancer la compilation des modules : make modules - installer : make install puis make modules_install

Si PPP est déjà installé - Vérifier la version du package : rpm –qa | grep ppp Pour installer une version plus récente ou si le package n’est pas installé - télécharger sur internet les dernières sources (vérifier l’adéquation version du noyau - version de

pppd) par exemple sur le site ftp://cs.anu.edu.au/pub/software/ppp/ (lire le fichier readme qui décrit les évolutions du logiciel). On trouve 2 versions, la version tar.gz et la version rpm.. Le logiciel est téléchargé dans le répertoire /usr/local/src.

Cas du rpm - repérer le rpm ppp à installer - installer le package ppp : rpm –ivh ppp-2.x.x.rpm - (l’utilisation du gestionnaire graphique de package est plus convivial) Cas du tar.gz - extraire dans un répertoire de travail (décompresser, décompacter et créer un dossier ppp dans le

répertoire courant) les fichiers : tar -xvzf ppp-2.3.x.tar.gz ou gunzip –c ppp-2.3.x.tar.gz | tar xf –

- se positionner dans le répertoire où se trouve la distribution - lire les fichiers readme et install - Vérification des paramètres système, Génération du fichier de compilation makefile adapté à

l'environnement d'exploitation : ./configure - Compilation des fichiers sources de PPP et création du binaire pppd : make - Copie de tous les répertoires et du binaire : make install

2/20

Page 3: Mise en oeuvre de PPP pour un client Internet sous Linuxaldevar.free.fr/data/15-AccesDistant/Client_PPP_sous_Linux.pdf · Ports série sous linux - /dev/ttyS0 à /dev/ttyS9 ports

Ports série sous linux - /dev/ttyS0 à /dev/ttyS9 ports rs232 pour noyaux 2.2.x et 2.4.x que ce soit en entrée ou en sortie

(remplacent cua0,… pour les anciens noyaux 2.0.x) Les répertoires et les fichiers du package PPP Le driver hdlc de base est inclus dans le noyau Linux

LES PROGRAMMES Les fichiers de base sont : - /usr/sbin/pppd (démon ppp) - /usr/sbin/chat (utilitaire de dialogue avec le modem) - /usr/sbin/ppp-on (modèle de script simple de lancement de connexion exécuté par pppd mais

non sécurisé) - /usr/sbin/ppp-on-dialer (script contenant les paramètres de dialogue modem avec chat, appelé

par ppp-on) - /usr/sbin/ppp-off (script simple d’arrêt de la connexion) - /etc/ppp/options (fichier de configuration pour pppd) - /etc/ppp/options.ttyXX (idem options mais pour le cas ou il y a plusieurs ports séries utilisés) - /etc/ppp/peers (répertoire vide prévu pour configurer plusieurs connexions ppp vers plusieurs

pairs) Dans Mandrake, les fichiers ppp-on, ppp-on-dialer et ppp-off se trouvent dans /usr/share/doc/ppp-2.4.0/scripts Pour Mandrake, on trouve en plus les fichiers suivants : - dans /usr/sbin/ les exécutables (pppstats utilitaire de stat sur les connexions, pppdump pour

capturer les trames). - dans /sbin (ifup, ifdown, ipppd, ipppstats, ces 2 derniers pour RNIS). - Dans /etc/sysconfig/network-scripts :

- ifdown-ppp (script d’arrêt de pppd) - ifup-ppp (script de démarrage de pppd) - ifdown-post - ifup-post

- dans /etc/ppp/ les fichiers de configuration - pap-secrets (idem en cas d’authentification pap) droits 600 sur ce fichier. - chap-secrets (fichier contenant le nom de connexion et le mot de passe en clair en cas

d’authentification chap), droits 600 sur ce fichier. - options peut contenir les paramètres de pppd (il est systématiquement analysé et pris en

compte au lancement du démon pppd, qu’il soit vide ou non. - et les scripts :

- ip-up script comportant des commandes à lancer après la connexion (lancement de l’explorateur, timeout…), il est appelé automatiquement par pppd.

- ip-down script comportant des commandes à lancer à la déconnexion (appelé automatiquement)

Autres fichiers : - auth-up et auth-down (servent à enregistrer des log dans /var/log/pppstats) - options.ttyXX (dans le cas ou plusieurs lignes série et plusieurs modems sont mis en œuvre)

LA DOCUMENTATION /usr/doc/ppp-2.4.0 (par exemple) fichier Readme et readme.linux /usr/man/man8/pppd._.bz2 http://www.freenix.org/unix/linux/HOWTO/PPP-HOWTO.html

3/20

Page 4: Mise en oeuvre de PPP pour un client Internet sous Linuxaldevar.free.fr/data/15-AccesDistant/Client_PPP_sous_Linux.pdf · Ports série sous linux - /dev/ttyS0 à /dev/ttyS9 ports

CONSULTATION DU JOURNAL DE DEMARRAGE DE LINUX Démon syslogd, configuration dans /etc/syslog.conf - /var/log/syslog - dmesg

4/20

Page 5: Mise en oeuvre de PPP pour un client Internet sous Linuxaldevar.free.fr/data/15-AccesDistant/Client_PPP_sous_Linux.pdf · Ports série sous linux - /dev/ttyS0 à /dev/ttyS9 ports

Les données nécessaires à la configuration d'une liaison PPP

LES DONNEES DE BASE POUR CONFIGURER UN ACCES INTERNET: - Nom du provider - Les identifiants de connexion : nom du compte (id) et mot de passe - le mécanisme de sécurisation (PAP, CHAP ou rien) - numéro de téléphone du provider (en accès direct ou via un PABX) - adresses des serveurs DNS primaire et secondaire (parfois il n’a pas à déclarer de DNS

secondaire et parfois pas de DNS du tout : cette dernière possibilité est permise uniquement pour les clients PPP Windows pour lesquels l’échange dynamique des adresses DNS peut être fait lors du processus de connexion. Les machines Linux en client PPP ne supportent pas cette situation : il faut au moins un DNS).

- adresse ip du provider et du client (s’il s’agit d’une adresse statique, c’est le plus souvent une adresse dynamique) AUTRES DONNEES

Un nom pour l’identification de la connexion Le nom de domaine du FAI Le nom du port PC raccordé au modem (ttyS1 pour COM2,…) Les caractéristiques du modem : vitesse entre PC et modem, séquence éventuelle

d'initialisation du modem, contrôle de flux CTS-RTS,… Les scripts

AUTRES DONNEES EVENTUELLEMENT Nom du serveur de mail entrant (pop) et sortant (smtp) Nom du serveur de News Identifiant de messagerie (s’il n’y en a pas c’est le même que l’identifiant de connexion) Mot de passe de messagerie (s’il n’y en a pas c’est le même que le mot de passe de connexion)

5/20

Page 6: Mise en oeuvre de PPP pour un client Internet sous Linuxaldevar.free.fr/data/15-AccesDistant/Client_PPP_sous_Linux.pdf · Ports série sous linux - /dev/ttyS0 à /dev/ttyS9 ports

Etapes de mise en œuvre d’un accès Internet La configuration, le lancement et l’arrêt du démon peuvent se faire avec différents outils graphiques plus ou moins complets et plus ou moins conviviaux (EZPPP, KPPP,…), qui ont l’avantage de la rapidité mais l’inconvénient de masquer la compréhension du processus. La procédure décrite ici est la procédure ‘manuelle’. 1 - tester les ports vérifier que les ports série sont bien reconnus au démarrage de la machine (commande dmesg | more ou autre) : vérifier que ttyS0, ttyS1, etc sont bien déclarés (cf chapitre 2 connex) - vérifier la configuration du port série utilisé dans /dev (/dev/ttyS0 correspond à ttyS0, etc) par la

commande setserial -a /dev/ttyS0 La configuration peut se faire automatiquement au démarrage dans /etc/init.d/rc ou la suite … 2 - Créer un lien symbolique de /dev/modem vers le port série utilisé : exemple pour le port 1 : ln -s /dev/ttyS0 /dev/modem L’utilitaire modemtool permet également de faire cette affectation. Vérifier le lien par ls –l /dev/modem Donner au groupe tty le droit d’utiliser le port 1 (chmod 660 /dev/ttyS0) 3 - Tester la liaison - Tester la connexion avec le modem (séquence ATZ - OK) avec un utilitaire comme minicom.

Vérifier la vitesse possible entre PC et modem (gamme possible 300 bps, 1200, 2400, 4800, 9600, 19200, 38400, 57200 et 115000). Plus la vitesse est grande mieux c'est mais tous les modems ne suivent pas à la vitesse maxi.

- Minicom –s donne un menu (option serial port setup pour configurer le port série utilisé), sauvegarder la config. L’utilisation de minicom est décrite dans le grand livre Linux (chapitre 11, pages 824 et 825) et sur le site http://www.com.univ-mrs.fr/ssc/info/linux/doc-ppp.html

- Rechercher les commandes d'initialisation du modem dont on dispose sur les sites http://www.spy.net/~dustin/modem/ et www.in.net/info/modems/index.html

- Prévoir la mise en route du contrôle de flux matériel (paramètres crtscts, commande &k3). Tester si le modem réagit à cette commande.

- Tester un appel sur le modem avec minicom (ex: ATDT 0,086155555 appel du provider Libertysurf) Un fois la connexion établie, le provider renvoie des informations : si elles sont lisibles (invite de login), cela veut dire que le provider n’utilise pas de protocole de sécurisation de type PAP ou CHAP, si les infos sont incompréhensibles (suite de caractères bizarres), il s’agit des séquences d’authentification PAP ou CHAP. La plupart des providers fonctionnent avec PAP ou CHAP. Dans le cas d’une connexion sans PAP ni CHAP (par exemple pour une connexion avec un serveur Dial-in en intranet), il est possible avec minicom de tracer le dialogue entre le serveur et le poste de travail (option D de minicom). Voir sur le site http://www.com.univ-mrs.fr/ssc/info/linux/doc-ppp.html qui offre une bonne explication sur la configuration d’un client et d’un serveur PPP. Les chaînes fournies par le provider sont enregistrées et peuvent donc ensuite servir à automatiser la connexion dans le chat-script

4 - Configurer DNS Configurer la résolution DNS (fichiers /etc/resolv.conf et host.conf - /etc/resolv.conf qui donnne les adresses IP des serveurs DNS du provider - /etc/host.conf /etc/resolv.conf

domain mon-isp.fr nameserver xxx.xxx.xxx.xxx nameserver xxx.xxx.xxx.xxx

A noter que le renseignement des adresses des DNS du provider dans resolv.conf peut se faire dynamiquement lors de la négociation de l’échange (tous les providers ont ils cette fonctionnalité et

6/20

Page 7: Mise en oeuvre de PPP pour un client Internet sous Linuxaldevar.free.fr/data/15-AccesDistant/Client_PPP_sous_Linux.pdf · Ports série sous linux - /dev/ttyS0 à /dev/ttyS9 ports

toutes les distributions linux l’ont elles ??) : le provider fournit dans les options d’une trame IPCP les adresses en question et le script ip-up écrit dans resolv.conf. Ce procédé est à l’origine fourni pour les clients microsoft windows 9.x. /etc/host.conf

order bind,host multi on

Autres fichiers concernés /etc/hostname /etc/hosts (si le provider possède une adresse IP fixe) /etc/syslog.conf 5 - Configurer PPP Configurer les fichiers spécifiques PPP ( /etc/ppp/options, /etc/ppp/pap-secrets ou /etc/ppp/chap-secrets (chap ne semble pas être souvent utilisé par les fournisseurs d'accès) pap et chap sont des protocoles d’authentification utilisés et négociés en début de connexion par ppp. Les fichiers en question doivent donc être bien renseignés pour le cas ou l’un des 2 protocoles soit mis en œuvre ce qui est presque toujours le cas. Modifier les droits sur ces fichiers à 600 pour protéger les mots de passe - le fichier /etc/ppp/options : ce fichier doit être présent même s'il est vide. Il est lu

systématiquement par pppd Exemple de paramètres de /etc/ppp/options voir plus loin

- les fichiers /etc/ppp/pap-secrets et /etc/ppp/chap-secrets pour le cas d'une connexion avec un des 2 procédés d'authentification. Exemple de paramètres de /etc/ppp/ pap-secrets <id de connection> <server - provider> <mot de passe> <adresse IP> fti/machin wanadoo xxxxxxxxx * L’identifiant de connexion est le nom qui vous a été fourni par le provider. Ce nom identifie un

utilisateur générique car ensuite plusieurs utilisateurs réels de la machine pourront effectuer une connexion ppp avec cet identifiant.

Le nom du provider peut être remplacé par un * s’il n’y a qu’un provider possible (et donc qu’une seule ligne dans le fichier).

Par précaution copier pap-secrets dans chap-secrets (la structure des 2 fichiers est la même)

6 - Automatiser automatiser la connexion – déconnexion et prévoir le lancement automatique d’applications (ip-up et ip-down)

7/20

Page 8: Mise en oeuvre de PPP pour un client Internet sous Linuxaldevar.free.fr/data/15-AccesDistant/Client_PPP_sous_Linux.pdf · Ports série sous linux - /dev/ttyS0 à /dev/ttyS9 ports

Lancement du démon pppd La procédure en mode ‘manuel’ est le moyen le plus rudimentaire mais il a l'avantage de pouvoir contrôler tout ce qui se passe. Syntaxe de pppd : pppd [options] connect ‘chat [nom-script ou paramètres ou fichier options]’ Le champ [options] est entre crochets pour spécifier qu’il n’est pas obligatoire. Il contient les paramètres de configuration de pppd. Si les options ne sont pas présentes ici, elles doivent être inscrites dans le fichier /etc/ppp/options (ce qui est plus élégant et de plus ce fichier est de toute façon lu) La commande connect permet d'invoquer le programme (chat) qui va s'occuper de gérer le pilotage du modem et la connexion physique avec l'hôte distant. Chat dialogue avec le modem suivant un mécanisme du type expect, send (attente d'un message, réponse) Pour voir le déroulement de la connexion, consulter le fichier de log en tapant dans un shell

tail -f /var/log/syslog L’identification de l’utilisateur peut se faire à 2 moments : - lors de l’utilisation de chat (à déconseiller) - lors du lancement de PPP (on parle plutôt d’authentification PAP ou CHAP) La plupart des providers utilisent l’authentification PAP ou CHAP, dans ce cas il ne faut surtout renseigner les champs login et mot de passe car sinon on reste bloqué là dessus. Dans le cas d’un intranet qui ne demande pas d’authentification on peut éventuellement renseigner ces champs mais ce n’est pas la bonne démarche.

SOLUTIONS DE MISE EN ŒUVRE DE LA CONNEXION Il y a plusieurs possibilités de lancer le démon pppd - en tapant toutes les informations dans un script shell (solution fastidieuse) (solution 1) - en mettant tout dans un fichier exécutable avec la commande exec (solution proche de la

première) - en passant en paramètre un fichier script qui comporte les options de connexion (solution 2) - en utilisant les fichiers prévus à cet effet (/etc/options) (solution 3) - en utilisant et en adaptant les scripts fournis dans la distribution (solution 4) et (solution 5). Solution 1 Lancer le démon pppd en tapant tous les paramètres de configuration nécessaires à la connexion modem et à PPP sur la ligne de commande Cette solution est assez fastidieuse, difficile à maintenir et a l’inconvénient d’afficher le id de login et le mot de passe en clair => à déconseiller Exemple à tester

/usr/sbin/pppd connect '/usr/sbin/chat –v/ ABORT "ERROR"/ ABORT "NO CARRIER"/ ABORT "BUSY"/ "" ATZ/ OK ATDTxxxxxxxx/ CONNECT ""/ ogin: xxxx/ ssword: yyyy'/ /dev/modem 115200 -detach debug crtscts modem defaultroute noipdefault 0.0.0.0 :

Signification des paramètres de pppd : L’option connect est suivie d’un groupe de paramètres compris entre 2 apostrophes. Ils débutent par l’appel au programme chat suivi de données concernant essentiellement l’établissement de la connexion sous forme de dialogue EXPECT - SEND ( attente d’info - envoi de donnée). Une chaîne comme "" signifie une chaîne vide (on n’attend rien du modem avant d’envoyer la commande ou on

8/20

Page 9: Mise en oeuvre de PPP pour un client Internet sous Linuxaldevar.free.fr/data/15-AccesDistant/Client_PPP_sous_Linux.pdf · Ports série sous linux - /dev/ttyS0 à /dev/ttyS9 ports

n’envoie rien au modem en réponse à un message, par exemple on n’attend pas de message avant d’envoyer ATZ).

-v active le mode debugage (syslogd recevra les messages de la connexion) Les lignes ABORT suivies d’un message indique le comportement à suivre en cas d’erreur (par exemple la communication est abandonnée (ABORT) si le modem renvoie NO CARRIER (pas de porteuse). La suite "" ATZ OK ATDTxxxxxxxx CONNECT "" indique : EXPECT chaine vide, SEND initialisation du modem EXPECT OK, SEND numerotation EXPECT réponse CONNECT, SEND chaine vide (rien). ogin: xxxx ssword: yyyy' attente de login, réponse par chat du login , attente de password, réponse par chat, parenthèse finale pour chat (les premiers caractères de login et de password sont omis car ils peuvent être manqués par chat (il s’agit de réception asynchrone)

Un autre groupe de paramètres suit la seconde apostrophe et concerne la gestion – configuration de la liaison :

/dev/modem 115200 (adresse du port et vitesse de la jonction DTE-DCE) -detach (empêche pppd de passer en tâche de fond, on peut l’arrêter par CTRL C) debug (le contenu des trames est enregistré dans un journal) crtscts (contrôle de flux du modem) modem (mot clé pour que pppd prenne en compte la détection de porteuse CD par le modem) defaultroute (ajout de la route vers le serveur PPP comme route (appelée aussi passerelle) par

défaut dans la table de routage de la machine) noipdefault (indique l’affectation d’adresse IP dynamique par le provider) 0.0.0.0: (le provider n’a pas d’adresse IP fixée, s’il y en avait une elle devrait suivre le :)

Solution 2 Faire appel à un fichier script pour les paramètres de chat :

/usr/sbin/pppd connect '/usr/sbin/chat –v -f/etc/ppp/chat-script’ /dev/modem 115200 -detach debug crtscts modem defaultroute noipdefault 0.0.0.0 :

le paramètre –f après chat suivi d’un nom de fichier indique que les paramètres de chat sont mis dans ce fichier (solution plus sûre car le mot de passe n’apparaît pas) Le fichier chat-script contiendra les paramètres de connexion de chat, par exemple :

'ABORT' 'BUSY' 'ABORT' 'ERROR' 'ABORT' 'NO CARRIER' 'ABORT' 'NO DIALTONE' 'ABORT' 'Invalid Login' 'ABORT' 'Login incorrect' '' 'ATZ' 'OK' 'ATDTxxxxxxxx' 'CONNECT' '' 'message login: ' 'machin' [en bleu les chaînes envoyée depuis le serveur] 'Password: ' 'truc' [en vert les chaînes de réponses du client]

Comme il est dit plus haut, tous les serveurs ne demandent pas d’authentification à ce stade. Elle se fait plutôt et mieux au niveau de PPP. Les 2 dernières lignes ne sont donc pas dans ce cas nécessaires. Solution 3 Les paramètres de pppd, à la place d’être mis en ligne de commande, peuvent être tous placés dans le fichier /etc/ppp/options

9/20

Page 10: Mise en oeuvre de PPP pour un client Internet sous Linuxaldevar.free.fr/data/15-AccesDistant/Client_PPP_sous_Linux.pdf · Ports série sous linux - /dev/ttyS0 à /dev/ttyS9 ports

La ligne de commande est plus simple : /usr/sbin/pppd connect '/usr/sbin/chat –v -f/etc/ppp/chat-script’

La liste des paramètres du fichier options est imposante. Ils ont tous une valeur par défaut. Certains paramètres sont plus importants que d’autres, en voici quelques uns avec leur signification :

user xxxxx (identifiant de connexion) remotename xxxxxx (nom du serveur, exemple wanadoo, doit être identique dans les fichiers

pap-secrets et chap-secrets) modem (contrôle du modem) /dev/ttyS01 115200 ipcp-accept-local (on accepte une adresse IP locale fournie par le provider) ipcp-accept-remote (on accepte une adresse IP pour le serveur distant fournie par le provider noipdefault (c’est le provider qui va affecter dynamiquement une adresse IP au client) mru 1064 (taille maxi en octets d’un paquet en réception, 1500 par défaut) asyncmap 0 (mise à 0 de la table asyncmap, valeur recommandée 0xa0000) debug (pour enregistrer les messages du dialogue, important pour la mise au point) -detach crtscts (activation du contrôle de flux CTS-RTS) defaultroute (permet d’enregistrer dynamiquement l’adresse IP fournie par le provider comme route par défaut de la machine dans sa table de routage, la ligne disparaît quand la connexion s’achève) netmask 255.255.255.255 (masque réseau sans grande importance sur une liaison PPP) lock (verrouillage du port série utilisé pour empêcher un autre usage de ce port, pppd crée un fichier verrou /var/lock/LCK..*) noauth (le provider n’a pas à s’authentifier auprès du client) Demand pour fonctionner en mode dial on demand * idle temps d’inactivité en secondes au bout duquel la connexion se coupe automatiquement

(utile) holdoff (demande de réessayer après x secondes après un échec ….

* Il semblerait que pour faire fonctionner le dial on demand, il est nécessaire (un bug ?) d’ajouter, juste après la ligne demand, une ligne du type 192.168.0.3:192.168.0.4 (qui déclare une adresse IP pour le client et pour le provider) Cette ligne doit précéder les lignes ipcp-accept qui corrigent cette erreur. Solution 4 Adaptation et utilisation des scripts fournis par la distribution Ces fichiers doivent être rendus exécutables par chmod +x Script ppp-on #!/bin/sh #Modifiez les paramètres en fonction de votre connexion. DEVICE=ttys0 TELEPHONE=0836061318 # Le téléphone. ACCOUNT=votre_login # Le login. PASSWORD=Yz*v143 # Le mot de passe. LOCAL_IP=184.216.154.132 # l'IP local (0.0.0.0 pour un IP dynamique). REMOTE_IP=0.0.0.0 # l'IP remote si nécessaire. Normalement 0.0.0.0. NETMASK=255.255.255.0 # Le netmask si nécessaire. # # Exporte les variables pour le script /etc/ppp/ppp-on-dialer. export TELEPHONE ACCOUNT PASSWORD. DIALER_SCRIPT=/etc/ppp/ppp-on-dialer. exec /usr/sbin/pppd debug lock modem crtscts /dev/ttyS0 115200 \

asyncmap 20A0000 escape FF kdebug 0 $LOCAL_IP:$REMOTE_IP \ noipdefault netmask $NETMASK defaultroute connect $DIALER_SCRIPT

etc/ppp/ppp-on-dialer

10/20

Page 11: Mise en oeuvre de PPP pour un client Internet sous Linuxaldevar.free.fr/data/15-AccesDistant/Client_PPP_sous_Linux.pdf · Ports série sous linux - /dev/ttyS0 à /dev/ttyS9 ports

#!/bin/sh 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 ''\ ogin:--ogin: $ACCOUNT\ assword: $PASSWORD \q devant le password permet de ne pas voir le password en clair dans les fichiers de log Solution 5 Utiliser le script ifup (ifup ppp0) situé dans /etc/sysconfig/network-scripts dans le cas où on a mis en œuvre l’utilitaire graphique netcfg ou encore ip-up dans /etc/ppp Ces scripts permettent de lancer automatiquement des applications au démarrage de la connexion (messagerie,…). Un bon exemple de ip-up se trouve sur le site http://lealinux.free.fr/reseau/multi3_ipupdown.php3 Dans tous les cas ne pas omettre le fichier pap-secrets et chap-secrets

DIAL ON DEMAND Le lancement de PPP peut se faire en mode dial on demand, c’est à dire à la demande, si des trames doivent être transmises. Pour cela, il y a 2 manières : - utiliser l’option demand dans le fichier options - faire appel au programme diald (voir plus loin) Site intéressant décrivant une configuration manuelle avec authentification CHAP http://funix.free.fr/informatique/linux/main-linux.php3?ref=ppp&page=menu

11/20

Page 12: Mise en oeuvre de PPP pour un client Internet sous Linuxaldevar.free.fr/data/15-AccesDistant/Client_PPP_sous_Linux.pdf · Ports série sous linux - /dev/ttyS0 à /dev/ttyS9 ports

Arrêt du démon pppd Pour arrêter la connexion PPP et la communication modem, il faut tuer le processus pppd

Killall pppd Ou kill –9 numero-du-processus (numéro trouvé par ps –x | grep pppd) Le numéro du processus peut aussi se trouver dans /va/run/pppx.pid (x = le n° de la connexion ppp, le plus souvent 0). On peut créer un script qui contienne la ligne : Kill -INT ‘cat/vat/run/ppp0.pid’ Autre script plus complexe

$cat connex-off #!/bin/sh # # Determine the device to be terminated. # if [ "$1" = "" ]; then

DEVICE=ppp0 else

DEVICE=$1 fi # # If the ppp0 pid file is present then the program is running. Stop it. if [ -r /var/run/$DEVICE.pid ]; then

kill -INT `cat /var/run/$DEVICE.pid` # # If the kill did not work then there is no process running for this # pid. It may also mean that the lock file will be left. You may wish # to delete the lock file at the same time.

if [ ! "$?" = "0" ]; then rm -f /var/run/$DEVICE.pid

# If the kill did not work then there is no process running for this # pid. It may also mean that the lock file will be left. You may wish # to delete the lock file at the same time.

if [ ! "$?" = "0" ]; then rm -f /var/run/$DEVICE.pid echo "ERROR: Removed stale pid file" exit 1

fi # # Success. Let pppd clean up its own junk.

echo "Lien PPP vers $DEVICE terminé.. ." exit 0

fi # # The ppp process is not running for ppp0 echo "ERROR: le lien PPP vers $DEVICE (annex-com) n'est pas actif! " exit 1

Autre script ppp-off #!/bin/sh if [ "$1" = "" ]; then DEVICE=ppp0 else DEVICE=$1 fi

12/20

Page 13: Mise en oeuvre de PPP pour un client Internet sous Linuxaldevar.free.fr/data/15-AccesDistant/Client_PPP_sous_Linux.pdf · Ports série sous linux - /dev/ttyS0 à /dev/ttyS9 ports

if [ -r /var/run/$DEVICE.pid ]; then kill -INT `cat /var/run/$DEVICE.pid` if [ ! "$?" = "0" ]; then rm -f /var/run/$DEVICE.pid echo "ERROR: Removed stale pid file" exit 1 fi echo "PPP link to $DEVICE terminated." exit 0 fi echo "ERROR: PPP link is not active on $DEVICE" exit 1 Pour arrêter une connexion on peut utiliser en mode texte le script ifdown situé dans /etc/sysconfig/network-scripts (dans le cas ou on a mis en œuvre l’utilitaire graphique netcfg.) mais ifdown ne coupe pas la communication. Voir aussi le programme ip-down sur le site http://lealinux.free.fr/reseau/multi3_ipupdown.php3

13/20

Page 14: Mise en oeuvre de PPP pour un client Internet sous Linuxaldevar.free.fr/data/15-AccesDistant/Client_PPP_sous_Linux.pdf · Ports série sous linux - /dev/ttyS0 à /dev/ttyS9 ports

Donner les droits à plusieurs utilisateurs de lancer et d’arrêter ppp Par défaut les programmes pppd et autres appartiennent à root ; Cependant il peut être utile de permettre à d’autres utilisateurs de pourvoir accéder à Internet sans demander l’autorisation à root. Mais il importe aussi de pouvoir sélectionner ces utilisateurs. C’est pourquoi le groupe pppusers existe par défaut sur la distribution. Il suffit donc de déclarer les utilisateurs que l’on veut dans ce groupe et de donner au groupe les droits sur pppd. Ceci se fait par la commande (utilisation de SUID)

Chown root :pppusers /usr/sbin/pppd Chmod +s /usr/sbin/pppd

Une autre possibilté est l’utilisation de l’utilitaire sudo qui offre beaucoup de possibilités et de souplesse. Pour une approche de ce service cf le site : www.ac-creteil.fr/reseaux/systemes/linux/outils-tcp-ip/Linux-sudo.html

14/20

Page 15: Mise en oeuvre de PPP pour un client Internet sous Linuxaldevar.free.fr/data/15-AccesDistant/Client_PPP_sous_Linux.pdf · Ports série sous linux - /dev/ttyS0 à /dev/ttyS9 ports

Configuration de plusieurs providers Dans le cas ou on a besoin d’accéder à plusieurs providers, il est nécessaire de fournir pour chaque provider : - un numéro de téléphone - un identifiant - un mot de passe - etc D’autre part le dialogue modem peut être différent, l’authentification (fichiers /etc/ppp/pap-secrets et /etc/ppp/chap-secrets) est à compléter Dans ce cas la solution la plus simple consiste à lancer un programme avec en paramètre une variable qui indique le nom du provider (exemple pppon provider1) qui exécutera pppd call provider1. Provider1 sera un programme à placer dans /etc/ppp/peers, il aura pour rôle de remplacer le fichier options qui est unique. Les paramètres de chat devront être situés dans un fichier spécifique à chaque provider (à mettre également dans /etc/ppp/peers). Pages décrivant la configuration pour plusieurs providers http://lealinux.free.fr/reseau/multi4_compte.php3 http://www.funix.org/fr/linux/main-linux.php3?ref=many-fai&page=menu

15/20

Page 16: Mise en oeuvre de PPP pour un client Internet sous Linuxaldevar.free.fr/data/15-AccesDistant/Client_PPP_sous_Linux.pdf · Ports série sous linux - /dev/ttyS0 à /dev/ttyS9 ports

Les utilitaires graphiques Plusieurs utilitaires sous Xwindows permettent de faciliter la configuration voire le lancement et l'arrêt d'une connexion.

NETCFG netcfg est un utilitaire dont l’utilisation est décrite dans le grand livre Linux (chapitre 10, pages 620 à 627) ou sur le site http://www.com.univ-mrs.fr/ssc/info/linux/doc-ppp.html Les fichiers de configuration gérés par netcfg sont placés (en plus des fichiers habituels situés dans /etc/ppp) dans le dossier /etc/sysconfig/network-scripts. On y trouve par exemple les fichiers ifcfg-ppp0 pour la configuration de la liaison, chat-ppp0 pour les séquences de mise en œuvre de l'appel, ifup pour activer une connexion et ifdown pour l’arrêter. Exemples de configuration avec netcfg http://www.com.univ-mrs.fr/ssc/info/linux/doc-ppp.html http://www.linux-kheops.com/doc/config/ppp/netcfg/index.html http://funix.free.fr/informatique/linux/main-linux.php3?ref=netcfg&page=menu

LINUXCONF l'utilitaire général de configuration de linux permet aussi de configurer une connexion PPP mais pas d'activer une connexion L’utilisation est décrite dans le grand livre Linux (chapitre 10, pages 627 à 631).

USERNET C’est un utilitaire qui sert à activer et désactiver la connexion

KPPP Kppp esy un utilitaire KDE appelé numéroteur qui permet de facilement configurer l’accès à l'internet (il sait tuer la connexion et le processus pppd). Le manuel de Kppp se trouve à l’adresse : http://lexo.free.fr/docs/kde-1.1.doc-fr/kde-1.1/network/kppp/kppp.html Exemples graphiques d’utilisation de kppd : http://www.com.univ-mrs.fr/ssc/info/linux/doc-ppp.html http://www.chez.com/dur17/kppp.html http://www.chez.com/tsc/kppp/kppp.html http://www.linux-france.org/article/connex/PPP/wanadoo-kppp/index.html http://funix.free.fr/informatique/linux/main-linux.php3?ref=netcfg&page=menu http://www.olitec.com/mandrake.html et http://www.olitec.com/kppp.html

EZPPP EZPPP est comme kppp un programme X permettant de gérer la connexion sous LINUX Il est disponible à http://www.serv.net/~cameron/ezppp/index.html Exemples d’utilisation de EZPPP :

16/20

Page 17: Mise en oeuvre de PPP pour un client Internet sous Linuxaldevar.free.fr/data/15-AccesDistant/Client_PPP_sous_Linux.pdf · Ports série sous linux - /dev/ttyS0 à /dev/ttyS9 ports

http://www.linux-kheops.com/doc/config/ppp/santonac/linux.htm cas particulier d’accès à Infonie http://perso.infonie.fr/sledof/linux/infonie.html

GNOMEPPP équivalent de kppp pour gnome Autres produits, consulter le site http://www.linux-center.org/fr/networking/ppp/infex.html

17/20

Page 18: Mise en oeuvre de PPP pour un client Internet sous Linuxaldevar.free.fr/data/15-AccesDistant/Client_PPP_sous_Linux.pdf · Ports série sous linux - /dev/ttyS0 à /dev/ttyS9 ports

Diald Diald est un processus tournant en tâche de fond qui permet de fonctionner en mode dial on demand, c’est à dire qu’il met en place une liaison PPP à la demande (quand un paquet TCP/IP a pour destination une adresse externe au réseau local avec un provider si cette liaison n'existe pas déjà). Diald est présenté sur le site www.loonie.net/~eschenk/diald.html et décrit dans le livre inernet-intranet sous Linux (pages 114 et suivantes) Installation du package ppp Pour savoir si le package est installé, taper "rpm -qa | grep diald", vous devriez obtenir quelque chose comme ça :

orion# rpm -qa | grep diald diald-0.16.5a-1

Sinon, installez le package comme suit : orion# rpm -Uvh diald-0.16.5a-1.rpm diald-0.16.5a-1

Mise en place des fichiers Un répertoire /etc/diald/ a été créé. Il contient déjà un fichier : diald.ctl. Il s'agit d'un FIFO permettant de contrôler diald lorsqu'il est lancé. Le fichier contenant la configuration de diald est /etc/diald.conf. Les fichiers diald.conf et diald.filtres suffisent à configurer diald. Le fichier diald.conf se place dans /etc/, et diald.filtres dans /etc/diald/. Diald.conf accounting-log /etc/diald/diald-log mode ppp two-way fifo /etc/diald/diald.ctl device /dev/ttyS0 modem speed 38400 crtscts connect-timeout 60 dial-fail-limit 5 local 0.0.0.0 remote 0.0.0.0 dynamic defaultroute proxyarp connect "/usr/sbin/chat -v -f /etc/ppp/ppp-on-dialer" include /etc/diald/diald.filtres Après avoir lu les paramètres indiqués dans diald.conf, diald va tenter de mettre en place une liaison PPP. Pour cela, il utilise des fichiers de configuration situés dans /etc/ppp/. J'utilise en plus le fichier /etc/ppp/options (qui ne sert pas pour PPPD). crtscts debug defaultroute lock modem noipdefault

18/20

Page 19: Mise en oeuvre de PPP pour un client Internet sous Linuxaldevar.free.fr/data/15-AccesDistant/Client_PPP_sous_Linux.pdf · Ports série sous linux - /dev/ttyS0 à /dev/ttyS9 ports

Enfin, un dernier fichier est nécessaire. Celui qui contient les règles de filtrage propres à diald. Il s'agit de /etc/diald/diald.filtres. accept any 120 any Configuration du noyau Il est très important que votre noyau soit compilé avec les options PPP et SLIP. Diald se sert de SLIP, il faut donc l'implémenter. Lancement et arrêt Diald est un "daemon". Il s'agit d'un processus qui se lance en background. Dans la Redhat 5.2, la plupart de ces "daemon" sont lancés par des scripts situés dans /etc/rc.d/init.d/. Le script s'appelle diald, il doit être exécuté avec l'option start :

orion# /etc/rc.d/init.d/diald start Starting diald: diald

Une fois que le "daemon" est lancé, diald contrôle toutes les trames tcp/ip sortantes. Si la connection PPP est active, les trames y sont envoyées, sinon diald met en place une connection. La mise en place d'une liaison PPP prend du temps (de 15 à 20 secondes chez moi) et les premiers paquets envoyés sur la liaison seront perdus. Je n'ai trouvé aucun moyen de contourner ce problème (sinon de mettre une ligne RNIS !!) Un bon outil de contrôle de diald est dctrl (dans /usr/bin/). Si vous êtes sous X, lancez "dctrl &" depuis une console xterm, allez dans le menu options et faites tout afficher, puis testez votre configuration avec les outils du menu Control. En l'absence de traffic vers la liaison PPP, diald clôt celle-ci après un certain temps (2 minutes si vous avez utilisé mes fichiers de configuration). Pour stopper le "daemon", faites :

orion# /etc/rc.d/init.d/diald stop Shutting down diald: diald

19/20

Page 20: Mise en oeuvre de PPP pour un client Internet sous Linuxaldevar.free.fr/data/15-AccesDistant/Client_PPP_sous_Linux.pdf · Ports série sous linux - /dev/ttyS0 à /dev/ttyS9 ports

20/20

RNIS liens de configuration numeris http://www.asi.fr/materiel/teles.txt