Page suivante Page précédente Table des matières

10. Monter un serveur PPP/POP dial-in

Par Hassan Ali

AVERTISSEMENT : Ça a marché pour moi. Mais votre configuration peut être différente !
OBJECTIFS : Installer des services PPP et POP/IMAP sur un serveur Red Hat Linux 5.1 pour des utilisateurs appelant par le modem.
OUTILS : Les CDs Red Hat Linux 5.1
NOUS SUPPOSONS QUE : Vous avec un PC avec une installation de base Red Hat Linux 5.1 avec un noyau Linux qui supporte la transmission IP (IP forwarding).

10.1 Étape 1 : installer "mgetty"

...(si ce n'est pas déjà fait), depuis le CD Red Hat 5.1

 

Loguez vous comme "root", insérez le premier CD Red Hat 5.1 dans le lecteur de CD-ROM, et montez-le en utilisant la commande :


# mount -t iso9660 /dev/hdb /mnt/cdrom

(on suppose que votre lecteur de CD-ROM est le dispositif /dev/hdb, sinon faites la modification appropriée)

 

Allez au répertoire RPMS :


# cd /mnt/cdrom/RedHat/RPMS

 

Installez les fichiers rpm "mgetty"


# rpm -Uvh mgetty*

Cela installera mgetty et tous ses cousins, mais qu'importe ! Si vous détestez la famille lointaine, débrouillez-vous et remplacez "mgetty*" par "mgetty-1.1.14-2.i386.rpm".

 

À la fin du fichier /etc/mgetty+sendfax/mgetty.config, ajoutez l'ensemble de trois lignes suivant pour chaque port série connecté à un modem pour les utilisateurs appelants. Voici un exemple pour /dev/ttyS1 et /dev/ttyC15 :


     # For US Robotics Sportster 28.8 with speaker off
     port ttyS1
     init-chat "" ATZ OK AT&F1M0E1Q0S0=0 OK
     answer-chat "" ATA CONNECT \c \r

     # For Practical Peripheral 14.4 with fax disabled and prolonged
     # carrier wait time (90 sec)
     port ttyC15
     init-chat "" ATZ OK AT&F1M0E1Q0S0=0S7=90+FCLASS=0 OK
     answer-chat "" ATA CONNECT \c \r

Notes :
  1. AT&F1 fixe le mode matériel de contrôle de flux sur beaucoup de modems. Pour les autres modems utilisez les initialisations appropriées dans la ligne du script d'initialisation.
  2. Juste au cas où vous vous demanderiez pourquoi j'ai pris en exemple un port ttyC15 : bon, vous pourriez avoir un tel port si vous avez un carte série multiport. S'il vous en faut, je recommande les cartes Cyclades.

 

Dans le fichier /etc/mgetty+sendfax/login.config, cherchez la ligne qui commence par /AutoPPP/. Assurez-vous qu'elle n'est pas en commentaire (c'est à dire qu'il n'y a pas de "#" au début de la ligne), et éditez la pour en faire :


/AutoPPP/       -       a_ppp   /etc/ppp/ppplogin

Si vous souhaitez que les noms d'utilisateurs qui se loguent (plutôt que a_ppp) apparaissent dans les fichiers de journal /var/run/utmp et /var/log/wtmp, alors la ligne ci-dessus devrait être :

/AutoPPP/       -       -       /etc/ppp/ppplogin

 

Dans le fichier /etc/inittab, cherchez la section qui lance les processus "getty" et ajoutez à la fin de cette section une ligne de la forme suivante pour chaque port modem. L'exemple ici est donné pour ttyS1 et ttyC15.


     7:2345:respawn:/sbin/mgetty -x 3 ttyS1
     8:2345:respawn:/sbin/mgetty -x 3 ttyC15

Le nombre du début (7,8) est arbitraire (en fait, j'ai vu dans quelques cas "s1", "s2", etc. utilisés à la place). Donnez seulement un numéro différent pour chaque port. Et pourquoi pas dans l'ordre !!? Je me demande !

 

Connectez les modems aux ports série, allumez les puis initialisez "mgetty" avec la commande :


 # init q

NOTE : si vous lancez "mgetty" sur un port série sans modem branché, ou avec un modem non allumé, vous aurez plein de messages d'erreur dans /var/log/messages ou dans les autres fichiers journaux /var/log/log_mg.ttyXX. En fait il se pourrait que ces messages apparaissent continuellement sur votre écran. Ennuyeux, non ? Pour éviter ces ennuis, chaque port série qui n'a pas de modem branché devrait avoir ses lignes respectives neutralisées par un commentaire dans les fichiers /etc/inittab et /etc/mgetty+sendfax/mgetty.config.

10.2 Étape 2 : installer PPP

...(s'il n'est pas installé) depuis le premier CD Red Hat 5.1

 

Si le premier CD Red Hat est correctement monté (voir l'étape 1), pour installer PPP tapez la commande suivante :


 # rpm -Uvh /mnt/cdrom/RedHat/RPMS/ppp*

 

Éditez le fichier /etc/ppp/options pour obtenir ce qui suit :


     -detach
     crtscts
     netmask 255.255.255.0
     asyncmap 0
     modem
     proxyarp

NOTES :
  1. Utilisez un netmask approprié pour votre réseau. Il n' a pas besoin d'être 255.255.255.0, en fait dans mon cas c'était 255.255.255.224.
  2. Lisez les pages man de "pppd" pour comprendre ces options.

 

Éditez le fichier /etc/ppp/ppplogin (créez-le s'il n'existe pas) pour arriver à :


     mesg n
     tty -echo
     /usr/sbin/pppd silent auth -chap +pap login

Rendez le fichier exécutable à l'aide de la commande :

     # chmod +x /etc/ppp/ppplogin

NOTE : nous allons utiliser l'authentification PAP, MAIS en utilisant le fichier ordinaire de mots de passe /etc/passwd. C'est ce que signifie "+pap login".

 

Pour chaque port série connecté à un modem, créez un fichier correspondant /etc/ppp/options.ttyXX, où "XX" est "S1" pour le port ttyS1, "S2" pour le port ttyS2, "S15" pour le port ttyS15, etc. Dans un tel fichier inscrivez la ligne suivante :


     myhost:ppp01

où "myhost" est le hostname du serveur PPP - changez le selon le hostname réel de votre poste Linux. Si vous oubliez plus que ce que vous admettez de vous SOUVENIR, rappelez-vous le hostname de votre serveur à l'aide de la commande "hostname".

     # hostname

Le mot "ppp01" utilisé ci-dessus est juste un nom choisi arbitrairement pour l'hôte virtuel associé avec une des lignes de dial-in PPP et son adresse IP respective telle que définie dans le fichier /etc/hosts (dont on discutera plus tard). Dans un autre fichier /etc/ppp/options.ttyXX, vous pourriez souhaiter taper la ligne suivante :

     myhost:ppp02

C'est à dire que vous définiriez ici un autre hostname PPP, "ppp02". Utilisez un hostname différent pour chaque port série. Vous pouvez choisir autant de noms que votre cht'it coeur le désire ! Ils ne doivent pas être ppp01, ppp02, ppp03, etc. Ils peuvent être "junkie", "newbie", "noname", qu'importe !

 

Éditez le fichier /etc/ppp/pap-secrets et ajoutez une ligne comme montré plus bas pour chaque adresse IP qu'il faudra assigner dynamiquement aux utilisateurs du dial-in PPP. Ceci, bien sûr, suppose que vous disposez d'un ensemble d'adresses IP que vous pouvez assignez à vos clients de dial-in :


     # Secrets for authentication using PAP
     # client   server          secret          IP addresses
     *          *               ""              10.0.0.3
     *          *               ""              10.0.0.4

C'est à dire : pas de jeux de secrets PAP (mots de passe) pour aucun client d'où que ce soit dans le monde avec l'adresse IP désignée. Nous n'avons pas besoin de secrets PAP quand nous utiliserons /etc/passwd à la place. Si vous n'êtes RÉELLEMENT pas parano, vous pouvez avoir juste une seule ligne comme ci-dessous qui servira toutes vos adresses IP (la votre et celles de vos voisins !) :

     # Secrets for authentication using PAP
     # client   server          secret          IP addresses
     *          *               ""              *       

 

Rendez le programme /usr/sbin/pppd setuid "root" à l'aide de la commande :


     # chmod u+s /usr/sbin/pppd

 

Éditez le fichier /etc/hosts pour assigner des adresses IP à tous les hostnames PPP que vous avez utilisés à l'étape 2.4. Utilisez l'ensemble d'adresses IP utilisées dans l'étape 2.5 :


     10.0.0.3   ppp01   ppp01.mydomain.com
     10.0.0.4   ppp02   ppp02.mydomain.com

NOTE : Remplacez "mydomain.com" par le nom de domaine effectif de votre serveur PPP. Juste au cas où vous seriez perdu, je suppose que votre serveur PPP est "myhost.mydomain.com".

10.3 Étape 3 : Installer les serveurs POP/IMAP

...(s'ils ne sont pas installés) depuis le premier CD Red Hat 5.1

 

Avec le premier CD Red Hat correctement monté, faites la commande suivante pour installer POP et IMAP :


     # rpm -Uvh /mnt/cdrom/RedHat/RPMS/imap*

 

Vérifiez le fichier /etc/inetd.conf pour voir si les services de ligne "pop-2", "pop-3", et "imap" sont tous activés (non commentés). Si ce n'est pas le cas, ôtez les commentaires (c'est à dire retirez le "#" du début). Si vous voulez seulement supporter les clients POP3, ne décommentez que la ligne "pop-3". Si POP2 et POP3 ne sont pas dans le fichier RPM "imap*", essayez de voir si vous avez un fichier RPM "ipop*" et utilisez-le à la place.

 

Activez les nouveaux service à l'aide de la commande :


     # kill -HUP `cat /var/run/inetd.pid`

10.4 Étape 4 : activer la transmission IP

 

Si vous utilisez le noyau Linux déjà compilé qui est livré avec Red Hat 5.1, il n'a pas normalement le support de la transmission IP (IP forwarding). Si vous compilez votre propre noyau Linux, vous devez activer l'option réseau "IP : forwarding/gatewaying" pendant la compilation. Pour se plier à la norme RFC, le processus de démarrage par défaut n'active pas la transmission IP. Activez la transmission IP en la fixant à "yes" dans le fichier /etc/sysconfig/network, comme ceci :


     FORWARD_IPV4=yes

 

Activez la transmission IP à l'aide de la commande :


     # echo "1" > /proc/net/ip_forward

ou relancez le système.

10.5 Étape 5 : testez le serveur

 

D'abord créez des utilisateurs (s'il n'y en a pas). Vous pouvez leur donner un répertoire personnel "/home/username" et un login shell "/bin/bash" si vous voulez qu'ils aient à la fois l'accès PPP et l'accès shell. Donnez-leur un répertoire personnel "/home/username" et un programme de login "/etc/ppp/ppplogin" si vous voulez qu'ils aient l'accès PPP mais pas d'accès shell. Il vaut mieux utiliser l'outil "usercfg" pour créer les nouveaux utilisateurs. Les entrées typiques du fichier /etc/passwd peuvent être comme suit :


     jodoe:tdgsHjBn/hkg.:509:509:John Doe:/home/jodoe:/bin/bash
     jadoe:t8j/MonJd9kxy:510:510:Jane Doe:/home/jadoe:/etc/ppp/ppplogin

Dans cet exemple, John Doe aura à la fois l'accès PPP et shell, cependant que Jane Doe aura seulement l'accès PPP. Si vous commencez à vous étonner que John Doe ait l'accès PPP, la réponse est dans la configuration /AutoPPP/ dans "mgetty" - c'est ce qui fait la magie. À chaque utilisateur qui appellera et parlera PPP, mgetty donnera le programme /etc/ppp/ppplogin

Donc, si John Doe appelle à l'aide de l'adaptateur dial-in de Windows 95 qui est réglé pour faire une connection PPP, mgetty donnera à John Doe l'accès PPP. S'il appelle avec n'importe quel autre logiciel de communication comme par exemple HyperTerminal, (sans négociation PPP), il obtiendra le shell login normal. Ceci ne se produira jamais pour Jane Doe. Elle sera toujours accueillie par le programme "/etc/ppp/ppplogin".

En fait "mgetty" vous autorise à utiliser les mêmes lignes modem pour plusieurs protocoles. Par exemple, les clients UUCP (si vous en avez) peuvent utiliser les mêmes lignes modem que vos clients PPP ! Bien sûr, il faut donner à vos clients UUCP un répertoire personnel "/var/spool/uucppublic" et le programme de login "/usr/sbin/uucico".

 

En admettant que vous avez un serveur web (Apache) déjà monté (c'est du gâteau de mettre en place Apache), utilisez un fureteur web, et un client e-mail (par exemple Eudora) sur un PC distant connecté à un modem et une ligne de téléphone. Si c'est un PC Windows 95/98, réglez l'adaptateur de dial-up en spécifiant l'adresse IP du serveur PPP en tant que passerelle, utilisez les adresses IP DNS correctes, et spécifiez que le serveur assignera une adresse IP automatiquement. Dans le client POP (par exemple Eudora), réglez l'hôte SMTP et POP à l'adresse IP du serveur PPP/POP.

Maintenant, appelez le serveur et attendez la connection. Testez votre accès web, l'envoi et la réception de mail POP. Si ça ne marche pas ... Quelque chose ne tourne pas rond quelque part ;-)

10.6 Références :

  1. PPP-HOWTO

  2. NET-3-HOWTO

  3. "Using Linux", Bill Ball, publié par Que (environ US$30 - fortement recommandé)

  4. la documentation mgetty

_______________________________________________________________________________

Copyright © 1999, Hassan O. Ali

Publié dans le numéro 36 de la Linux Gazette, janvier 1999

Adaptation française : Georges Khaznadar.


Page suivante Page précédente Table des matières