Configuration d'un client et d'un serveur PPP sous Linux RedHat

M. Libes
Centre d'océanologie de Marseille - FR 6106 CNRS
v0.99
(fait chez moi le soir de temps en temps en dehors des heures de boulot)
(vers Sept-Oct 1999)




Préambule: Ce document contient mes notes personnelles pour

1. établir une connexion réseau entre un PC Linux (client PPP)  et un serveur (PPP), via le réseau téléphonique RTC
2. mettre en place son propre serveur  d'accès PPP sur un PC sous Linux Redhat
 NB : la majeure partie des informations figurant dans ces pages ont été puisées dans  diverses documentations ci dessous ;-)) prises sur le Net ...
Je rajoute par ci par là  2 ou 3 éléments d'informations personnels qui peuvent parfois les complémenter.... comme  l'utilisation de minicom de netcfg et de kppp, et quelques problemes de permissions d'accès sur le port série
Le client PPP est décrit en mode ligne de commandes sous un shell Unix, mais aussi par netcfg et kppp
Ces pages de documentation sont loins d'etre totalement exhaustives sur le sujet...Toutefois elles suffisent pour obtenir une configuration PPP qui fonctionne.
S'il manquait quelque chose d'essentiel, le lecteur n'hésitera pas à le signaler à libes@com.univ-mrs.fr



 
 

Installer un client PPP sur PC Linux

Installer un serveur PPP sur PC Linux



Installer un client PPP sur PC Linux

Prérequis

Comme prérequis :

1. il faut que le noyau linux soit compilé avec le support réseau, et le support PPP compilé sous forme de module ppp.o
Ce module réseau ppp.o doit se trouver dans  /lib/modules/<votre-noyau>/net/ . Par exemple pour un noyau 2.0.36, vérifiez que le module ppp.o est présent dans:

$ ls   /lib/modules/2.0.36-0.7/net/ppp.o
/lib/modules/2.0.36-0.7/net/ppp.o
Si "par hasard" le noyau Linux n'avait pas le support réseau et PPP, eh bien il faut le recompiler. Comme c'est vraiment peu probable, je  ne parlerai pas ici de la recompilation du noyau...qu'on trouvera ici [http://www.freenix.fr/linux/HOWTO/Kernel-HOWTO.html]

2. il faut avoir installé le paquetage "ppp" sur son PC. Verifier par :

 $ rpm -qi ppp
Name        : ppp                         Distribution: Manhattan
Version     : 2.3.5                             Vendor: Red Hat Software
Release     : 1                             Build Date: lun 08 jun 1998 15:18:34 MEST
Install date: lun 21 déc 1998 13:44:56 MET      Build Host: porky.redhat.com
Group       : Networking/Daemons            Source RPM: ppp-2.3.5-1.src.rpm
Size        : 282305                           License: distributable
Packager    : Red Hat Software <bugs@redhat.com>
Summary     : Paquetage du démon ppp pour Linux 1.3.xx et supérieur.
Description :
Ceci est le démon et la documentation pour le support PPP. Cela réclame
un noyau supérieur au 2.0 et construit avec le support PPP. Le noyau par
défaut de Red Hat contient le support PPP sous forme de module.


