<HTML> <HEAD> <TITLE>Configurer un serveur PPP </TITLE> </HEAD> <BODY> <A NAME="ppp-serveur"></A> <H1>26. <A NAME="s26"></A>Configurer un serveur PPP </H1> <P> <A HREF="PPP-HOWTO.html#toc26">Contenu de cette section</A></P> <P>Comme c'est mentionné plus haut, il y a des tas de façons de faire. Ce que je présente ici est la façon de faire une liaison tournante sur plusieurs lignes téléphoniques (avec une carte série multi-ports utilisant des Cyclades)</P> <P></P> <P>Si vous n'aimez pas la méthode présentée ici, faites donc comme vous préférez. J'aimerais toutefois ajouter des méthodes supplémentaires dans les prochaines versions de ce HOWTO. Envoyez donc moi comment vous faites !</P> <P></P> <P>Remarquez que cette section ne concerne que la configuration de Linux comme serveur PPP. Je ne compte absolument pas donner d'informations sur la façon de configurer des serveurs terminaux ou autre.</P> <P></P> <P>Même si, j'ai déjà expérimenté l'utilisation de shadow password (et l'utilise de temps en temps). Les informations présentées ici n'utiliserons toutefois pas ce mécanisme.</P> <P></P> <H2>26.1 <A NAME="ss26.1"></A> Compiler le noyau</H2> <P>Tous les commentaires précédent concernant la compilation du noyau et les versions du noyau et de <CODE>pppd</CODE> sont encore valables. Cette section considère que vous avez lu les sections précédentes du document !</P> <P></P> <P>Pour un serveur PPP, vous <B>DEVEZ</B> ajouter le support de IP forwarding dans votre noyau. Vous pouvez aussi inclure d'autres supports (comme le IP fire walls, accounting etc etc).</P> <P></P> <P>Si vous utilisez une carte série multi-port, vous devez bien entendu inclure également les pilotes nécessaires dans le noyau !</P> <P></P> <H2>26.2 <A NAME="ss26.2"></A> Présentation du système de serveur</H2> <P>Nous offrons des comptes PPP (ou SLIP) et des comptes shell en utilisant les mêmes paires nom utilisateur/ mot de passe. Cela permet (pour nous) que les utilisateurs n'aient qu'un seul compte qu'ils peuvent utiliser pour toutes les connexions.</P> <P></P> <P>Comme nous sommes une organisation éducative, nous ne faisons pas payer le personnel ni les étudiants pour leur accès, et nous n'avons donc pas besoin de nous inquiéter des problèmes de payement.</P> <P></P> <P>Un firewall existe entre notre site et Internet, et cela limite les accès des utilisateurs puisque les lignes d'appels sont sur notre firewall Internet (pour certaines raisons évidentes, le détails des autres firewalls internes ne sera pas présenté ici et serait de toute façon inutile)</P> <P></P> <P>Le processus avec lequel un utilisateur établit une liaison PPP avec notre site (une fois qu'ils ont un compte bien sûr) : <UL> <LI>Appeler notre ligne d'appel groupé (qui est un numéro de téléphone qui se connecte sur une banque de modems - le premier modem libre est utilisé).</LI> <LI>Connexion avec une paire valide de nom utilisateur et mot de passe</LI> <LI>Au prompt du shell, lancement de la commande <CODE>ppp</CODE> pour lancer PPP sur le serveur.</LI> <LI>Démarrer PPP sur le PC (il peut utiliser Windows, DOS, Linux, MAC OS ou n'importe quoi d'autre - ce n'est pas un problème).</LI> </UL> </P> <P></P> <P>Le serveur utilise un fichier <CODE>/etc/ppp/options.ttyXX</CODE> individuel pour chacune des connexions sur le port où est configuré l'adresse IP distante pour l'allocation des adresses IP dynamiques. Le serveur utilisateur route les clients avec proxyarp (configuré avec l'option appropriée de pppd). Cela oblige la présence de routed ou gated.</P> <P></P> <P>Quand l'utilisateur raccroche de son coté, <CODE>pppd</CODE> le détecte et indique au modem de raccrocher, fermant en même temps la liaison PPP.</P> <P></P> <H2>26.3 <A NAME="ss26.3"></A> Faire marcher les programmes tous ensemble</H2> <P>Vous avez besoin des programmes suivants : <UL> <LI>Linux, correctement compilé avec les options nécessaires</LI> <LI>La version de <CODE>pppd</CODE> correspondant à votre noyau</LI> <LI>Un programme 'getty' qui décroche intelligemment les communications par modem. <BR> Nous utilisons getty_ps2.0.7h, mais mgetty est aussi bien. Je sais que mgetty peut s'apercevoir qu'un appel utiliser PAP/CHAP (PAP est le standard pour Windows 95) et invoquer <CODE>ppp</CODE>d automatiquement, mais je dois encore explorer un peu ça.</LI> <LI>Un serveur de nom (DNS) fonctionnel qui est accessible pour les utilisateurs qui se connectent.</LI> </UL> </P> <P></P> <P><B>Ce howto ne couvre pas sa configuration. Regardez la documentation de getty de votre choix ou le serial HOWTO pour plus d'informations sur le sujet.</B></P> <P></P> <H2>26.4 <A NAME="ss26.4"></A> Configurer les fichiers d'options</H2> <P>Vous avez besoin de configurer la totalité de <CODE>/etc/ppp/options</CODE> avec les options standard pour les ports d'appel. Les options utiles sont :</P> <P> <HR> <PRE> asyncmap 0 netmask 255.255.254.0 proxyarp lock crtscts modem </PRE> <HR> </P> <P></P> <P>Remarque - nous n'utilisons AUCUN routage (direct) - et en particulier il n'y a pas d'option defaultroute. La raison de cela est que tout ce dont vous avez besoin (en tant que serveur PPP) à l'endroit où router les paquets <B>venant</B> du client ppp vers votre réseau local ou Internet et de router les paquets <B>vers</B> le client ppp qui viennent du votre réseau local ou d'Internet.</P> <P></P> <P>Tout ce dont vous avez besoin est la route hôte de la machine client et l'utilisation de l'option 'proxyarp' de pppd.</P> <P></P> <P>L'option 'proxyarp' configure (surprise) une entrée proxy ARP dans la table ARP du serveur qui signifie en substance 'envoie moi tous les paquets destinés au client'. C'est la manière la plus simple de configurer le routage vers un client PPP unique - mais elle ne peut être utilisé pour le routage entre deux réseaux locaux - vous devez alors utiliser les routes réseau réelles qui ne pourront pas utiliser le proxy ARP.</P> <P></P> <P>Vous devez certainement avoir envie de fournir des adresses IP dynamiques aux utilisateurs qui se connectent. Vous pouvez le faire en associant une adresse IP dynamique sur chaque port d'appel. Créez alors pour chaque port d'appel un <CODE>/etc/ppp/options.ttyXX</CODE>.</P> <P></P> <P>Dedans, mettez simplement l'adresse IP locale du serveur et l'adresse IP qui doit être utilisé pour ce port. Par exemple </P> <P> <HR> <PRE> kepler:slip01 </PRE> <HR> </P> <P>Remarquez en particulier que vous pouvez utiliser les noms d'hôtes valides dans ce fichier (je trouve que c'est la seule façon de se souvenir des adresses IP des machines importantes de mon réseau, les noms sont bien plus significatifs) !</P> <P></P> <H2>26.5 <A NAME="ss26.5"></A> Configurer pppd pour permettre aux utilisateurs de le lancer</H2> <P>Comme configurer une liaison ppp implique de configurer un périphérique dans le noyau (une interface réseau) et de manipuler les tables de routage, des privilèges spéciaux sont nécessaires - en fait la totalité des privilèges root.</P> <P></P> <P>Heureusement, <CODE>pppd</CODE> est prévu pour marcher correctement avec set uid root. Vous devez donc <HR> <PRE> chmod u+s /usr/sbin/pppd </PRE> <HR> </P> <P></P> <P>Quand vous listez le fichier, il doit apparaître comme cela <HR> <PRE> -rwsr-xr-x 1 root root 74224 Apr 28 07:17 /usr/sbin/pppd </PRE> <HR> </P> <P></P> <P>Si vous n'avez pas ça, vous ne pourrez pas utiliser votre liaison ppp.</P> <P></P> <H2>26.6 <A NAME="ss26.6"></A> Créer un alias global pour pppd</H2> <P>Pour simplifier les choses pour les utilisateurs de notre connexion PPP, nous créerons un alias global (dans /etc/bashrc) qui est en fait une simple commande qui lancera ppp sur le serveur dès qu'ils seront connectés.</P> <P></P> <P>Cela nous donne <HR> <PRE> alias ppp="exec /usr/sbin/pppd -detach" </PRE> <HR> </P> <P></P> <P>Et il fait ceci <UL> <LI>exec : va remplacer le programme en cours (dans le cas d'un shell) par le programme qui va être lancé.</LI> <LI>pppd -detach : lance <CODE>pppd</CODE> et le laisse pas en tâche de fond. Cela assure que <CODE>pppd</CODE> existe et qu'il n'y a pas d'autres processus qui traînent.</LI> </UL> </P> <P>Quand un utilisateur se connecte comme cela, il va apparaître après un 'w' <HR> <PRE> 6:24pm up 3 days, 7:00, 4 users, load average: 0.05, 0.03, 0.00 User tty login@ idle JCPU PCPU what hartr ttyC0 3:05am 9:14 - </PRE> <HR> </P> <P></P> <P>Et c'est tout... Je vous avais dit que c'était simple un serveur PPP de base !</P> <P></P> <HR> <P> Chapitre <A HREF="PPP-HOWTO-27.html">suivant</A>, Chapitre <A HREF="PPP-HOWTO-25.html">Précédent</A> <P> Table des matières de <A HREF="PPP-HOWTO.html#toc26">ce chapitre</A>, <A HREF="PPP-HOWTO.html#toc">Table des matières</A> générale</P> <P> <A HREF="PPP-HOWTO.html">Début</A> du document, <A HREF="#0"> Début de ce chapitre</A></P> </BODY> </HTML>