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

23. Une fois que la connexion fonctionne - le script /etc/ppp/ip-up

Une fois que la connexion est établie, pppd cherche un /etc/ppp/ip-up. Si ce script existe et est exécutable, le daemon PPP le lance. Cela permet d'automatiser des commandes de routages spéciales qui peuvent être nécessaires et toutes les autres actions que vous souhaitez lancer une fois que la liaison PPP est activée.

C'est un simple script shell qui fait uniquement ce qu'un script shell peut faire (en fait quasiment tout ce que vous voulez).

Par exemple, vous pouvez demander à sendmail d'envoyer les messages en attentes.

Il y a quelques restrictions avec /etc/ppp/ip-up:

  • Il fonctionne délibéremment dans un environnement réduit pour augmenter la sécurité. Cela signifie que vous devez donner le chemin complet des exécutables.
  • Techniquement, /etc/ppp/ip-up est un programme et non un script. Cela signifie qu'il ne peut pas être exécuté directement - même si il a besoin du (#!/bin/bash) magique au début de la première ligne et qu'il doit être lisible est exécutable par root.

23.1 Routages spéciaux

Si vous reliez deux réseaux locaux, vous devez configurer des routes spécifiques vers le réseau 'étranger'. Le script /etc/ppp/ip-up peut le faire facilement. La seule difficulté est lorsque votre machine supporte plusieurs liaisons PPP.

/etc/ppp/ip-up est utilisé à chaque lancement de ppp, vous devez donc être extrêmement vigilant d'exécuter les commandes de routage correctes pour la liaison qui démarre - et non lorsque n'importe quelle liaison démarre !

23.2 Support du courrier électronique en attente

Lorsqu'une liaison entre deux réseaux locaux démarre, vous voudriez vous assurez que le courrier en attente de chaque coté de la liaison est bien envoyé à son destinataire. Cela est possible en ajoutant un appel correct à sendmail.

Utiliser la commande case du bash sur le bon paramètre que passe pppd au script permet cela. Par exemple, voici un script /etc/ppp/ip-up que j'utilise pour mes liaisons entre l'entreprise et chez mon réseau Ethernet (également connecté au même serveur ppp).

23.3 Un exemple de script /etc/ppp/ip-up

Le script suivant permet de nombreuses utilisations.


#!/bin/bash
#
# Script permettant de supporter les possiblites de routages necessaires a pppd
# Seule la liaison vers Newman necessite ce support.
#
# Quand la liaison ppp demarre, ce script est appele avec les parmetres
# suivants
#       $1      le nom de l'interface utilisee par pppd (c.-a-d. ppp3)
#       $2      le nom du peripherique tty
#       $3      la vitesse du peripherique tty
#       $4      l'adresse IP locale de l'interface
#       $5      l'adresse  IP distante
#       $6      le parametre specifie par l'option 'ipparam' a pppd
#
case "$5" in
# Supporte le routage vers le serveur du Newman Campus
 202.12.126.1)
 /sbin/route add -net 202.12.126.0 gw 202.12.126.1
# et envoie les courriers en attente la-bas !
 /usr/sbin/sendmail -q &
 ;;
 139.130.177.2)
# Notre liaison Internet
# Lorsque notre liaison est lancee, demarre le serveur de temps et
# se synchronise avec le monde si il n'a pas encore bouge.
 if [ ! -f /var/lock/subsys/xntpd ]; then
 /etc/rc.d/init.d/xntpd.init start &
 fi
# Demarre le serveur de news (si il ne marche pas encore)
 if [ ! -f /var/lock/subsys/news ]; then
 /etc/rc.d/init.d/news start &
 fi
 ;;
 203.18.8.104)
# Recupere le courrier electronique sur ma machine tant que la liaison
# fonctionne. Aucun routage n'est necessaire tant que mon reseau local
# Ethernet supporte IP masquerade et le routages proxyarp.
 /usr/sbin/sendmail -q &
 ;;
 *)
esac
exit 0

Le résultat du lancement de la liaison PPP vers notre campus Newman et le démarrage de ce script, détermine les entrées de la table de routage (cette machine est aussi notre serveur PPP général ET supporte nos liaisons Internet). J'ai ajouté des commentaires sur la sortie pour expliquer a quoi correspond chaque entrée) :


[root@kepler /root]# route -n
Kernel routing table
Destination     Gateway         Genmask         Flags MSS    Window Use Iface
# la route de l'HOTE de notre gateway internet
139.130.177.2   *               255.255.255.255 UH    1500   0      134 ppp4
# la route de l'HOTE vers le serveur Newman campus
202.12.126.1    *               255.255.255.255 UH    1500   0       82 ppp5
# la route de l'HOTE de mon réseau local ethernet
203.18.8.104    *               255.255.255.255 UH    1500   0       74 ppp3
# deux des lignes générales PPP
203.18.8.64     *               255.255.255.255 UH    552    0        0 ppp2
203.18.8.62     *               255.255.255.255 UH    552    0        1 ppp1
# la route réseau specifique vers le réseau Newman campus
202.12.126.0    202.12.126.1    255.255.255.0   UG    1500   0        0 ppp5
# la route de notre réseau local Ethernet (super-netting two adjacent C classes)
203.18.8.0      *               255.255.254.0   U     1500   0     1683 eth0
# la route vers le périphérique loop back
127.0.0.0       *               255.0.0.0       U     3584   0      483 lo
# la route par défaut vers Internet
default         139.130.177.2   *               UG    1500   0     3633 ppp4

23.4 Support du courrier électronique

La section précédente montrait comment supporter le mail sortant - en envoyant simplement le courrier lorsque la liaison démarrait.

Si vous utilisez une liaison pour un réseau large, vous pouvez vous arranger avec l'administrateur réseau du site distant pour qu'il fasse exactement la même chose. Par exemple, à l'autre bout de la liaison au Newman Campus, le script /etc/ppp/ip-up ressemble à :


#!/bin/bash
#
# Script permettant de supporter les possiblites de routages necessaires a pppd
# Seule la liaison vers Hedland necessite ce support.
#
# Quand la liaison ppp demarre, ce script est appele avec les parmetres
# suivants
#       $1      le nom de l'interface utilisee par pppd (c.-a-d. ppp3)
#       $2      le nom du peripherique tty
#       $3      la vitesse du peripherique tty
#       $4      l'adresse IP locale de l'interface
#       $5      l'adresse  IP distante
#       $6      le parametre specifie par l'option 'ipparam' a pppd
#
case "$5" in
 203.18.8.4)
 /usr/sbin/sendmail -q
 ;;
 *)
esac
exit 0

Si toutefois, vous n'avez qu'une adresse IP dynamique chez votre FAI, vous devrez recevoir votre courrier sur le compte de votre fournisseur d'accès. Cela est généralement possible en utilisant POP (Post Office Protocol). Ce processus peut être supporté avec le programme 'popclient" - le script ip-up peut automatiser le processus pour vous !

Créez simplement un script /etc/ppp/ip-up qui contient un appel correct à popclient. Pour mon portable avec la RedHat Linux (que je prends lorsque je voyage), j'ai


popclient -3 -c -u hartr -p <password> kepler.hedland.edu.au |formail -s procmail

Vous pouvez aussi utiliser slurp en quelque chose d'autre d'identique pour les news, et d'autres trucs. Souvenez vous que le script ip-up est un script bash standard et qui peut servir à automatiser TOUTES les fonctions que vous devez accomplir chaque fois qu'une liaison PPP correspondante démarre.


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