/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
:
/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.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 !
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).
/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
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.