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.
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 !
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) :
ppp
pour lancer PPP sur
le serveur.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.
Vous avez besoin des programmes suivants :
pppd
correspondant à votre noyauppp
d automatiquement, mais je dois encore explorer un
peu ça.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.
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) !
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.
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
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 !