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).
...(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 :
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.
...(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 :
É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".
...(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`
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.
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 ;-)
_______________________________________________________________________________
Copyright © 1999, Hassan O. Ali
Publié dans le numéro 36 de la Linux Gazette, janvier 1999
Adaptation française : Georges Khaznadar.