[A l'époque de la rédaction de ces pages, mon PC est  en  Linux RedHat 5.2 (noyau 2.0.36),  et comme indiqué dans les informations du rpm PPP, normalement  le noyau de la RedHat  est compilé par défaut pour avoir le support PPP  intégré sous forme de module!]
 

Note à Béné: Attention dans certaines distributions de Linux actuelles (Sept.99), le  paquettage ppp 2.3.7 installé par défaut  fonctionnne mal!!! Il est absolument indispensable de mettre à jour PPP (disponible sur tout bon serveur FTP dan le répertoire updates de la distribution Linux)  avec la derniere version 2.3.8 de PPP

 

Les fichiers nécessaires au paramétrage réseau du PC Client

Nous sommes dans le cas d'un PC Linux  à la maison... ( probablement sans carte éthernet)
$ more /etc/hosts
127.0.0.1       localhost       localhost.localdomain
139.124.2.204   compp3.com.univ-mrs.fr      pcmaison  #pc de ma maison en connexion PPP

 
 $more /etc/resolv.conf
search com.univ-mrs.fr
nameserver 139.124.2.103
nameserver 139.124.1.2

 
 
 
 
 


Voir plus bas (Chapitre B) comment on crée la nouvelle interface réseau PPP0 destinée à établir une connexion TCP/IP via le réseau téléphonique commuté (RTC)

Après configuration on retrouvera ces informations concernant la définition des interfaces réseau, par la commande

$ /sbin/ifconfig -a
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Bcast:127.255.255.255  Mask:255.0.0.0
          UP BROADCAST LOOPBACK RUNNING  MTU:3584  Metric:1
          RX packets:35309769 errors:0 dropped:0 overruns:0 frame:0
          TX packets:35309769 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0
eth0      Link encap:Ethernet  HWaddr 00:60:08:4F:AE:29
          inet addr:139.124.2.190  Bcast:139.124.2.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:863230 errors:0 dropped:0 overruns:0 frame:0
          TX packets:425871 errors:0 dropped:0 overruns:0 carrier:0
          collisions:1981
          Interrupt:11 Base address:0x1040


on retrouve ces informations de routage en tapant la commande
 

 $netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
139.124.2.0     *                        255.255.255.0   U      1500 0          0 eth0
127.0.0.0       *                           255.0.0.0           U      3584 0          0 lo

default         139.124.2.250         0.0.0.0         UG     1500 0          0 eth0

Tester son modem

Etablir une connexion réseau Internet via le réseau téléphonique (RTC) nécessite que la chaine matérielle
[PC client -Modem] <----> RTC <----> [Modem-PC serveur]
fonctionne parfaitement.

Moi j'aime bien commencer par passer un coup de fil à travers le modem pour m'assurer que le modem fonctionne correctement!
 

 $ls -l  /dev/modem
lrwxrwxrwx   1 root     uucp            4 jun 22 11:18 /dev/modem -> cua0
ou...dans des versinos plus récentes de linux
$ ll /dev/modem
lrwxrwxrwx   1 root     root            5 Aug 19 10:01 /dev/modem -> ttyS0

 
 
 
 
  • dialoguer avec son modem

  • lancer le programme "minicom"  (si vous ne l'avez pas, récupérez le sur n'importe quel serveur ftp, et installez le  rpm -Uvh minicom-1.82 par exemple) :

    minicom doit commencer par  initialiser le modem sur le port série correspondant à /dev/modem ...Sous Linux, il n'ya pas besoin de pilote (driver) spécial pour gérer un modem... Le modem est géré par une application (fax ,minitel, ppp ...) via le port série, par un jeu de commandes que comprend le modem..la plupart du temps un jeu de commandes dit "Hayes" qui sont des commandes commencant par AT , que le modem recoit et interprète...
    Ensuite, après avoir lancé minicom , taper la commande ATI3 au clavier qui demande à votre modem de s'identifier
    Welcome to minicom 1.82
    OPTIONS: History Buffer, F-key Macros, Search History Buffer, I18n
    Compiled on Jan 26 1999, 13:39:20.
    Press CTRL-A Z for help on special keys
     
    AT S7=45 S0=0 L1 V1 X4 &c1 E1 Q0
    OK
    ATI3
    U.S. Robotics Sportster MessagePlus 56000 Rev. 11.1.18
    OK
    Si le modem ne répond pas , inutile d'aller plus loin! il y a un problème...Dans ce cas il faut vérifier un certain nombre d'éléments (la connexion sur le port série, et surtout les permissions du fichier spécial correpondant au port série /dev/ttyS0 ... au passage lisez la FAQ modem :http://www.nfrance.com/intmodem.html

     

     
     
     
     
     

  • Problèmes pour lancer minicom?

  • Il se peut  qu'on ait des problemes en lancant minicom en tant que utilisateur Lambada! Dans ce cas,

    Avec ca, un utilisateur non "root" peut utiliser les programmes qui utilisent le port série /dev/ttyS0
     
     
     
  • relever les échanges entre le client et le serveur par "minicom"

  • Il va être nécessaire pour automatiser une connexion PPP de répondre automatiquement au dialogue engagé entre le client PPP et le serveur. Pour cela il  nous faut connaitre  au préalable les chaines de caractères exactes envoyées par le serveur sur la l igne téléphonique, auxquelles le client PPP devra répondre.

    Il se peut en outre que le serveur n'échange aucune chaine avec le client, mais pour en etre sur et  vérifier quelles chaines exactes sont envoyées par le serveur PPP, on peut les capturer à l'aide d'une connexion avec le programme  minicom

    1. lancer minicom, taper <ctrl-A Z> pour obtenir le menu, puis choisir l'option "L" capture on/off  qui permet de capturer tous les échanges entre l'appelant et l'appelé. Le menu demande dans quel fichier (minicom.cap par défaut) seront stockées les chaines  de caractères échangées entre l'appelant et l'appelé!

                         Minicom Command Summary
     
              Commands can be called by CTRL-A <key>
     
                   Main Functions                                  Other Functions
     
     Dialing directory..           run script (Go)....G |     Clear Screen.......C
     Send files.........S                 Receive files......R |     cOnfigure Minicom..O
     comm Parameters....P        Add linefeed.......A |     Suspend minicom....J
     Capture on/off.....L             Hangup.............H |       eXit and reset.....X
     send break.........F              initialize Modem...M |  Quit with no reset.Q
     Terminal settings..T          run Kermit.........K |       Cursor key mode....I
     lineWrap on/off....W          local Echo on/off..E |     Help screen........Z
                                                | scroll Back........B
     
    2. choisir l'option "D Dialing directory" qui permet d'établir une communication téléphonique avec le serveur PPP (Fournisseur d'acces Internet=FAI).. Lancer l'appel téléphonique vers le FAI , répondez au clavier à chaque demande de renseignements envoyée par le serveur PPP (s'il y en a) , puis coupez la connexion!

    3. tous les échanges sont alors  inscrits dans le fichier "minicom.cap"

    $  more minicom.cap
    Annex Command Line Interpreter   *   Copyright (C) 1988, 1995 Xylogics, Inc.
    Checking authorization, Please wait...
    Annex username: libes
    Annex password:
    Access Code:
    Permission granted
    C.O.M. port 1: hangup
    Resetting line and disconnecting.
    on voit donc que le serveur PPP dans mon cas, a envoyé les chaines exactes ci dessous. On va se servir de ces chaines pour automatiser une connexion PPP dans un script appelé "chat-script".
     
    Annex username:
    Annex password:
    Access Code:
    C.O.M. port 1:


    Note à Béné :  il se peut très bien que le serveur distant n'engage aucun échange de chaine avec leclient. C'est le cas de bon nombre d'entre eux. Exemple de connexion vers FREE.FR où l'on a capturé l'échange sur la ligne télephonique dans un fichier minicom.cap . On a dans ce cas directement l'échange des paquets réseau TCP. (la connexion PPP échouera puisque depuis minicom le lancement de ppp localement sur le pc client ne sera pas fait)
     

     more minicom.cap
    ~ÿ}#À!}!¿} }8}"}&} }*} } }#}$À#}%}&ÏçÕ}'}"}(}"}05~~ÿ}#À!}!À} }8}"}&} }*} } }#}$À#}%}&ÏçÕ}'}"}(}":ú~~ÿ}#À!}!Á} }8}"}&} }*} } }#}$À#}%}&ÏçÕ}'}"}(}"ós~~ÿ}#À!}!Â} }8}"}&} }*} } }#}$À#}%}&ÏçÕ}'}"}(}"¹á~~ÿ}#À!}!Ã} }8}"}&} }*} } }#}$À#}%}&ÏçÕ}'}"}(}"ph~~ÿ}#À!}!Ä} }8}"}&} }*} }

     

     
     
     
     
     

    Paramétrage et Lancement d'un client PPP sur PC Linux

    A partir d'ici on rentre dans l'utilisation de la partie cliente de PPP. On suppose que :
  • votre système est paramétré pour utiliser le réseau tcp/ip :
  • ifconfig -a vous affiche l'interface de bouclage lo0 et la commande ping localhost fonctionne bien
  • vos fichiers réseau sont correctement paramétrés (voir ci dessus)
  • le modem est branché et fonctionne! (il répond à  des commandes AT envoyées par minicom)
  • vous avez relevé les échanges de chaines entre le serveur PPP et le client

  •  

    A/ Configurer un client en mode ligne: ppp

    Meme si on souhaite utiliser  une interface graphique pour paramétrer et lancer PPP, i l  est bon de savoir comment fonctionne la commande de base pppd qui régit l'échange entre le client et le serveur PPP.
     


    Mais....Quels sont ces parametres et ou  les place-t'on ??

    Il faut lire le man pppd et le PPP-Howto pour une présentation détaillée de  ces options!... je ne présente ici que les paramètres les plus courants (c'est  à dire ceux que j'utilise et que j'ai compris) et qui  suffisent dans mon cas à  établir une connexion qui fonctionne correctement!!!

    On peut taper la commande pppd sur la ligne de commande d'un shell Unix... moi je préfère en faire un petit  fichier de commandes , que j'appelle  connex-on par exemple
     

    $more connex-on
    /usr/sbin/pppd  /dev/modem 115200  crtscts modem  defaultroute \
     noipdefault  remotename ppp-labo  netmask 255.255.255.0  \
    user libes   connect '/usr/sbin/chat -v -f /home/momo/PPP/chat-ppplabo'
    NB: toutes les options qui suivent la commande pppd , peuvent figurer indifféremment soit sur la ligne de commande à la suite de "pppd", soit dans le fichier /etc/ppp/options

     
  • 115200 : indique la vitesse maximale de réception des données entre le modem et l'UART du PC

  •  
  • crtscts : indique d'utiliser le controle de flux matériel du port série (au lieu du controle logiciel par Xon/Xoff) .. Il est impératif d'utiliser crtscts pour que les échanges se déroulent correctement (voir la FAQ modem de L. Sintès http://www.nfrance.com/intmodem.html

  •  
  • modem : indique d'utiliser le controle de ligne d'un modem. Dans ce cas pppd  attend le signal de la porteuse CD à l'initialisation du port série

  •  
  • defaultroute :  va ajouter une route par défaut à la table de routage du systeme, et permet d'utiliser le serveur PPP (la nouvelle interface réseau ppp0 créée) comme passerelle extérieure!. On indique au systeme qu'on route les paquets IP vers l'exterieur par la nouvelle interface PPP0

  •  
    * Ainsi, avant la connexion, seule l'interface de bouclage lo0 est présente
     $netstat -r
    Table de routage IP du noyau
    Destination     Passerelle      Genmask         Indic   MSS Fenêtre irtt Iface
    127.0.0.0       *               255.0.0.0       U         0 0          0 lo
    * Pendant  que la connexion PPP  est active, on voit qu'une autre route est mise  en place
    $ netstat -r
    Table de routage IP du noyau
    Destination     Passerelle              Genmask                 Indic   MSS Fenêtre irtt Iface
    127.0.0.0               *                           255.0.0.0               U             0 0          0 lo
    139.124.2.190    *                           255.255.255.255 UH         0 0          0 ppp0
    default                 139.124.2.190   0.0.0.0                     UG        0 0          0 ppp0
  • lock   Permet un accès exclusif au modem. On indique a pppd de créer un fichier verrou /var/lock/LCK..* lorsque le modem est utilisé, afin d'eviter une seconde utilisation simultanée par un autre utilisateur. Attention il faut pour cela qu'un utilisateur Lambada ait les permissions pour écrire dans le répertoire /var/lock ... Si ca coince vraiment, on peut oter l'option lock (surtout si on est seul à travailler sur le PC, guère de chance que quelq'un d'autre que vous utilise le port modem en meme temps! )
  •  Attention: il se peut que vous n'ayez pas mis l'option "lock" dans votre ligne de commande , mais que cette option soit tout de meme active! pourquoi? parce que pppd va chercher également ses options dans le fichier /etc/ppp/options et que par défaut cette option "lock"  figure par défaut dans ce fichier!
    $ more /etc/ppp/options
    lock
  • noipdefault : indique a pppd de  ne pas assigner l'adresse IP présente dans /etc/hosts ... l'adresse est affectée dynamiquement au client PPP par le serveur PPP . Cela permet de gérer les affectations d'adresse IP depuis le serveur!

  •  
  • netmask 255.255.255.0: c'est le masque de réseau qui indique au protocole IP quelle est la partie réseau d'une adresse réseau et quelle est la partie machine . Avec un masque 255.255.255.0 sur une adresse 139.124.2.203 indique que l'adresse de réseau est 139.124.2 et que l'adresse de la machine dans ce réseau est 203 i.e 139.124.2.203

  •  
  • user libes : authentification auprès du serveur PPP

  •  
  • connect '/usr/sbin/chat-v -f /home/momo/PPP/chat-ppplabo' : signifie que l'on va établir le dialogue (to chat = bavarder, dialoguer en british)  avec le serveur PPP distant, en utilisant le fichier de paramètres  /home/momo/PPP/chat-ppplabo
  • $more connex-on
    /usr/sbin/pppd  /dev/modem 115200  crtscts modem  defaultroute \
    noipdefault   netmask 255.255.255.0  user libes   remotename ppplabo  \
    connect '/usr/sbin/chat -v -f /home/momo/PPP/chat-ppplabo'
    Avec la ligne de commande ci dessus, pppd va aller chercher le mot de passe pour la connexion "libes" vers le FAI "ppplabo"  (au lieu de "libes" vers le FAI "univaix")

     
     
    Je décris ci dessous la création et le lancement d'une interface PPP avec les utilitaires  netcfg et kppp

     
    Après avoir lancé netcfg,  en sélectionnant les options "interface" puis "ajouter" dans la fenetre , on peut créer une nouvelle interface réseau  de  type PPP
     

    En cliquant sur le bouton "editer" on peut alors par la suite configurer cette nouvelle interface PPP


     
     
     
    bouton  "MATERIEL" : Utiliser impérativement le controle de flux matériel RTC/CTS   (voir la FAQ Modem  de L. Sintès http://www.nfrance.com/intmodem.html)
    Bien entendu le périphérique /dev/modem doit exister sur votre système... on utilisera l'utilitaire modemtool de redhat qui permet de créer ce fichier spécial ... (en fait ca fait juste un lien entre votre port série sur lequel est branché" le modem et le fichier spécial /dev/modem. Soit
    $ ln -s /dev/cua0 /dev/modem  si le modem est branché sur le  premier port série cua0)

    bouton   "COMMUNICATION" :  permet d'indiquer quel est le numéro de téléphone du FAI (fournisseur d'accès internet) ben oui  ;-)) il faut donner le numéro de téléphone du serveur PPP (appelé aussi FAI = fournisseur d'accès Internet) et paramétrer éventuellement son modem
    Ce document ne peux faire l'inventaire exhaustif des problèmes de connexion encontrés avec un modem... il faut impérativmenet lire la FAQ Modem   http://www.nfrance.com/intmodem.html
    Tout ce que je peux dire c'est que j'ai utilisé un modem Olitec 28K depoche et un USRobotics sportster messagePlus 56K sans AUCUN probleme pour les connexions PPP!!! avec les chaines d'init par défaut de minicom par exemple
    $minicom
    Welcome to minicom 1.82
    OPTIONS: History Buffer, F-key Macros, Search History Buffer, I18n
    Compiled on Jan 26 1999, 13:39:20.
    Press CTRL-A Z for help on special keys
     
    AT S7=45 S0=0 L1 V1 X4 &c1 E1 Q0
    OK
    ati3
    U.S. Robotics Sportster MessagePlus 56000 Rev. 11.1.18
     
    le bouton "Communication" permet également d'indiquer quelle sera la séquence de dialogue entre le client et le serveur PPP... c'est à dire quelles chaines de caractères le serveur envoie (et donc que le client doit attendre).. c'est typiquement ce qu'on va retouver dans les fichiers de dialogue "chat" vus dans le chapitre précedent!
    Ci dessous le serveur envoie (i.e le client attend) la chaine "Annex username:"  le client répond alors en envoyant la chaine "libes" (c'est moi)... idem avec la  chaine "Annex password:" qu'envoit le serveur, et à laquelle le client répond par l'envoi de la chaine "tralala" (mon mot de passe: si si....!)

     

    Sur Linux RedHat, on va retrouver ces informations de dialogue dans le fichier  /etc/sysconfig/network-scripts/chat-ppp0
     
     
     
    bouton RESEAU :


    on va retouver ces parametres dans le script /etc/sysconfig/network-scripts/ifcfg-ppp0
     
     

    bouton PAP : Enfin d'un point de vue sécurité, il est nécessaire de n'autoriser la connexion réseau au serveur PPP que par
    l'intermédiaire d'un nom de connexion  (je n'ai pas dit nom d'utilisateur) valide et d'un mot de passe que le serveur PPP va
    tester et authentifier, par le protocole PAP (password authentification protocol)....voir plus haut les explications sur PAP
     

    Ces informations correspondent  bien entendu,  à des paramètres enregistrés également sur le serveur PPP comme on  le verra plus bas lors de la configuration d'un serveur PPP .

    Du coté du client on indique donc le nom de la  machine qui va se connecter et son mot de passe pour accéder au réseau!
    Ci dessous le nom de connexion "libes" identifiant "une" machine appelée "libes" du coté du serveur PPP. Cette chaine n'est ni plus ni moins qu'un identifiant... ca n'est pas forcément un nom d'utilisateur Unix ni un nom de machine .Ca identifie une connexion cliente/serveur


     
     
     

    Les interfaces graphiques c'est bien beau mais on aimerait savoir quels fichiers ca touche... Après avoir
    utilisé netcfg et créé la nouvelle interface réseau PPP , les fichiers créés sont placés dans :
    /etc/ppp  et /etc/sysconfig/network-scripts
     
     $ ls -l /etc/ppp
    total 5
    -rw-------   1 root     daemon         78 jun  8  1998 chap-secrets
    -rwxr-xr-x   1 root     root          265 oct 15  1998 ip-down
    -rwxr-xr-x   1 root     root          349 oct 15  1998 ip-up
    -rw-r--r--   1 root     daemon          0 jan  6  1999 options
    -rw-------   1 root     daemon        180 mar 12 17:24 pap-secrets
     $ls -l  /etc/sysconfig/network-scripts/
    total 21
    -rw-------   1 root     root          271 mar 12 17:23 chat-ppp0
    -rwxr-xr-x   1 root     root          386 aoû 24 11:11 ifcfg-eth0
    -rwxr-xr-x   1 root     root          115 aoû 24 11:11 ifcfg-lo
    -rw-r--r--   1 root     root          265 aoû 24 11:11 ifcfg-ppp0
    -rwxr-xr-x   1 root     root          445 oct 15  1998 ifdhcpc-done
    lrwxrwxrwx   1 root     root           20 jun 22 11:18 ifdown -> ../../../sbin/ifdown
    -rwxr-xr-x   1 root     root          267 oct 15  1998 ifdown-post
    -rwxr-xr-x   1 root     root         1191 oct 15  1998 ifdown-ppp
    -rwxr-xr-x   1 root     root          907 oct 15  1998 ifdown-sl
    lrwxrwxrwx   1 root     root           18 jun 22 11:18 ifup -> ../../../sbin/ifup
    -rwxr-xr-x   1 root     root          975 oct 15  1998 ifup-aliases
    -rwxr-xr-x   1 root     root         1023 oct 15  1998 ifup-ipx
    -rwxr-xr-x   1 root     root          724 oct 15  1998 ifup-plip
    -rwxr-xr-x   1 root     root          727 oct 15  1998 ifup-post
    -rwxr-xr-x   1 root     root         2817 oct 15  1998 ifup-ppp
    -rwxr-xr-x   1 root     root          481 oct 15  1998 ifup-routes
    -rwxr-xr-x   1 root     root         1564 oct 15  1998 ifup-sl
    -rw-r--r--   1 root     root         1084 oct 15  1998 network-functions

     


    une fois que tout ce paramétrage est terminé, il ne reste plus qu'à essayer de lancer une connexion... Pour cela revenir sur la définition des interfaces réseau de netcfg ... Sélectionner la nouvelle interface crée PPP0 et cliquer sur le bouton "activer" ..........
    Le modem devrait numéroter et se connecter au serveur!


     
     
     



     
     
     

    C/ configurer une connexion PPP avec KPPP


    Les memes concepts avec KPPP !!!!! Après tout ne vous ennuyez pas à utiliser netcfg... kppp me parait très bien et fonctionne top!

    Quand on a compris les quelques concepts nécessaire à une connexion PPP, le paramétrage d'une connexion PPP (hors problème vicieux)  cliente se fait en 10 minutes maximum!
     
     
     

  • bouton SETUP pour créer une nouvelle configuration de connexion vers un fournisseur d'accès Internet (le serveur PPP quoi!)
  • Cette fenetre permet d'indiquer le nom de connexion (libes) et le mot de passe (****)  qui vont etre autorisés à se connecter sur le serveur identifié par "mon-linux"

  •  

     
     
     

    Ces informations d'authentification seront celles échangées dans la négociation PAP.  C'est l'équivalent en mode graphique des infrmations contenues dans le fichier /etc/ppp/papa-secrets
    Notons qu'avec une interface graphique comme kppp le fichier /etc/ppp/pap-secrets n'est pas utilisé
    Les informations d'authentification pour kppp sont stockées dans le fichier  de configuration de kde ~/.kde/share/config/kppprc


    Si le mot de passe  de la connexion PPP est erroné, on aura les messages suivant dans /var/log/messages

    Nov  4 00:05:04 pcmaison pppd[576]: pppd 2.3.8 started by momo, uid 501
    Nov  4 00:05:04 pcmaison pppd[576]: Using interface ppp0
    Nov  4 00:05:04 pcmaison pppd[576]: Connect: ppp0 <--> /dev/ttyS0
    Nov  4 00:05:10 pcmaison pppd[576]: Remote message: Password validation failure
    Nov  4 00:05:10 pcmaison pppd[576]: PAP authentication failed
    Nov  4 00:05:15 pcmaison pppd[576]: Terminating on signal 15.
    Nov  4 00:05:15 pcmaison pppd[576]: Connection terminated.

     
  • bouton EDITER/SETUP  pour définir le paramétrage de la connexion vers le serveur PPP identifié par  "mon-linux"

  •  

     


     
     

    bouton DEVICE: on retrouve des concepts connus non? le modem est branché sur le fichier spécial /dev/modem (ce fichier doit exister et est un lien sur /dev/ttyS0) ... vérifiez... au besoin modemtool pour créer ce fichier
    On demande à ce que le controle de flux sur le port série soit un controle de flux matériel rts/cts (indispensable)

    souvenez vous du script écris à la main plus haut... on retrouve ces options à travers l'interface graphique!

    $more connex-on
    /usr/sbin/pppd  /dev/modem 115200  crtscts modem  defaultroute \
     proxyarp noipdefault  netmask 255.255.255.0 remotename ppp2 ipparam ppp2 \

    user libes   connect '/usr/sbin/chat -v -f /home/momo/PPP/chat-ppp2'


     
     
     

  • bouton MODEM : profitez en pour tester votre modem avec le bouton QUERY MODEM


  •  
     
  • bouton PPP:  rien de spécial à signaler... le timeout correspond a l'échec de ppp si une connexion ne s'est pas établie au bout de 30sec


  •  
     
     

    revenons au bouton EDITER  de la fenetre principale pour définir tout le paramétrage de la connexion qui s'appelle "mon-linux" et passons en revue les divers paramétrages
     

  • bouton DIAL; permet d'indiquer le numéro de téléphone d'accès au FAI (serveur PPP) .. en l'occurence ici c'est mon PC sous Linux au bureau du labo Authentification par PAP (password access protocol) ...

  •  

     


     

    bouton ARGUMENTS : voici les arguments de la commande pppd (ceux qu'on retrouve également dans le script écrit à la main).... souvenez vous du script écris à la main plus haut... on retrouve ces options à travers l'interface graphique!

    $more connex-on
    /usr/sbin/pppd  /dev/modem 115200 crtsctsmodem  defaultroute \
      noipdefault  netmask 255.255.255.0  \
    user libes   connect '/usr/sbin/chat -v -f /home/momo/PPP/chat-ppp2'
    j'ai rajouté quelques arguments ici qui ne sont pas indispensables (mru et mtu), voir le "man pppd"


     
     
     
     
  • bouton IP : pour indiquer si  l'adresse réseau du client PPP après connexion est donnée statiquement  (et localement sur le PC client dans le fichier /etc/hosts) ou dynamiquement par le  serveur PPP?
  • La plupart du temps pour des raisons d'administration de réseau , il est préférable que ce soit le serveur PPP (FAI) qui attribue une adresse  réseau IP  dynamiquement au  PC client. (on verra plus loin dans la partie paramétrage du serveur comment on fait sous Linux)
    On choisira donc "Dynamic IP Address"; .... ce paramétre correspond à l'option "noipdefault" de la ligne de commande.
     le man pppd dit: "  With  this option, the peer will have to supply the  local IP address during IPCP negotiation (unless it specified  explicitly  on the command line or in an options file)."


     
     
     

  • bouton DNS: on indique à quel domaine réseau appartiendra le PC connecté à l'internet via la connexion PPP, et quel est le serveur de noms (DNS) de ce domaine


  •  


     

  • bouton "Login Script" :   indique quel sera l'échange (le dialogue) entre le serveur et le client (s'il y en a) ... Il faut bien entendu connaitre les chaines échangées s'il y en a (on les capture avec l'utilitaire minicom comme indiqué ci dessus)... dans mon cas j'ai fait envoyer de la part de mon serveur PPP Linux les chaines
  • compc32.com.univ-mrs.fr login: puis
  • Password:


  •  

    Lorsque tout ce paramétrage est terminé, (quand on sait ce qu'on fait , il y en a pour 10 minutes maximum) la  connexion est prete...il ne reste plus qu' la lancer par le
     

  • bouton CONNECT


  • il est bien sur préférable de suivre la trace de connexion avec l'option "show log window" pour repérer un problème éventuel!
     

    hope this helps et qu'il ya pas trop de c... écrites
    ML







     

    Installer un serveur PPP sur PC Linux

    Passons du coté d'un serveur PPP sur un PC Linux... qui nous permet d'etre notre propre Fournisseur d'accès Internet (si tant est que le PC serveur soit également  déjà relié à l'Internet, évidemment)

    paquettages nécessaires

    Sur le PC qui va servir de serveur PPP, il est nécessaire d'avoir un modem  :-)) (ben il fallait le dire non?) et d'avoir installé les paquettages logiciels suivants :
     $ rpm -qi mgetty
    Name        : mgetty                      Distribution: Manhattan
    Version     : 1.1.14                            Vendor: Red Hat Software
    Release     : 5                             Build Date: mar 13 oct 1998 02:57:38 MEST
    Install date: lun 21 déc 1998 13:43:38 MET      Build Host: porky.redhat.com
    Group       : Networking/Utilities          Source RPM: mgetty-1.1.14-5.src.rpm
    Size        : 1194377                          License: distributable
    Packager    : Red Hat Software <bugs@redhat.com>
    Summary     : Remplacement de getty pour les modems données et fax.
    Description :
    Ce paquetage contient un getty intelligent permettant les logins sur une
    ligne série (via un modem, par exemple). Il autorise le rappel automatique
    et contient une gestion fax (mgetty-sendfax doit être installé pour
    utiliser pleinement cette gestion fax).
    On peut aussi gérer les réponses aux appels téléphoniques avec autre chose que mgetty sous Linux, mais mgetty semble bien adapté aux gestions de modems compatibles hayes :
     Mgetty  is  a  ``smart'' getty replacement, designed to be   used with  hayes  compatible  data  and  data/fax  modems.    Mgetty  knows  about  modem  initialization,  manual modem  answering (so your modem doesn't  answer  if  the  machine  isn't ready), UUCP locking (so you can use the same device  for dial-in and dial-out).  Mgetty provides very extensive  logging facilities.

     
     
     

    Gérer  les appels entrants sur le serveur PPP,  avec mgetty

    Après avoir installé le paquettage mgetty+sendfax, Les fichiers de configuration de mgetty sont dans /etc/mgetty+sendfax:
     $ll /etc/mgetty+sendfax/
    total 28
    -rw-------   1 root     root         1172 May 11 23:26 dialin.config
    -rw-------   1 root     root         2593 May 11 23:26 login.config
    -rw-------   1 root     root         1559 May 11 23:26 mgetty.config
     
  • le fichier dialin.config controle l'acceptation ou le refus des appels téléphoniques entrants, selon le numéro de téléphone de l'appelant . Si on a besoin de controler ces acces, lire la syntaxe  adaptée à ce fichier, dans le fichier lui meme.. Je ne traite pas de cet aspect de controle ici. En plus il faut que vous ayiez un modem qui supporte l'option "callerId" qui permet de connaitre le numero de téléphone de l'appelant.

  •  
  • Le fichier login.config controle comment et quand mgetty doit lancer un autre programme lors  de la connexion d'un utilisateur... et ceci en lieu et place du login normal. On va faire lancer pppd

  •  

     

    Dans ce fichier il est nécessaire d'enlever les commentaires de la ligne /AutoPPP/  et d'y rajouter quelques options nécessaires à la commande pppd qui va etre lancée pour établir la liaison réseau.
     

    /AutoPPP/ -     a_ppp   /usr/sbin/pppd auth -chap +pap login modem debug crtscts  ttyS0 38400
    on indique juste qu'on veut  valider l'authentification par "pap",  qu'on a un modem au cul du port série ttyS0, et qu'on veut controler le flux de facon matérielle par rtscts

     
  • le fichier mgetty.config     controle le paramétrage de la ligne série ttyS0 sur lequel est branché le modem du serveur

  • Il est juste nécessaire de modifier les lignes de paramètres correspondant au port série ttyS0 sur lequel est branché le modem c'est à dire ttyS0  dans notre cas.

    On trouve dans ce fichier la chaine d'initialisation du modem que va envoyer mgetty au modem... Comment la connaitre pour votre modem ??? soit en lisant la FAQ-modem http://www.nfrance.com/intmodem.html
    soit en magouillant un petit peu...
    Moi , du coté du serveur PPP j'ai un USRobotics sportster Message plus ... j'ai remplacé la chaine d'init présente par défaut dans ce fichier par une que j'ai trouvé je sais plus ou!!!? ... En tout cas celle la fonctionne pour mon USR message Plux 56K!
     

    # Zoom V.FX 28.8, connected to ttyS0: don't do fax, less logging
    #
    port ttyS0
    speed 38400
    debug 3
    #init-chat "" \dAT&F&C1E0\d\r OK ATQ0&K3&D2S0=0 OK
    init-chat "" \dAT&F1&K3&A2S0=2S13.0=1S27=128S44=5S9=12 OK
    ### ai desactive le &W qui ecrit la confiog en ram du modem
    #init-chat "" \dAT&F1&K3&A2S0=2S13.0=1S27=128S44=5S9=12&W OK
    #init-chat "" \dAT&F1&K3 S7=45 S0=0 L1 V1 X4 &c1 E1 Q0 OK
    modem-type data
    #  data-only y

    Lancer et Automatiser le lancement de mgetty


    On va se servir du process init  de linux et de son fichier de parametre /etc/inittab pour automatiser le lancement de mgetty !!
    Pour cela il suffit de rajouter une ligne dans le fichier /etc/inittab  qui va permettre de relancer automatiquement le process mgetty par init

    mgetty est lancé avec l'option -D  sur la ligne série ttyS0 qui signifie que la ligne série et le modem doivent etre traités comme un modem échangeant des données (et pas en mode fax )

        -D     Tells mgetty that the modem is to be treated  as  a
                  DATA modem, no fax initalization is attempted.


    g1:345:respawn:/sbin/mgetty -D /dev/ttyS0

    En rajoutant cela dans le fichier /etc/inittab et en demandant la relecture de ce fichier par le démon init (par /sbin/init q) ca va lancer le processus mgetty en mémoire et initialiser le port ttyS0 pour les besoins du modem!!!!
     

    Regardez le man mgetty si vous voulez rajouter des options à mgetty.. Personnellement à part -D je n'ai rien rajouté!

    ... on trouvera parmi les options interessantes ,

  • l'option -n qui indique a mgetty au bout de combien de sonneries il décroche la ligne (1 sonnerie par défaut)

  • et surtout....
  • l'option -p qui indique a mgetty quel est le prompt de login à afficher à l'utilisateur.... On peut à l'aide de divers codes personnaliser son propre "prompt de connexion...
  • Par défaut ce prompt de connexion est celui qui figure dans le fichier /etc/issue

  •  

     
     
     
     
     

    Le manuel de mgetty indique que la chaine de prompt par défaut est spécifiée lors de la compilation de mgetty... Si comme moi vous n'avez pas compilé cette distribtution et que vous avez juste installé la distrib à l'aide d'un RPM , le mieux est  de vérifier quelle chaine  exacte mgetty vous envoie avec un coup de connexion "à blanc" par minicom.... Appelez votre serveur depuis le PC client par minicom et notez les  échanges... Dans mon cas sans aucune option -p à mgetty , voici les chaines que je recois :

    'compc32.com.univ-mrs.fr login: '
    'Password: '

     

     
     
     
     

    Après avoir lancé le processus mgetty en mémoire (soit par init soit à la mimine) , il faut  controler tout de suite si cette initialisation avec la chaine d'init présente dans /etc/mgetty+sendfax/mgetty.config s'est bien passée!!!!

    Pour cela  jeter un coup d'oeil au fichier de trace relatif à mgetty qui se trouve dans /var/log/mgetty.log/ttyS0 , ainsi qu'a /var/log/messages

    s'il ya des erreurs, inutile d'aller plus loin..cela signifie que le modem s'initialise mal et  il est alors nécessaire d'en trouver la raison.
     

  • exemples de problemes....

  •  
  • Sep  6 00:11:35 compc32 mgetty[4628]: cannot get terminal line dev=ttyS1, exiting: Erreur d'entrie/sortie.

  • (je m'étais trompé de port série dans ce cas  j'avais mis ttyS1 à la place de ttyS0)
     
     

    01/04 09:25:43 yS0  timeout in chat script, waiting for `RING'
    01/04 09:25:43 yS0  huh? Junk on the line?
    --
    01/04 09:26:17 yS0  timeout in chat script, waiting for `RING'
    01/04 09:26:17 yS0  huh? Junk on the line?
    --
    01/04 09:29:47 ##### failed dev=ttyS0, pid=2577, got signal 15, exiting
     
     

  • exemple d'une bonne connexion à 22:56, L'utilisateur "libesppp" s'est bien connecté....

  • 08/31 22:56:04 ##### data dev=ttyS0, pid=1772, caller='none', conn='9600/ARQ/V34', name='', cmd='/bin/login', user='libesppp'
     
     
     
    A ce niveau, s'il n'y a  pas eu d'erreur,  mgetty est lancé par init et est en attente d'appels téléphoniques...
    Si le client ppp appelle, mgetty va répondre (modem décroche).
    mgetty va envoyer des chaines pour demander une authentification
    'compc32.com.univ-mrs.fr login: ' 'libesppp'
    'Password: ' 'tralala'
    auxquelles le script-chat du client va  donner les chaines de réponse...
    si l'authentification est correcte (vérification dans /etc/passwd)
    le "user" X sera alors connecté, en se connectant /usr/sbin/pppd  est lancé en tant que shell de connexion, (partie "serveur" de ppp)
    le démon pppd est alors lancé (ligne  /AutoPPP/ -     a_ppp   /usr/sbin/pppd auth -chap +pap login modem debug crtscts  ttyS0 38400 présente dans le fichier login.config)..
    et l'authentification "pap" a alors lieu  (mots depasse de pap-secret)
    la liaison réseau IP entre le client et le serveur sur RTC est alors établie....

     

     
     
     
     
     
     
     

    Paramétrage du serveur pppd

    Comme pour la partie cliente, les options du démon pppd serveur peuvent etre inscrites soit dans le fichier /etc/ppp/options. soit
    comme parametre directement sur la ligne de commande de pppd

    Attention, étant donné qu'il peut y avoir plusieurs modems sur  les différents ports séries d'un PC, ce fichier option peut exister en différents exemplaires pour différent ports série...Auquel cas ils devront  s'appeller /etc/ppp/options.ttyS0 ou encore /etc/ppp/options.ttyS1 etc... pour référencer les options du port série ttyS0 ou ttyS1
     
     

    L'attribution d'une adresse IP dynamique par le serveur, pour le client PPPP


    On a vu dans le paramétrage d'un client PPP que l'adresse IP qu'il recoit est attribuée dynamiquement par le serveur PPP ...(du moins que c'est mieux ainsi pour l'administation puisque le serveur controle les adresses IP de ses clients!!)
    Cette adresse sera placée dans le  fichier /etc/ppp/options  (on est du coté serveur toujours hein!?)

    NB: Du coté du client, cette adresse devra etre placée dans lefichier /etc/hosts (si elle ne figure pas dans le DNS du domaine) pour que la résolution de nom s'effectue correctment

    $ more options.ttyS0
    ::::::::::::::
    lock
    -detach
    :139.124.2.203                    <---- adresse envoyée dynamiquement au client PPP
    asyncmap 0
    netmask 255.255.255.0
    proxyarp
    defaultroute
    crtscts
    modem
    (les autres options ont été commentées pour la partie cliente... ce sont les memes ici, du coté du serveur)
    L'option proxyarp permet au serveur de jouer le role de serveur arp et faire apparaitre le PC client  sur le réseaul local ethernet
      "Add  an entry to this system's ARP [Address Resolution Protocol] table with the  IP  address  of  the   peer and the ethernet address of this system.  This  will have the effect of making the peer  appear  to other systems to be on the local ethernet."
     
     

    L'authentification des "connexions" sur la liaison PPP

    Pour qu'un utilisateur X puisse se connecter, il  est nécessaire de créer des comptes d'accès au réseau pour les utilisateurs se connectant depuis le PC client.


    Ainsi pour un accès pour l'utilisateur "libesppp" on créera un compte spécial dans "/etc/passwd" . Le shell du login est remplacé par le lancement de pppd
     

    libesppp:LO2QP457L8RXc:801:801:compte PPP pour  libes:/home/ppp:/usr/sbin/pppd

     

     
     
     
     
     

    Bien sur, le programme pppd devra pouvoir etre lancé par n'importe quel utilisateur... il faut donc vérifier les permissions pour exécuter pppd..le mieux est de placer le bit suid root par chmod u+s /usr/sbin/pppd

     
    ls -l /usr/sbin/pppd
    -rwsr-xr-x   1 root     root       106876 jun  8  1998 /usr/sbin/pppd
     
    mgetty envoie par défaut au client (cela dépend de comment il  a été compilé)   le nom IP du PC serveur, suivi de "login:"   ... Chaine à laquelle il faudra répondre par un nom de connexion  Unix valide!!! (un qui figure dans /etc/passwd)
    puis dans le 2eme échange mgetty envoie la chaine "passwd" à laquelle il faut répondre par le password de l'utilisateur qui se connecte par le RTC
      Ces chaines echangées,  vont se retrouver dans mon chat-script  de connexion PPP du coté du client, tel qu'on l'a vu plus haut [on dirait que pap n'est pas activé? pourtant je l'ai placé dans la ligne
    /AutoPPP/ -     a_ppp   /usr/sbin/pppd auth -chap +pap login modem debug crtscts  ttyS0 38400 ]

    Connexion au serveur  PPP  linux établi ci dessus, depuis un PC client


    Bref rappel de ce qui a été exposé plus haut, juste pour montrer la ligne de commande qui permet d'établir une connexion PPP depuis un client Linux
     

    ./linux-on
    /usr/sbin/pppd  /dev/modem 115200  crtscts modem defaultroute   \
     proxyarp noipdefault  netmask 255.255.255.0  \
        connect '/usr/sbin/chat -v -f /home/momo/PPP/chat-ppp2'

     

     

    avec le fichier "chat-ppp2"
    Dans le cas de cette connexion a un serveur PPP linux via mgetty, les options "user" et "remotename" de pppd ne sont pas utiles ici , le fichier /etc/ppp/pap-secrets n'est pas consulté, l'authentification est faite lors de la connexion de l'utilisateur "libesppp" sur le serveur PPP linux
     
     

    Passerelle par défaut avec ipchains/ipfwadm


    A l'issue de ces paramétrages,  le lien PPP est établi, et le PC Linux du coté serveur fait fonction de serveur PPP et de passerelle pour le réseau local éthernet... toutefois il ne permet pas de router les paquets réseaux destinés à des adresses IP extérieures au réseau local!!

    Pour permettre un accès total au reste de l'internet via l'interface ppp0 par laquelle on est connecté,  il faut modifier  les regles de routage du noyau Linux coté serveur.. Pour cela il faut installer sur le PC serveur le paquettage ipfwadm  (ou ipchain pour les noyaux > 2.2.0) et modifier les règles de routage
     

    $Name        : ipfwadm                     Distribution: Manhattan
    Version     : 2.3.0                             Vendor: Red Hat Software
    Release     : 6                             Build Date: ven 08 mai 1998 04:58:22 MEST
    Install date: lun 23 aoû 1999 11:29:40 MEST      Build Host: porky.redhat.com
    Group       : Utilities/System              Source RPM: ipfwadm-2.3.0-6.src.rpm
    Size        : 87848                            License: GPL
    Packager    : Red Hat Software <bugs@redhat.com>
    Summary     : Pare-feu IP et outil d'adminitration des accès
    Description :
    Ceci est l'outil d'administration de firewall et de connexion IP.
    Il est utilisé si vous avez besoin d'utiliser un firewall (une machine
    qui agit comme une passerelle sûre vers Internet.

     

     

    Je ne vais pas rentrer dans le détail fin des règles de routages  à adopter pour le serveur PPP ...Lire le man ipfwadm
    /sbin/ipfwadm -F  -a accept -P all

    Il faut vérifier que les règles  de routages présentes sur lenoyau Linux du serveur PPP laissent passer les paquets tcpip en sortie .. Du coté du serveur, on doit avoir qq chose comme
     

    $ /sbin/ipfwadm -F -l
    IP firewall forward rules, default policy: accept
      $ /sbin/ipfwadm -F -l
    IP firewall forward rules, default policy: accept
    type  prot source               destination          ports
    acc   all  anywhere             anywhere             n/a

     
    $netstat -r
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
    compp2.com.univ *               255.255.255.255 UH     1500 0          0 ppp0
    139.124.2.0     *               255.255.255.0   U      1500 0          0 eth0
    127.0.0.0       *               255.0.0.0       U      3584 0          0 lo
    default         gw-lum          0.0.0.0         UG     1500 0          0 eth0

    Pour que mon PC fasse serveur PPP automatiquement après les heures de bureau


    Au boulot j'ai qu'une ligne de tél dans mon bureau... pendant la journée je ne peux pas mobiliser cette ligne pour en faire un serveur d'accès internet. En revanche le soir de 20:00 jusqu'à 6:00 du mat' j'aime bien que ma ligne soit disponible pour les connexions internet depuis chez moi... Aussi, je lance un script  en perl   par cron qui me lance automatiquement mgetty et me modifie /etc/inittab

    De 20:00 à 6:00 mon PC fait alors service d'accès Internet et je peux me connecter depuis chez moi sur mon propre  serveur...A 6:00 du mat' , le script se redéclenche, modifie inittab et relance init

    Voici ce script d'envergure  pppd.pl placé sous licence GML (General Momo Licence  ;-))
     

     #!/usr/bin/perl
    ML: 10/10/99
    ## lancé par CRON chaque jour à 20h du soir ./pppd.pl ON
    ##                            à 6h du mat   ./pppd.pl OFF
    ## pour modifier le fichier /etc/inittab et relancer le démon /etc/init
    ## de maniere a activer le démon mgetty qu ipermet d'etablir une connexion ppp
    ## a distance via le RTC
    ## le PC se transforme alors en serveur PPP
    ##
    $chaine="mgetty";
    $MOI="libes";
    if ($#ARGV == -1) {
       print(" Usage: $0  <ON | OFF>  \n");
       exit;
    }
     $arg=$ARGV[0];
     unless (($arg eq ON) || ($arg eq OFF)) {  die "argument incorrect $arg";}
    open(MAIL,"| mail -s\"gestion mgetty\"  $MOI");
    open (INITTAB,"/etc/inittab");
    @tabinit=<INITTAB>;
    foreach (@tabinit) {
       if (/$chaine/) {
         $trouve=1;
         s/^(.)(.+)/$1$2/;
         $first=$1; $suite=$2 ; ##pour analyser le 1er caractere
     
         ##modification de la variable courante $_ a la volée
         ## le tableau tabinit s'en trouve automatiquement modifié
         if ( ($first eq "#") && ($arg eq "ON")) {
            $change=1;
            s/^(\W)(.*)/$2/;
            print "changement $arg: $_";
            print MAIL "changement $arg: $_";
         };
         if ( ($first ne "#") && ($arg eq "OFF") ) {
            $change=1;
             s/(.*)/#$1/;   ## on rajoute # devant la ligne
             print "changement $arg: $_";
            print MAIL "changement $arg: $_";
         };
     
         if (! $change) {
            print "fichier inchangé \n";
            print MAIL "fichier inchangé \n";
         }
       }
    }
    if (! $trouve) { print "chaine $chaine absente \n"};
    close(INITTAB); close(MAIL);
    if ($change) {
      &ecrit_tab("/etc/inittab",@tabinit);
      print("Rechargement de /sbin/init \n");
      print MAIL "Rechargement de /sbin/init \n";
      ## on cree un sous process fils et on lui fait executer le relancement de init
      if (! fork) {
         exec("/sbin/init Q");
      }
    }
    print "fin...\n\n";
    ##--------------------subroutines
    sub ecrit_tab {
    local($nomfic,@values);
    ($nomfic,@values)=@_;
     open(OUT,">$nomfic") || die "erreur ouverture fichier sortie";
     foreach $_ (@values)  {
    #  print $_ ;
      print OUT $_;
     }
     close(OUT);
    }

     

     
     
     
     
     
     


    Autres documentations sur PPP et Linux


    Y en  a tellement! certaines sont meilleures, mais toutes se complémentent !
     

    ............Hope this helps -

    Marseille-Obélisque de mazargues :  vers le 4/09/1999