/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
:
/etc/ppp/ip-up
è un programma non
uno script. Ciò significa che può essere eseguito direttamemente, e
quindi richiede il file magic standard (#!/bin/bash
)
all'inizio della prima riga e dev'essere leggibile ed eseguibile da
root.
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!
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).
/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
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.