# Configurer &kppp; pour le rappel automatique

Ce chapitre est basé sur le travail fourni par Martin Häfner, mh@ap-dec717c.physik.uni-karlsruhe.de

## Les serveurs de rappel automatique sous &UNIX; ou &Linux;

Cette section est une présentation du rappel automatique sous &UNIX; (&Linux;). Elle explique aussi comment &kppp; peut être configuré si l'on veut se connecter à un serveur &UNIX; de rappel automatique. Spécialement pour un serveur de rappel sous &Linux; se basant sur des scripts.

### Une introduction au rappel automatique

Il y a plusieurs raisons d'utiliser le rappel automatique. Quelques unes d'entre elles sont :

- Pour augmenter la sécurité de votre réseau local

- Pour réduire les dépenses des collaborateurs travaillant depuis l'extérieur

- Pour contrôler les dépenses téléphoniques lorsqu'elles sont déclarées comme étant professionnelles

Dites-vous que si une personne appelle le numéro de votre serveur de connexion, et qu'il parvient à pirater le mot de passe. Pourquoi vous embêtez-vous à configurer un Pare-feu pour sécuriser votre connexion à internet si son accès est aussi simple ?

Les programmes de rappel automatique vous demandent généralement votre nom, puis ils raccrochent la ligne. Enfin ils vous rappellent, habituellement, à un numéro qui est stocké sur le serveur dans une base de données. Le client décroche ensuite la ligne et continue comme si rien ne s'était passé. Le serveur vous demande alors votre nom d'utilisateur et votre mot de passe. tout en sachant qu'il vous a déjà identifié lors du premier appel. La connexion est établie normalement et le programme pppd est lancé.

Maintenant la question est, comment dire au client de décrocher le téléphone lorsque le serveur vous rappelle. Avez-vous besoin d'un programme particulier, comme mgetty ? La réponse est non, vous n'avez pas besoin d'une application particulière. En général, n'importe quel client peut être utilisé pour le rappel automatique, vous pourriez même utiliser un terminal ordinaire comme minicom pour la connexion.

La seul chose que vous ayez à faire est de dire à votre modem de `Répondre Automatiquement` au téléphone lorsque une `SONNERIE` est détectée par le modem. Cela est réalisé grâce à la commande modem suivante :

    AT&SO=1

Cela ordonne au modem de prendre la ligne après une `SONNERIE`.

De même que de nombreux autres programmes clients, &kppp; contrôle que la connexion soit fermée par le serveur, et ensuite arrête la session en cours si un signal `NO CARRIER` est détecté. Le réel problème lorsqu'on configure le rappel survient maintenant. Le signal `NO CARRIER` sera bien entendu détecté lorsque le serveur coupera la ligne. Parfois, certain serveur utilisent un programme de connexion particulier. Donc comment régler le problème ? Dites à votre modem d'afficher `CARRIER UP` à chaque fois (ce qui ne pose pas de problème si vous dites au client de raccrocher la ligne). Vous pouvez utiliser la commande suivante pour réaliser cela :

    AT&C0

Si vous voulez tester cela, vous pouvez commencer par utiliser un terminal ordinaire comme minicom, et appeler votre serveur de rappel afin de voir ce qui se passe.

### Configuration de &kppp;

Maintenant que vous avez vu la théorie, comment configurer &kppp; pour contrôler la connexion ?

La procédure est assez simple.

1. Premièrement, dites au modem d'accepter les connexions, et de ne pas arrêter les négocations lorsque le serveur de rappel déccroche pour la première fois. Vous pouvez ajouter ces options dans l'onglet Modem du menu de configuration de &kppp; en ajoutant les paramètres `AT&C0S0=1DT` au champ Chaîne de numérotation.

   Il n'y a pas d'autre modification des réglages de &kppp; à faire. Si vous rencontrez des problèmes avec l'initialisation et la réinitialisation du modem, consultez la section Problèmes.

2. Pensez à votre serveur quelques instant. Souvenez-vous que les systèmes d'exploitation &UNIX;, &Windows; et Macintosh ont différentes façons pour signaler la fin d'une ligne dans un fichier texte, et de la même façon dans la procédure d'authentification. Si vous êtes connecté à un serveur &Windows; utilisez `CR/LF`, si vous êtes connecté à un serveur &UNIX;, utilisez `CR` et enfin si vous êtes connecté à un serveur Macintosh, utilisez `LF`.

3. Pour ces instructions, nous partons du principe que vous appellez un paquetage de rappel sous &Linux; qui utilise une procédure d'authentification ordinaire. (pas dePAP ou équivalent).

   Mettez le mode Authentification dans l'onglet Numérotation dans le configurateur de compte à Basé sur un script

