Mise en place d'un serveur de rappel PPP sous Linux

Gazette Linux n°077 — Avril 2002

Sunil Thomas Thonikuzhiyil

Sébastien Marbrier

Adaptation française 

Prénom Nom du relecteur

Relecture de la version française 

Article paru dans le n°077 de la Gazette Linux d'avril 2002.

Cet article est publié selon les termes de la Open Publication License. La Linux Gazette n'est ni produite, ni sponsorisée, ni avalisée par notre hébergeur principal, SSC, Inc.


Table des matières

Introduction
Les besoins
L'idée
Configurer le Serveur de numérotation
Configurer le rappel
Configurer les clients
Informations complémentaires

Introduction

Lors de la configuration d'un serveur de numérotation, les utilisateurs se connectent par le biais d'une ligne téléphonique et d'un modem pour établir une connexion PPP avec un serveur distant. Il est possible de faire en sorte qu'un ordinateur sous Linux rappelle l'utilisateur. Ce document décrit pas-à-pas la procédure pour configurer un serveur de rappel sous Linux.

Les besoins

Mon serveur fonctionne avec une Debian Potato™ avec le noyau 2.4.17. Un modem servant à la réception et au rappel est attaché à ttyS0. Ma machine cliente fonctionne à la fois avec Debian Potato™ et Windows 98™. Un modem externe est attaché à ttyS1. On suppose que les logiciels indispensables pour appeler un FAI sont installés sur le serveur et sur le client. De plus, le couple mgetty+sendfax doit être installé sur le serveur.

L'idée

Le principe d'un serveur de rappel peut être schématisé ainsi:

  • Tout d'abord, le client compose le numéro de téléphone du modem de mon serveur de rappel. Le modem sur le serveur est configuré pour accepter les connexions entrantes.

  • Une fois la connexion établie, le serveur me présente un message de bienvenue et une demande de connexion. Je me connecte en tant qu'utilisateur spécial de rappel. Le modem du serveur ferme la connexion et rappelle un numéro spécifique lié à ma machine cliente

  • Le modem sur ma machine cliente reste prêt à accepter les connexions de rappel et une fois la connexion établie, je reçois une nouvelle demande d'identification.

  • Je me connecte à présent en tant qu'utilisateur PPP ordinaire et la connexion est terminée.

Configurer le Serveur de numérotation

