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

26. Configurer un serveur PPP

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)

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 !

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.

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.

26.1 Compiler le noyau

Tous les commentaires précédent concernant la compilation du noyau et les versions du noyau et de pppd sont encore valables. Cette section considère que vous avez lu les sections précédentes du document !

Pour un serveur PPP, vous DEVEZ ajouter le support de IP forwarding dans votre noyau. Vous pouvez aussi inclure d'autres supports (comme le IP fire walls, accounting etc etc).

Si vous utilisez une carte série multi-port, vous devez bien entendu inclure également les pilotes nécessaires dans le noyau !

26.2 Présentation du système de serveur

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.

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.

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)

Le processus avec lequel un utilisateur établit une liaison PPP avec notre site (une fois qu'ils ont un compte bien sûr) :

  • 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é).
  • Connexion avec une paire valide de nom utilisateur et mot de passe
  • Au prompt du shell, lancement de la commande ppp pour lancer PPP sur le serveur.
  • 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).

Le serveur utilise un fichier /etc/ppp/options.ttyXX 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.

Quand l'utilisateur raccroche de son coté, pppd le détecte et indique au modem de raccrocher, fermant en même temps la liaison PPP.

26.3 Faire marcher les programmes tous ensemble

Vous avez besoin des programmes suivants :

  • Linux, correctement compilé avec les options nécessaires
  • La version de pppd correspondant à votre noyau
  • Un programme 'getty' qui décroche intelligemment les communications par modem.
    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 pppd automatiquement, mais je dois encore explorer un peu ça.
  • Un serveur de nom (DNS) fonctionnel qui est accessible pour les utilisateurs qui se connectent.

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.

26.4 Configurer les fichiers d'options

Vous avez besoin de configurer la totalité de /etc/ppp/options avec les options standard pour les ports d'appel. Les options utiles sont :


asyncmap 0
netmask 255.255.254.0
proxyarp
lock
crtscts
modem

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 venant du client ppp vers votre réseau local ou Internet et de router les paquets vers le client ppp qui viennent du votre réseau local ou d'Internet.

Tout ce dont vous avez besoin est la route hôte de la machine client et l'utilisation de l'option 'proxyarp' de pppd.

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.

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 /etc/ppp/options.ttyXX.

Dedans, mettez simplement l'adresse IP locale du serveur et l'adresse IP qui doit être utilisé pour ce port. Par exemple


kepler:slip01

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) !

26.5 Configurer pppd pour permettre aux utilisateurs de le lancer

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.

Heureusement, pppd est prévu pour marcher correctement avec set uid root. Vous devez donc


chmod u+s /usr/sbin/pppd

Quand vous listez le fichier, il doit apparaître comme cela


-rwsr-xr-x   1 root     root        74224 Apr 28 07:17 /usr/sbin/pppd

Si vous n'avez pas ça, vous ne pourrez pas utiliser votre liaison ppp.

26.6 Créer un alias global pour pppd

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.

Cela nous donne


alias ppp="exec /usr/sbin/pppd -detach"

Et il fait ceci

  • exec : va remplacer le programme en cours (dans le cas d'un shell) par le programme qui va être lancé.
  • pppd -detach : lance pppd et le laisse pas en tâche de fond. Cela assure que pppd existe et qu'il n'y a pas d'autres processus qui traînent.

Quand un utilisateur se connecte comme cela, il va apparaître après un 'w'


 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                -

Et c'est tout... Je vous avais dit que c'était simple un serveur PPP de base !


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