4. Maintenant vous devez concevoir le script d'authentification. L'édition des scripts est l'une des options très agréables de &kppp;. Vous pouvez la trouver sur l'onglet Script de connexion de la boîte de dialogue Modifier le compte.

   Dans cet exemple, l'utilisateur userxyz a besoin du script suivant pour être appelé. Le serveur de rappel connaît déjà le numéro de téléphone utilisé pour l'appel, donc vous choisirez un nom d'emprunt pour des raisons de sécurité.

   Pour chaque ligne, choisissez les critères dans le menu déroulant en haut à gauche de la boîte de dialogue, ensuite saisissez l'action dans la boîte texte à sa droite. Choisissez le bouton Ajouter pour chaque ligne du script. Vous pouvez utilisez Insérer pour introduire une ligne au milieu du script, et Supprimer pour retirer une ligne si vous faites une erreur.

   Le script dans son ensemble doit ressembler à cela (sans les commentaires, qui commencent ici par un #)

       Expect       ogin:           # souvenez-vous que l'on fait une authentification ordinaire dans un terminal
       ID           ""              # kppp envoie le nom d'utilisateur que vous lui avez donné dans
       la boîte principale
       Expect       for userxyz:    # une liste des numéros disponibles est
       affichée ici, l'utilisateur peut en choisir une
       Send         userxyz-home    # l'utilisateur désire être appelé en retour
       sur son numéro personnel
       Expect       ogin:           # La procédure de rappel commence ici
       lançant une nouvelle procédure de connexion, et donc un nouveau nom d'utilisateur.
       ID
       Expect       assword:        # Maintenant envoi de votre nom d'utilisateur
       Expect       >            # Attente du prompt (il
       risque de varier)
       Send         start_ppp       # cette commande lance pppd

   Après l'attente de la réponse pour l'authentification, l'utilisateur envoie son identifiant et attend la liste des numéros de téléphone disponible pour son nom d'utilisateur. Ensuite il indique au serveur sur quel numéro listé il désire être appelé en retour. &kppp; peut ouvrir une boîte de dialogue pour ça, si votre localisation change souvent, par exemple si vous êtes un représentant et que vous vous déplacez d'hôtel en hôtel. Maintenant le serveur attend le nom d'utilisateur et le mot de passe pour l'authentification, mais dans le même temps le serveur raccroche et appelle l'utilisateur en retour. Les informations pour l'authentification sont envoyées, et &kppp; attend une demande de commande, ensuite il lance un petit script (ici appelé `start_ppp`) qui lance pppd sur le serveur.

   Le script `start_ppp` doit correspondre à quelque chose proche de cela :

       #!/bin/sh
       stty -echo
       exec /usr/sbin/pppd -detach silent modem

   Bien sûr, configurer un serveur PPP ne fait pas partie de l'objectif de ce document. Pour plus de détails, consultez la page de man de pppd. Une excellente description d'un serveur callback peut être trouvée à http://ap-dec717c.physik.uni-karlsruhe.de/~mh/callback.

Toutes les autres configurations, comme le réglage de pppd ou de IP sont les mêmes que d'habitude, aucun programme supplémentaire n'est utile.

Le rappel de &kppp; et d'autres programmes comme mgetty ou autre faxgetty peuvent être lancés sur le même port série. Il n'y a pas de problème avec les appels entrants, puisque &kppp; réalise un fichier de verrouillage qui prévient le programme getty qu'une autre application (dans ce cas &kppp; bien sûr,) utilise la ligne à ce moment.

### Problèmes pouvant survenir

Il existe quelques problèmes connus avec &kppp; en mode rappel :

- Du fait que vous initialisez le modem dans le mode réponse automatique, vous devrez redémarrer le modem après que la ligne ait été coupé. Sinon, votre modem prendra la ligne pour vous, ce qui n'est pas une bonne idée si la ligne en question est celle de votre téléphone.

- &kppp; a des petits problèmes lorsqu'il partage une ligne avec une autre application comme mgetty. Si mgetty est lancé sur la même ligne que le modem, &kppp; n'est pas capable d'initialiser le modem correctement.

- &kppp; n'est pas capable de demander le nom utilisateur durant la procédure de connexion. Malheureusement, lorsqu'il utilise le script décrit précédemment, &kppp; redemande le nom d'utilisateur une seconde fois durant le rappel. Vous pouvez régler ce problème en inscrivant votre nom d'utilisateur directement dans le script (pas vraiment portable ou propre, mais ça marche).

### Informations sur Internet pour le serveur

Des serveur de rappel pour &Linux; sont disponibles dans beaucoup d'endroits.

L'application bien connue mgetty est un programme extrêmement puissant, il permet aussi de répondre au rappel de connexion. Une description de la manière de configurer mgetty dans ce but est maintenu par Colin McKinnon, colin@wew.co.uk.et disponible sur http://www.dyer.demon.co.uk/slug/tipscrip.htm.

Il y a aussi un paquetage prêt à l'usage pour &Linux; à l'adresse http://www.icce.rug.nl/docs/programs/callback/callback.html. Ce paquetage est maintenu par Frank B. Brokken, frank@icce.rug.nl. Comme la configuration, bien que naturelle, n'est pas très facile, j'ai écrit une courte introduction à ce sujet à l'adresse http://ap-dec717c.physik.uni-karlsruhe.de/~mh/callback/, qui contient également une introduction plus générale au rappel automatique.

## Rappel sous &Windows; NT RAS

&Windows; NT utilise une approche complètement différente de celle décrite précédemment. NT demande une extension particulière au protocole PPP lui-même, appelé CBCP (Call Back Control Protocol). L'application pppd supporte ce protocole mais il doit doit être recompilé pour cela. Si vous avez des connaissances sur les serveurs de rappel sur NT, faites vous connaître.