Pierre Ficheux (pierre@alienor.fr)
Septembre 1998
La distribution LINUX utilisée dans cet exemple de configuration est une RedHat 5.0 version française.
# Run gettys in standard runlevels 1:12345:respawn:/sbin/mingetty tty1 2:2345:respawn:/sbin/mingetty tty2 3:2345:respawn:/sbin/mingetty tty3 4:2345:respawn:/sbin/mingetty tty4 5:2345:respawn:/sbin/mingetty tty5 6:2345:respawn:/sbin/mingetty tty6Dans l'exemple ci-dessus, le PC utilise 6 consoles virtuelles. Ce fichier devra être modifié ultérieurement afin de permettre l'utilisation d'une entrée modem.
Le support du protocole PPP est intégré au noyau LINUX à supposer que celui-ci ait été validé lors de la configuration du noyau. Cette option peut-être validée en cochant PPP (point-to-point) support lors de la config du noyau par exemple par un 'make menuconfig':
[*] Network device support <M> Dummy net driver support < > EQL (serial line load balancing) support < > Frame relay DLCI support (EXPERIMENTAL) < > PLIP (parallel port) support <M> PPP (point-to-point) support
Dans le cas présent, le support PPP est présent sous forme de module chargeable.
rpm -qa | grep mgetty
qui doit répondre quelque chose comme:
mgetty-1.1.9-3
Si il répond par une ligne vide, vous devez installer le package par
rpm -ivh /mnt/cdrom/RedHat/RPMS/mgetty-1.1.9-3.i386.rpmen supposant que votre CD RedHat est monté sur /mnt/cdrom.
Les fichiers de configuration de mgetty sont localisés sur le répertoire /etc/mgetty+sendfax:
/etc/mgetty+sendfax: total 13 drwxr-xr-x 2 root root 1024 sep 18 16:21 . drwxr-xr-x 24 root root 3072 sep 18 16:27 .. -rw------- 1 root root 1172 oct 29 1997 dialin.config -rw------- 1 root root 2580 jui 17 11:45 login.config -rw------- 1 root root 1782 sep 18 16:21 mgetty.configLe fichier dialin.config (qui définit les numéros ayant le droit d'appeler votre système) n'a normalement pas besoin de modification.
Le fichier login.config nécessite de valider la ligne commençant par /AutoPPP/. Ceci a pour effet de valider la réponse à des connexions entrantes de type PPP :
# # Automatic PPP startup on receipt of LCP configure request (AutoPPP). # mgetty has to be compiled with "-DAUTO_PPP" for this to work. # Warning: Case is significant, AUTOPPP or autoppp won't work! # Consult the "pppd" man page to find pppd options that work for you. # # NOTE: for *some* users, the "-detach" option has been necessary, for # others, not at all. If your pppd doesn't die after hangup, try it. # /AutoPPP/ - a_ppp /usr/sbin/pppd auth -chap +pap login modem debug crtscts
L'option +pap valide la reconnaissance d'une connexion utilisant le protocole PAP.
Le fichier mgetty.config est le plus important pour la réalisation d'un
premier test de connexion modem car il permet de règler entre-autres l'initialisation
des modems connectés aux diverses lignes séries.
La première partie du fichier définit les paramètres communs à toutes les lignes
séries comme par exemple:
# access the modem(s) with 38400 bps speed 38400
La deuxième partie définit le paramètrage de chaque port, exemple:
port ttyS1 speed 57600 init-chat "" \dAT&F&C1E0\d\r OK ATQ0&K3&D2S0=0 OK modem-type data
Dans le cas de la ligne /dev/ttyS1 (équivalent à COM2), la vitesse de la jonction PC/modem sera de 57600 bits/s, la séquence d'initialisation du modem sera:
\dAT&F&C1E0\d\r OK ATQ0&K3&D2S0=0 OK
le modem étant de type data.
Cette séquence d'initialisation sera envoyée lors de chaque démarrage du programme mgetty sur cette ligne (au démarrage de la machine ou bien lorsque mgetty reprend le controle de la ligne après utilisation de celle-ci par un autre programme). Cette séquence est bien entendu à adapter suivant le type du modem.
Quelques remarques:
m1:2345:respawn:/sbin/mgetty -D /dev/ttyS1
et de taper:
init qafin de forcer le système à lire de nouveau le fichier /etc/inittab. On peut alors suivre l'initialisation des modems en consultant le fichier /var/log/log_mg.ttyS1:
09/18 16:27:18 yS1 mgetty: experimental test release 1.1.9-Aug17 09/18 16:27:18 yS1 check for lockfiles 09/18 16:27:18 yS1 locking the line 09/18 16:27:19 yS1 lowering DTR to reset Modem 09/18 16:27:20 yS1 send: \dAT&F&C1E0\d[0d][0d] 09/18 16:27:21 yS1 waiting for ``OK'' ** found ** 09/18 16:27:21 yS1 send: ATQ0N2&K3&D2S0=0[0d] 09/18 16:27:21 yS1 waiting for ``OK'' ** found ** 09/18 16:27:21 yS1 waiting...
Le modem est alors en attente d'un appel entrant. L'appel du serveur par un simple émulateur de terminal (plus un modem bien sûr) doit permettre d'obtenir le login sur le serveur).
L'accès PPP peut être validé simplement en créant un ou plusieurs comptes
spécifiques ainsi qu'une adresse IP affectée au client PPP pour le temps de
sa connexion.
Il suffit pour cela d'ajouter la ligne suivante au fichier
/etc/passwd:
pppuser::501:500:Accès PPP:/tmp:/usr/sbin/pppd
Il suffit ensuite de définir le mot de passe de cet utilisateur en utilisant la commande.
passwd pppuser
et ce en étant super-utilisateur (root).
Pour l'adresse IP, il faut ajouter une ligne du type:
192.168.3.2 ipguest
au fichier /etc/hosts. Il faut également spécifier cette adresse dans le fichier /etc/ppp/options (fichier de paramètrage du démon pppd):
lock :192.168.3.2
La config ci-dessus indique :
Si vous désirez que le PC serve de passerelle vers le réseau local (c'est à dire que le client connecté ait accès à d'autres machines du réseau), il faut ajouter à ce fichier l'option proxyarp. Si vous utilisez plusieurs lignes séries, les options de chacune des connexions seront à spécifier dans /etc/ppp/options.ttySi (i étant le numéro de la ligne).
Il faut maintenant tester la connexion au serveur en appelant celui-ci à l'aide d'une autre machine équipée elle aussi d'un modem et d'un logiciel compatible PPP. Nous donnerons ci-dessous les procédures à utiliser pour tester depuis LINUX et Windows95.
Sous LINUX il existe diverses méthodes pour définir une connexion PPP cliente comme par exemple l'utilisation d'un utilitaire graphique comme Vppp (Visual PPP) ou EZppp (Easy PPP). Une autre méthode est de définir un bon vieux script comme ci-dessous:
#!/bin/sh /usr/sbin/pppd connect /etc/ppp/connect_test /dev/modem 57600 -detach +ua \ /etc/ppp/test.pap lock debug crtscts modem defaultroute
puis de définir les deux fichiers auxiliaires /etc/ppp/connect_test:
#!/bin/sh /usr/sbin/chat -v ABORT BUSY ABORT "NO CARRIER" \ "" AT\&F\&K3\&D2\&C1M1 OK ATDTnuméro_de_téléphone CONNECT
et /etc/ppp/test.pap:
pppuser mot_de_passe
Quelques remarques:
Si tout se passe bien, l'utilisation du script doit aboutir à l'établissement d'une connexion PPP entre votre client et le serveur. Une fois cette connexion établie, vous pouvez utiliser n'importe quelle fonctionnalité réseau entre les deux machines. L'arrêt de la connexion se fera par exemple en tuant le processus pppd par un:
kill `cat /var/run/ppp0.pid`
Le plus simple est de configurer un nouvel accès réseau distant. je ne vous ferais pas l'affront d'expliquer comment on définit l'accès à un réseau distant sous Windows95, je me bornerai à préciser la configuration du Type de serveur comme indiqué ci-dessous (obtenue par les propriétés de la connexion définie):
Première remarque, il semblerait qu'à Redmond les seuls types de serveurs connus soient Win95/NT et vaguement 'Internet' ;-).
Il est conseillé dans notre cas de décocher toutes les options sauf TCP/IP puis de finir la config en cliquant sur Paramètres TCP/IP pour obtenir l'écran suivant:
L'adresse sera normalement affectée automatiquement par le serveur LINUX (voir paramètre du fichier /etc/ppp/options. Si vous désirez utiliser un serveur de nom (DNS), il faudra préciser sont adresse IP à ce niveau la.
Une fois la configuration terminée, il suffit de double-cliquer sur l'icone de connexion définie pour obtenir l'écran suivant:
puis de cliquer sur Connecter.