mini-HOWTO PPP-par-minicom

Winfried Trümper ( winni@xpilot.org)
Traduction : Philippe Martin ( feloy@wanadoo.fr)

v0.0 09 December 1996
Vous désirez un outil commandé par menu pour traiter avec PPP ? Un annuaire téléphonique puissant et facile d'utilisation avec les numéros de téléphone de votre ISP ? Vous voulez voir ce qui se passe lors d'une connexion ? Alors ce mini-HowTo est pour vous !

1. Introduction

PPP est devenu le protocole réseau standard pour se relier à l'internet via le réseau téléphonique. Le démon pppd associé est un outil de connexion très primitif qui manie seulement des configurations très simples.
Je vais décrire ici une alternative basée sur minicom.

Cette documentation est une version simplifiée du document allemand Internetanbindung mit PPP ( http://www.uni-koeln.de/themen/linux/ppp/).

1.1 Le terminal minicom

minicom est un outil très sophistiqué pour se connecter à d'autres ordinateurs (ISP ou BBS). Il possède un menu en couleur d'une grande qualité, un annuaire téléphonique et un puissant langage de script. Il convient donc absolument pour une utilisation conjointe avec pppd.

Mais attention, si vous exécutez /sbin/mgetty /dev/modem, toute personne ayant un compte valide sur votre machine peut utiliser la connexion (par exemple avec minicom). Mais ceci est une autre histoire. Veuillez consulter la documentation sur mgetty pour plus d'informations.

1.2 Commentaires

Je suis uniquement interessé par des remarques qui pourraient faire évoluer ce mini-HowTo. Je ne répondrai pas aux questions générales sur Linux, PPP, SLIP ou les réseaux.

1.3 Bogues connues

A l'heure où j'écris ce document, il semble y avoir quelques bogues dans minicom, runscript et dans la méthode décrite ci-dessous :

Il semblerait que Miquel van Smoorenburg (l'auteur de minicom) soit trop occupé pour y mettre le doigt dessus. Les volontaires seront alors les bienvenus.

2. Se connecter avec minicom

Un grand nombre de documentations sur PPP recommandent de quitter minicom après l'avoir utilisé pour se connecter. Mais vous n'avez vraiment pas besoin de quitter cet agréable programme...

2.1 Configurer minicom

Exécutez minicom -s et choisissez l'article de menu Serial port setup (Configuration du port série). La première entrée devrait être Serial device (Périphérique série) et c'est le paramètre le plus important : le périphérique série auquel votre modem est rattaché. (Des volontaires pour retoucher minicom afin qu'il puisse gérer plusieurs périphériques série à la fois ?)

Pressez pour confirmer puis pour revenir au menu de configuration initial. Choisissez Exit to minicom (Sortie vers minicom) et tapez atdt99999. Votre modem devrait commencer à composer le numéro immédiatement et vous devriez entendre un click lorsque le modem se relie à la ligne. Heureusement, 99999 n'est pas un numéro de téléphone valide.

2.2 Démarrer PPP à la main

Peut-être avez-vous déjà essayé de composer le numéro de téléphone de votre ISP au lieu de 99999. Vous avez alors sûrement vu de drôles de caractères apparaître à l'écran après être entré dans le système (sinon, tapez ppp). Ils proviennent du démon pppd (ou équivalent) démarré à l'autre bout de la ligne. Dans ce cas, vous pouvez essayer de démarrer le démon pppd de votre côté, et évaluer le fichier log par la suite.

Pour démarrer pppd depuis minicom, vous pouvez définir une nouvelle méthode de chargement (voyez comment par vous-même) ou redéfinir le paramètre kermit program depuis le menu de configuration Filename and paths(Fichiers et répertoires) :

        A - Download directory : 
        B -   Upload directory :
        C -   Script directory :
        D -     Script program : /usr/bin/runscript
        E -     Kermit program : /usr/sbin/pppd file /etc/ppp/mini_options

Maintenant, si vous voyez apparaître ces drôles de caractères la prochaine fois que vous appelez votre ISP, vous pouvez presser les touches + pour démarrer pppd.

La suite de ce mini-HowTo traite de l'automatisation du processus de connexion et de démarrage de pppd.

2.3 Evaluer le fichier log

Bien que mon but ne soit pas d'expliquer comment configurer PPP, je donne un petit conseil pour lire le fichier log. Pour extraire les informations essentielles du fichier log /var/log/debug (ou /var/log/daemon.log), exécutez la commande

        tail -n 40  /var/log/debug |\
                grep -E " pppd\[[0-9]*\]:" |\
                sed -e "s/^.*pppd\[/[/" 
Vous devriez voir des messages comme
        sent [LCP ConfReq id=0x1 ]
        rcvd [LCP ConfRej id=0x1 ]
qui indiquent que nous avons envoyé (sent) une requête de configuration (Config-request) pour mettre le bloc maximal de réception (maximum receive unit - mru) à 296. Le second message refuse cette configuration (configuration rejected). Dans ce cas, j'ai juste retiré l'option mru dans /etc/ppp/options (voir plus loin).

2.4 Configurer un numéro de téléphone

Si tout a bien marché jusqu'ici, vous voudrez sûrement enregistrer un numéro de téléphone dans l'annuaire de minicom. Pressez + pour faire apparaître le menu de composition d'un numéro (dialing menu) et utilisez les touches du curseur pour sélectionner Edit :

        A -  Name                : Xeno
        B -  Number              : 022039697303
        C -  Dial string #       : 1
        D -  Local echo          : No
        E -  Script              : /etc/ppp/login.script
        F -  Username            : ppp-382
        G -  Password            : top-secret
        H -  Terminal Emulation  : VT102
        I -  Backspace key sends : Delete
        J -  Linewrap            : Off
        K -  Line Settings       : Curr 8N1

Ceci est un exemple d'entrées pour me connecter à l'un de mes ISP. Le script /etc/ppp/login.script apparaît plus loin. Deux variables particulières sont passées au script : $(LOGIN) et $(PASS) qui prennent les valeurs entrées comme nom d'utilisateur (F - Username) et mot de passe (G - Password). Cette caractéristique rend minicom assez souple car il utilise un unique script pour automatiser la connexion à différents ISP.

2.5 Un script de connexion

minicom lance le script de connexion après avoir reçu la chaîne de caractères CONNECT. Pour être plus précis, minicom ne le lance pas lui-même, mais appelle pour ça l'utilitaire runscript comme sous-procesus.

En voici un exemple (que j'utilise pour mon ISP) :

        # v1.0, 20.08.96 Winfried Trumper 
        print ""
        print "Connexion automatique via /etc/ppp/login.script"

        ## Retirez le commentaire si vous devez presser Entree
        ## pour obtenir le prompt
        #send ""

        expect {
                "ogin:"
                "ogin>"
                "sername:"
                "sername>"
                "NO CARRIER" exit 1
        }
        send "$(LOGIN)"
        expect {
                "assword:"
                "assword>"
                timeout 20
        }
        send "$(PASS)"
        expect {
                "port"  send "ppp"
                "Start your PPP now"
                "}!}!}"
                timeout 10
        }
        print ""
        print "Passage en mode PPP ..."
        print ""

        ! /usr/sbin/pppd  file /etc/ppp/mini_options


        print ""
        print "la commande   killall -TERM pppd   termine pppd"

L'aptitude de runscript à appeler des programmes externes est utilisée pour démarrer pppd. Copiez votre fichier d'options original pour ppp vers /etc/ppp/options.ttyS1 (remplacez ttyS1 par le nom du périphérique auquel votre modem est rattaché) et supprimez toutes les lignes dans /etc/ppp/options spécifiques à votre modem (comme connect, crtscts ou modem).

Mettez les options spécifiques à la connexion PPP via minicom dans /etc/ppp/mini_options. Une de ces options devrait être

        disconnect "chat '' '\d\d+++\d\dATH\r\c'"
Ceci est indispensable car pppd est alimenté par stdin et ne peut pas racccrocher le modem via crtscts.

2.6 Numérotation automatique au démarrage

Utilisez l'option -d pour numéroter un numéro de téléphone particulier au démarrage de minicom.
Vous pouvez aussi essayer

        open -sl -- minicom -d 1
pour envoyer minicom sur une autre console (voir le mini-howTo Consoles-Many pour plus de détails).

2.7 Extensions futures

pppd étant un démon, il n'est pas conçu pour une interaction avec l'utilisateur ou pour l'observation. C'est clair. Après tout, nous utilisons un système unix...

La solution canonique est un programme d'arrière-plan. Des volontaires pour tailler minicom en pièces ?

Des extensions intéressantes seraient :