Avanti Indietro Indice

23. Dopo che la connessione è attiva: lo script /etc/ppp/ip-up

Una volta che la connessione PPP è attiva, pppd cerca il file /etc/ppp/ip-up. Se questo script esiste ed è eseguibile, il demone PPP lo esegue. Ciò permette di automatizzare qualsiasi comando di instradamento che possa risultare utile, e qualsiasi altra azione che si vuole avvenga ogni volta che la connessione PPP viene attivata.

Questo è semplicemente uno script shell e può fare qualsiasi cosa che uno script shell può fare (ovvero virtualmente qualsiasi cosa si vuole).

Per esempio, si può fare in modo che sendmail invii qualsiasi messaggio in attesa d'uscita nella coda di posta.

Similmente, si può inserire in ip-up il comando per collezionare (usando pop) qualsiasi email in attesa nel proprio ISP.

Ci sono delle restrizioni su /etc/ppp/ip-up:

23.1 Instradamenti speciali

Se si stanno connettendo due LAN, si dovranno impostare instradamenti specifici per le LAN 'straniere'. Questo è facile da fare usando lo script /etc/ppp/ip-up. La sola difficoltà nasce se la propria macchina gestisce più connessioni PPP.

Questo perché /etc/ppp/ip-up è eseguito per OGNUNA delle connessioni PPP che si fanno, e quindi è necessario far eseguire i comandi di instradamento corretti per la connessione particolare che si fa in quel momento, e solo in quel caso e non quando si fa un qualsiasi altro collegamento!

23.2 Gestione delle code di posta

Quando la connessione tra due LAN è attiva, ci si vorrà assicurare che le email in coda ad entrambi gli estremi siano scaricate (flushed), ovvero inviate a destinazione. Ciò è fatto aggiungendo la chiamata appostita a sendmail.

Si può fare usando il costrutto 'case' della bash su un parametro appropriato che pppd passa allo script. Ad esempio, questo è lo script /etc/ppp/ip-up che uso per gestire le nostre connessioni WAN e le connessioni alla mia Ethernet di casa (gestita sempre dallo stesso server PPP).

23.3 Un esempio di script /etc/ppp/ip-up

L'esempio che segue gestisce una varietà di usi tipici.


#!/bin/bash
#
# Script che gestisce le questioni di instradamento necessarie per
# pppd. Solo la connessione a Newman richiede questa gestione.
#
# Quando la connessione ppp è attiva, questo script viene chiamato con
# i seguenti parametri
#       $1      il nome dell'interfaccia usata da pppd (p.es. ppp3)
#       $2      il nome del dispositivo tty
#       $3      la velocità del dispositivo tty
#       $4      l'indirizzo IP locale per l'interfaccia
#       $5      l'indirizzo IP remoto
#       $6      il parametro specificato dall'opzione 'ipparam' di pppd
#
case "$5" in
# Gestisce gli instradamenti al server del Campus Newman
        202.12.126.1)
                /sbin/route add -net 202.12.126.0 gw 202.12.126.1
# e scarica la mail queue per spedire là le loro email il prima possibile!
                /usr/sbin/sendmail -q &
                ;;
        139.130.177.2)
# La nostra connessione ad Internet
# Quando la connessione è attiva, avvia il time server (se non è già
# attivo) e si sincronizza con il mondo
                if [ ! -f /var/lock/subsys/xntpd ]; then
                        /etc/rc.d/init.d/xntpd.init start &
                fi
# Avvia il news server (se non è già attivo)
                if [ ! -f /var/lock/subsys/news ]; then
                        /etc/rc.d/init.d/news start &
                fi
                ;;
        203.18.8.104)
# Spedisce la mail in attesa nella mia macchina non appena il link è
# attivo.
# Non è richiesto nessun instradamento in quanto la mia Ethernet di
# casa è gestita da un instradamento di IP masquerade e proxyarp.
                /usr/sbin/sendmail -q &
                ;;
        *)
esac
exit 0

Come risultato della connessione ppp al nostro Campus Newman e di questo script, si ottengono le seguenti voci nella tabella di routing (questa macchina è pure il nostro server PPP e gestisce le nostre connessioni a Internet -- ho aggiunto dei commenti nell'output per spiegare a cosa corrisponde ognuna delle voci):


[root@kepler /root]# route -n
Kernel routing table
Destination     Gateway         Genmask         Flags MSS    Window Use Iface
# l'instradamento HOST al nostro gateway Internet remoto
139.130.177.2   *               255.255.255.255 UH    1500   0      134 ppp4
# l'instradamento HOST al server del nostro campus Newman
202.12.126.1    *               255.255.255.255 UH    1500   0       82 ppp5
# l'instradamento HOST alla mia ethernet casalinga
203.18.8.104    *               255.255.255.255 UH    1500   0       74 ppp3
# due delle nostre linee PPP di dial up
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
# l'instradamento di rete specifico per la LAN del campus Newman
202.12.126.0    202.12.126.1    255.255.255.0   UG    1500   0        0 ppp5
# l'instradamento alla nostra Ethernet locale (una "super rete"
# formata da due reti di classe C adiacenti)
203.18.8.0      *               255.255.254.0   U     1500   0     1683 eth0
# l'instradamento al dispositivo di loop back
127.0.0.0       *               255.0.0.0       U     3584   0      483 lo
# l'instradamento predefinito a Internet
default         139.130.177.2   *               UG    1500   0     3633 ppp4

23.4 Gestione delle email

Il paragrafo precedente ha mostrato come gestire la posta in uscita, semplicemente svuotando la code delle mail una volta che la connessione è attiva.

Se si sta usando una connessione WAN, ci si può accordare con l'amministratore della LAN remota per fare esattamente le stesse cose. Per esempio, all'estremo del Campus Newman della nostra connessione WAN, lo script /etc/ppp/ip-up assomiglia a:


#!/bin/bash
#
# Script che gestisce le problematiche di instradamento come richiesto
# per dal pppd.
# Solo la connessione a Hedland necessita questa gestione.
#
# Quando la connessione ppp è attiva, questo script viene chiamato con
# i seguenti parametri
#       $1      il nome dell'interfaccia usata da pppd (p.es. ppp3)
#       $2      il nome del dispositivo tty
#       $3      la velocità del dispositivo tty
#       $4      l'indirizzo IP locale per l'interfaccia
#       $5      l'indirizzo IP remoto
#       $6      il parametro specificato dall'opzione 'ipparam' di pppd
#
case "$5" in
        203.18.8.4)
                /usr/sbin/sendmail -q
                ;;
        *)
esac
exit 0

Comunque se si il proprio ISP fornisce solamente un aconnessione PPP ad IP dinamico, è necessario scaricarsi la propria email dal proprio account nella macchina del provider. Ciò solitamente viene fatto usando il POP (Post Office Protocol). Questo processo può essere gestito usando il programma 'popclient', oltre allo script ip-up utile per automatizzare anche questo processo!

Si crei semplicemente uno script /etc/ppp/ip-up che contenga la chiamata appropriata di popclient. Per il mio portatile su cui è installata la Red Hat (e che mi porto dietro nei miei viaggi), uso:


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

Si può usare slurp o quant'altro per fare la stessa cosa per le news, e così via. Si ricordi che lo script ip-up è uno script bash standard e quindi può essere usato per automatizzare QUALSIASI cosa che dev'essere svolta ogni volta che una certa connessione PPP viene fatta.


Avanti Indietro Indice