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/).
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.
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.
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 :
runscript
n'attend pas que les programmes externes finissent
print "ding" ! sleep 10 print "dong"Ce script se termine immédiatement (mais pas sous
strace
...)
pppd
retire le port série à minicom
(quand il n'est pas alimenté par stdin
).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.
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...
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 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.
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
.
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=0x1qui 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] rcvd [LCP ConfRej id=0x1 ]
mru
dans /etc/ppp/options
(voir plus loin).
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.
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 Trumperprint "" 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
.
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 1pour envoyer
minicom
sur une autre console (voir le mini-howTo
Consoles-Many pour plus de détails).
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 :