19981010 Linux : la connexion PPP assurée par rappel (extrait légèrement édité d'un article Usenet) From: salgado@mars.lpthe.jussieu.fr (Julien SALGADO) Newsgroups: fr.comp.os.linux Subject: Re: BackCalling, c'est possible sous Linux ???????? Date: 1 Oct 1998 14:47:48 GMT Message-ID: [ ... ] Pour le callback, le principe que j'utilise est le suivant : - Mise en place sur ma machine (machineA) personnelle d'un serveur ppp. - Mise en place sur une des machines du labo, d'un modem qui servira d'une part à recevoir mes appels, puis à me rappeler (machineB) A] La mise en place d'un serveur ppp se décompose em plusieurs étapes... 1) Recompilation du noyau (ou du module) pour ppp, ports série... et l'installation de pppd... (ceci est auusi valable pour machineB) 2) mise en place d'un gestionnaire de terminal qui soit capable de surveiller l'activité du modem. Il existe plusieurs programme personellement j'utilise mgetty, il en plus capable de gérer les fax entrant et paraît-il des appels vocaux pour les modems évolués... La documentation de mgetty est (à mon avis très clair) et son installation de doit pas poser trop de problème. Il faut seulement bien faire attention que mgetty doit être compiler avec l'option AUTO_PPP (c.à.d. une option -DAUTO_PPP pour la compilation). Le fichier de configuration login.conf de mgetty contient une ligne /AutoPPP .... qui sera à décommenter par la suite. De plus il faut modifier /etc/inittab correctement (c'est dans la doc de mgetty). Maintenant machineA est un serveur, on peut théoriquement l'appeler par téléphone mais ce n'est pas encore du ppp! Ensuite, on peut tester l'installation... le plus simple est de prendre la machineB (qui a un modem) et d'essayer d'appeler machineA avec un utilitaire comme minicom... on doit obtenir un écran de login et pouvoir se loger! 3) Mise en place du serveur ppp, il faut installer pppd et vérifier qu'il fonctionne... en particulier, il faut régler les problèmes de droit d'accès et autre. Techniquement la mise en place du serveur est très simple: il suffit de décommenter la ligne /AutoPPP... de login.conf de mgetty de rajouter l'option default route à la fin et finalement de relancer mgetty (il suffit de le tuer comme il est controlé par init) Ensuite il faut faire un essai, ce qui se fait à partir de machineB, en utilisant ppp comme client depuis cette dernière. le nom d'utilisaeur correspond à un nom d'utilisateur sur machineA et son secret est le mot de passe. Un problème standard est que le fichier d'option de pppd /etc/ppp/option contiennent des options incompatible avec celle de login.conf... Pour régler ces problèmes on peut utiliser l'option call des versions de pppd 2.3.* Si tout ça marche, on peut passer à la suite... B] Mise en place sur la machineB d'un système de callback 1) Éventuellement recompiler le noyau de machineB qui doit pouvoir faire du proxyarp, c'est à dire router les packets destiner à machineA qui viennent du réseau. 2) Installer mgetty sur machineB... voir A2 3) mettre en place un script qui établi automatiquement la connection ppp entre machineA et machineB. le ppp doit être lancé avec l'option proxyarp, et établir pour l'addresse IP du client une addresse dans le réseau local (voir avec l'administrateur éventuellement). Donc le fichier $HOME/.ppprc doit être comme suit (pour une version 2.2.* de pppd): # .ppprc kdebug 0 +ua /MY_HOME/.ppp-secret -detach # le device où est le modem ttyS3 # L'IP qui sera donné à machineA :xxx.xxx.xxx.xxx modem lock crtscts proxyarp connect /MY_HOME/.ppp.chatscript Le script de connexion est : #!/bin/sh exec /usr/sbin/chat -v \ "" atz \ OK atm0 \ TIMEOUT 40 \ OK atdtNUMÉRO_machineA \ CONNECT "" Le fichier de secret : MON_LOGIN MON_MOT_DE_PASSE Soit ppp-on ce script qui doit pouvoir être lancer par vous sur machineB Créer aussi un script ppp-off qui tue pppd, c'est pratique... 4) Depuis machineA faire un essai... appeler par minicom machineB, se loguer... et taper la commande magique... $ ( (sleep 60; ppp-on)& );exit et sortir en moins de 60 secondes de minicom... Après 60 seconde machineB va appeler machineA (le téléphone doit sonner...), puis machine décroche et établit la connection ppp. à partir de là il doit être possible de voir depuis machineA tout le réseau. 5) Automatiser le processus 4... il faut utiliser chat, voici unessai de script... #!/bin/sh # tentative de script pour le call back... exec /usr/sbin/chat -v -v \ "" atz \ OK atm0 \ TIMEOUT 40 \ OK atdt00146724441 \ CONNECT "" \ ogin: MON_LOGIN \ word: MON_PASSWD \ "" \r \ $ "( (sleep 60; ppp-on)& );exit" \ "" \r =20 Ce script n'est pas très au point, mais il marche pour moi... Voilà les étapes, ce n'est pas trop complexe mais peut devenir subtil en particulier avec l'authentification que l'on peut facilement supprimer en mettant -pap dans le fichier login.conf (Ça aide énormément à trouver les erreurs). Pendant les tests il est pratique de rajouter les options de débuggage... [ ... ]