La première étape pour réaliser la configuration décrite plus haut consiste à configurer le serveur pour accepter les connexions PPP entrantes. Voici ce que j'ai fait sur le serveur:

  1. Créer un nouvel utilisateur pppuser.

    Changer l'entrée pour pppuser dans /etc/passwd en

    $pppuser:x:1001:1001:,,,:/home/pppuser:/usr/sbin/pppd
  2. Ajouter une ligne dans /etc/inittab pour que le port série accepte les connexions entrantes

    T0:23:respawn:/sbin/mgetty ttyS0 -D /dev/ttyS0

    Redémarrer init en tapant 'init q'. Ceci active les connexions entrantes sur la ligne ttyS0

  3. Aller dans le répertoire /etc/mgetty (c'est là où sont stockés les fichiers de configuration de mgetty. Pour les distributions Redhat™, c'est dans /etc/mgetty+sendfax). Éditer login.config pour y ajouter la ligne suivante:/AutoPPP/ - a_ppp /usr/sbin/pppd file /etc/ppp/options et mettre en commentaires toutes les autres lignes.

  4. Changer /etc/ppp/options pour obtenir

    	 -detach
    	 asyncmap 0
    	 modem
    	 crtscts
    	 proxyarp
    	 lock
    	 require-pap
    	 refuse-chap
    	 ms-dns 192.168.50.100 #Mettez ici l'adresse ip de votre serveur dns
    	 usepeerdns

    .

  5. Créer un fichier options.ttyS0 dans /etc/ppp avec le contenu suivant :

    192.168.0.100:192.168.0.2
    	 noauth 

    Les deux adresses IP ci-dessus sont l'adresse du serveur et l'adresse que le client doit recevoir du serveur. Modifiez-les en fonctions de votre plan de numérotation IP. Si votre modem est relié à ttyS1, nommez le fichier options.ttyS1

  6. Changer les permissions de pppd (dans certaines distribution pppd est déjà suid.

    chmod u+s /usr/sbin/pppd 
  7. Ajouter un alias pour ppp. Ajouter les lignes suivantes à /etc/profile

    allias ppp=`/usr/sbin/pppd detach'`

Nous allons à présent tenter d'appeler le serveur depuis un client. Si vous utilisez MS Windows™, cliquez sur Connexion Réseau et ensuite Nouvelle connexion et remplissez les différents champs.

Configurer le rappel

Une fois que le serveur d'appel est prêt, il est facile de configurer le rappel. J'ai procédé ainsi.

  1. Créer un nouvel utilisateur nommé back.

  2. Créer un fichier vide nommé callback.conf dans /etc/mgetty. (On peut initialiser les chaînes pour le modem dans ce fichier si besoin; mais en général, un fichier vide suffit.

  3. Ajouter la ligne suivante à /etc/mgetty/login.config

    back -- /usr/sbin/callback -S 2561

Le numéro après le -S est le numéro à rappeler. Remplacez-le par le numéro de téléphone de votre client.

Configurer les clients

1) Windows 98

Ouvrez les connexions distantes et démarrez une nouvelle connexion. Replissez les différents champs. Faites clic-droit sur l'icône nouvellement créée et sélectionnez propriétés. Sélectionnez modemConfigureconnexionsOptions avancées. Ajoutez &c0s0=1 aux paramètres supplémentaires Sélectionnez options et cochez la case pour afficher la fenêtre de terminal après la numérotation. Vous pouvez laisser vide les champs pour le nom d'utilisateur et pour le mot de passe.

Démarrez le serveur de numérotation. Un écran de terminal apparaîtra une fois la numérotation terminée, et vous aurez un écran de connexion au serveur. Connectez-vous en tant que 'back' (l'utilisateur spécial pour le rappel).

Le modem côté serveur coupe la connexion, attendez quelques et vous serez rappelés. Lorsque la connexion sera rétablie, vous aurez de nouveau une invite de connexion. Entrez pppuser en nom d'utilisateur et le mot de passe. Appuyez sur continuer dans l'écran de terminal. Vous devez être à présent enregistré. Vérifiez une nouvelle fois votre connexion avec ping.

Il est possible d'écrire un script pour cela mais je n'ai pas encore essayé. Pour les autres versions de Windows™, la procédure est similaire. Le point important est la configuration de la chaîne d'initialisation du modem (&c0s0=1)

2) Linux

La configuration du client Linux est un plus ardue. Voici ce que j'ai fait sur ma machine Debian avec un noyau 2.4.17

  1. Créer le fichier /etc/options avec le contenu suivant :

    lock
    defaultroute
    noipdefault
    modem
    115200
    crtscts
    debug
    passive
    asyncmap 0
  2. Créer un fichier nommé pppcalback dans /etc/ppp/peers/ avec le contenu suivant :

    ttyS1 19200 crtscts
    connect '/usr/sbin/chat -v -f /etc/ppp/chat-callback'
    noauth
  3. Créer une fichier fichier nommé /etc/ppp/chat-callback avec le contenu suivant

    ABORT BUSY
    ABORT VOICE
    ABORT "NO DIALTONE"
    ABORT "NO ANSWER"
    "" ATZ
    OK ATDT2562             # Numéro de téléphone du serveur
    CONNECT \d\d
    login: \q\dback
    TIMEOUT 90
    RING AT&C0S0=1
    login: \q\dpppuser
    password: \q\dpasswordforppuser

    Modifiez correctement les lignes ci-dessus pour correspondre aux identifiants et mots de passe pour les comptes que vous avez créés. (Référez-vous également à la documentation de votre modem pour les nécessaires chaînes d'initialisation. Vous devrez peut-être remplacer ATZ par quelque chose comme AT&FX2)

  4. Créer un script nommé /usr/bin/pppcall avec le contenu suivant

    #!/bin/bash
          /usr/sbin/pppd -detach call pppcall &

    Rendez ce script exécutable. Vous pouvez appeler le serveur en appelant le script pppcall

Informations complémentaires

Les documents suivants m'ont étés utiles:

Si vous rencontrez un problème quelconque pour configurer les serveurs de rappel, n'hésitez pas à m'envoyer un courriel. Les commentaires et les suggestions pour améliorer ce documents sont les bienvenues.

Sunil Thomas Thonikuzhiyil

Je travaille en tant que consultant en technologies de l'information à l'Assemblée Législative Trivandrum du Kerala en Inde. Je suis fan de Linux depuis 1996. J'ai un Master en Informatique de l'Université Cochin. Je m'intéresse à tous les systèmes d'exploitation. J'aime écouter de la musique classique indienne dans mon temps libre.

Adaptation française de la Gazette Linux

L'adaptation française de ce document a été réalisée dans le cadre du Projet de traduction de la Gazette Linux.

Vous pourrez lire d'autres articles traduits et en apprendre plus sur ce projet en visitant notre site : http://www.traduc.org/Gazette_Linux.

Si vous souhaitez apporter votre contribution, n'hésitez pas à nous rejoindre, nous serons heureux de vous accueillir.