. La tendenza è di revisionare
abbastanza regolarmente gli HOWTO.
Sebbene si possa usare questo documento per creare la propria
connessione PPP senza leggere nessuno dei suddetti documenti, se li si
legge si capirà molto di più di quello che si andrà a fare! Si sarà
inoltre in grado di risolvere da soli i problemi (o almeno si porranno
domande un pelino più intelligenti nei newsgroup comp.os.linux.* e
nelle mailing list di Linux).
Questi documenti (oltre ad altri, tra cui gli RFC sull'argomento)
forniscono spiegazioni aggiuntive e più dettagliate di quanto possa
offrire questo HOWTO.
Se si connette una LAN ad Internet usando PPP, si avrà bisogno di una
ragionevole conoscenza sul networking TCP/IP. In aggiunta ai suddetti
documenti, un notevole beneficio lo si potrà trarre dai libri della O'Reilly
&dquot; TCP/IP Network Administration&dquot; e
&dquot; Building Internet Firewalls&dquot; !
Utili mailing list su Linux
Ci sono molte mailing list su Linux che operano come mezzo di
comunicazione tra gli utenti con diversi livelli di abilità. In ogni
modo si sottoscrivano quelle che più interessano e si collabori
fornendo la propria esperienza e visione della cosa.
Ciò non è perché gli utenti guru odino i nuovi utenti, ma perché
queste liste esistono per discutere argomenti particolari a particolari
livelli di difficoltà.
Ad ogni modo si sottoscrivano le liste aperte, ma si mantengono i
propri commenti su argomenti inerenti alla lista!
Un buon punto di partenza per le mailing list su Linux è
Panoramica di quello che va fatto per usare come client il PPP
Questo documento contiene un sacco di informazioni che aumentano ad
ogni versione dello stesso!
Di conseguenza, questo paragrafo intende fornire una concisa
panoramica delle azioni da fare per far sì che il proprio sistema
Linux possa connettersi come client ad un server PPP.
Trovare/installare il software
Se la propria distribuzione Linux non contiene il software per il PPP,
lo si può scaricare da .
Al momento questa è l'ultima versione ufficiale. Comunque, si scelga
l'ultima versione disponibile da questo sito (ppp-2.3 era in versione
beta quando stavo scrivendo questo documento e dovrebbe essere
rilasciato tra poco).
Il pacchetto PPP contiene le istruzioni su come compilare ed
installare il software, Compilare il supporto per il PPP nel kernel
Il PPP in Linux si compone di due parti
- il demone PPP menzionato prima
- il supporto per il PPP nel kernel
Molte distribuzioni forniscono di default il supporto a livello kernel
per il PPP nei loro kernel di installazione, ma altre non lo fanno.
Se al boot il proprio kernel mostra un messaggio simile a
PPP Dynamic channel allocation code copyright 1995 Caldera, Inc.
PPP line discipline registered.
il proprio kernel ha il supporto per il PPP compilato al suo interno.
Detto questo, probabilmente si vorrà comunque compilare il proprio
kernel qualsiasi sia la propria distribuzione, in modo da ottenerne uno
che usi in modo più efficiente le risorse del sistema data la propria
configurazione hardware. Non è male ricordare che il kernel deve
risiedere completamente in memoria principale (non può mai essere
swappato fuori da essa) e quindi mantenere il kernel più piccolo
possibile può essere solo un vantaggio nelle macchine con poca
memoria.
Questo documento fornisce le istruzioni essenziali per ricompilare
il kernel nel paragrafo [.
]
Per maggiori dettagli, si veda il Kernel-HOWTO a
Informazioni da chiedere al proprio ISP
Il server PPP può essere configurato in un'infinità di modi. Per
potersi connettere al proprio ISP (o al server PPP della propria
organizzazione per accedere alla propria intranet), si debbono
ottenere un po' di informazioni sul funzionamento del server PPP.
Poiché si sta usando Linux, si possono incontrare alcune difficoltà
con il supporto utenti di alcuni ISP (e del server PPP per la intranet al
lavoro) che sono a conoscenza solo di client MS Windows.
Comunque, un numero sempre crescente di ISP usano Linux per fornire il
loro servizio - e Linux sta penetrando pure nell'ambiente aziendale,
perciò, se si è fortunati non si incotreranno resistenze.
Il paragrafo [ dirà quello che si deve sapere sul server
PPP al quale ci si vuole connettere e come trovare le informazioni
che si debbono conoscere.
]Configurare il proprio modem e la porta seriale
Per potersi connettere ad un server PPP e ottenere la velocità di
trasferimento migliore possibile, si deve configurare correttamente il
proprio modem.
Similmente, si devono configurare correttamente le porte seriali sui
propri modem e sul computer.
Il paragrafo [ fornisce informazioni in proposito.
]Configurare la risoluzione da nome a indirizzo (DNS)
Oltre ai file che lanciano PPP ed effettuano il login automatico nel
server PPP, c'è un certo numero di file di configurazione che devono
essere impostati per permettere al proprio computer di risolvere
(``convertire'') nomi come
/etc/resolv.conf
/etc/host.conf
Si veda il paragrafo [ per i dettagli.
]
In particolare, PPP e Privilegi di root
Lo stabilire un collegamento PPP tra la propria macchina Linux ed
un altro server PPP richiede la manipolazione dei dispositivi di rete
(``network device'') (l'interfaccia PPP è un'interfaccia di rete) e
della tabella di instradamento del kernel (``kernel routing table''),
e quindi pppd necessita dei privilegi di root.
Per i dettagli si veda la sezione [.
]Verificare i File del PPP della propria distribuzione e impostare le Opzioni del PPP
Ci sono alcuni file di configurazione che debbono essere impostati per
rendere operativo il PPP. Nella distribuzione di PPP ci sono alcuni
esempi e questo paragrafo mostra quali file si dovrebbe avere:
/etc/ppp/options
/etc/ppp/scripts/ppp-on
/etc/ppp/scripts/ppp-on-dialer
/etc/ppp/options.tpl
Può essere necessario creare alcuni altri file a seconda di cosa
esattamente si ha intenzione di fare con PPP:
/etc/ppp/options.ttyXX
/etc/ppp/ip-up
/etc/ppp/pap-secrets
/etc/ppp/chap-secrets
Inoltre, il demone PPP può usare un numero enorme di opzioni in riga
di comando ed è importante usare quelle giuste; questa sezione quindi
fa una panoramica sulle opzioni standard del PPP e aiuta nella scelta
delle opzioni che andrebbero usate.
Per i dettagli si veda [.
]Se il proprio server PPP usa PAP (Password Authentication Protocol)
Molti server PPP di ISP ed aziende usano PAP. Se il proprio server
Invece di fare il login nel server usando il nome utente e la password
quando richieste per entrare nel server, un server PPP che usa PAP non
richiede un login in modo testo.
Le informazioni per l'autentificazione dell'utente vengono piuttosto
scambiante come parte del protocollo di controllo di connessione (``link
control protocol'' - LCP) che costituisce la prima parte
dell'instaurazione del collegamento PPP.
Il paragrafo [ fornisce informazioni sui file da
impostare per stabilire una connessione PPP usando PAP.
]Connettersi a mano a un server PPP
Dopo aver impostato i file di base, è una buona idea verificarli
connettendosi a mano (usando minicom o seyon) e lanciando pppd sulla
propria macchina Linux.
Si veda la sezione [ per tutti i dettagli.
]Automatizzare la propria connessione PPP
Una volta in grado di connettersi a mano, ci si può concentrare sulla
creazione di un insieme di script che automatizzeranno l'instaurazione
della connessione.
La sezione [ copre la
configurazione degli script necessari, concentrandosi particolarmente
su ]
Questa sezione discute gli script per l'autentificazione con nome
utente e password così come gli script per i server con
autentificazione PAP/CHAP.
Chiudere la connessione
Una volta che la connessione è stabilita e funzionante, si deve essere
in grado di deattivarla.
Ciò è spiegato nel paragrafo [.
]Se ci sono problemi
Molti hanno problemi a far funzionare direttamente il PPP. Le
variazioni nei server PPP e in come questi richiedono sia configurata
la connessione sono enormi. Similmente, ci sono molte opzioni per PPP
e addirittura alcune combinazioni di queste non funzionano assieme.
Oltre ai problemi di login e avvio del servizio PPP, ci sono problemi
sia con i modem che con le linee telefoniche!
Il paragrafo [
fornisce alcune informazioni basilari sugli errori comuni, e su come
isolarli e correggerli.
]
Lo scopo di tale paragrafo altro Dopo che la connessione è stabilita
Una volta che la connessione PPP è operativa (precisamente, almeno il
livello IP è operativo), il PPP di Linux può eseguire automaticamente
uno script (come root) per effettuare
Il paragrafo [
fornisce informazioni sullo script
]/etc/ppp/ip-up , i parametri che riceve da PPP e su come usarlo
per fare operazioni come scaricare la posta dal proprio provider, spedire
qualsiasi email nella coda di attesa di trasmissione nella propria
macchina e così via.
Problemi con i servizi IP standard su una connessione PPP a numero IP dinamico
Come notato nell'introduzione, i numeri IP dinamici hanno conseguenze
sulla capacità del proprio PC Linux di funzionare come server in
Internet.
Il paragrafo [ fornisce
informazioni sui (principali) servizi che ne risentono e su cosa si
può fare (se qualcosa è possibile) per ovviare a questi problemi.
]Configurare il proprio kernel di Linux
Per poter usare PPP, il proprio kernel di Linux dev'essere compilato
includendone il supporto. Ci si procuri il codice sorgente del kernel
di Linux se già non lo si ha - dovrebbe essere il
/usr/src/linux in un file system standard di Linux.
Si dia un'occhiata a questa directory - molte distribuzioni di Linux
installano l'albero dei sorgenti (i file e le sottodirectory) durante
il processo di installazione.
Al boot, il proprio kernel di Linux mostra svariate informazioni. Tra
queste ci sono anche quelle sul PPP, se il kernel ne include il supporto.
Per vedere queste informazioni, si veda il file di log del proprio
sistema o si usi
PPP Dynamic channel allocation code copyright 1995 Caldera, Inc.
PPP line discipline registered.
(questa è per la serie 2.0.x di kernel di Linux).
I sorgenti del kernel di Linux possono essere reperiti via ftp da
Installare i sorgenti del kernel di Linux
Quanto segue sono le istruzioni in breve per procurarsi ed installare
i sorgenti del kernel di Linux. Informazioni più complete le si può
trovare nel .
Per poter installare e compilare il kernel di Linux, si deve essere
loggati come root.
- Passare alla directory
/usr/src
cd /usr/src
- Controllare in
/usr/src/linux se già ci sono installati
i sorgenti.
- Se non si hanno i sorgenti, li si prenda dalla
o nel mirror più vicino.
Se si cerca una delle prime versione del kernel (come la 1.2.X),
queste sono conservate nella .
- Si scelga il kernel appropriato, solitamente il più recente fra
quelli disponibili nel sito. Lo si scarichi e si metta il file tar
dei sorgenti in
/usr/src .
Se già si hanno i sorgenti di Linux installati si debbono
rimuovere i vecchi sorgenti. Si usi il comando
rm -rf /usr/src/linux
- Ora si decomprimano e si estraggano i sorgenti usando il comando
tar xzf linux-2.0.XX.tar.gz
- Adesso, si faccia
cd /usr/src/linux e si legga il file
README. Questi contiene un'eccellente spiegazione su come configurare
e compilare un nuovo kernel. Lo si legga (può essere una buona idea
stamparlo per averne una copia sotto mano durante la compilazione, finché
non la si è fatta abbastanza volte da conoscerne ogni minimo
dettaglio).
Riconoscere il proprio hardware
Se si ha intenzione di ricompilare il kernel si Compilazione del kernel -- il kernel di Linux 1.2.13
Per iniziare il processo di configurazione, si seguano le istruzione
nel file README installato con i sorgenti. La configurazione viene
avviata con
make config
Per poter usare PPP, si deve configurare il kernel per includere il
supporto per il PPP (PPP ha bisogno sia di pppd sia del supporto nel
kernel).
PPP (point-to-point) support (CONFIG_PPP) [n] y
Si risponda alle altre domande del make config a seconda dell'hardware
nel proprio PC e delle caratteristiche che si vogliono dal sistema
operativo Linux. Si continui poi nella lettura del README per
compilare ed installare il nuovo kernel.
Il kernel 1.2.13 crea solo 4 device PPP. Nel caso si possieda una
scheda seriale multiporta, ci sarà bisogno di modificare i sorgenti
del PPP nel kernel per avere più porte (si veda il file README.linux
distribuito assieme al PPP-2.1.2 per maggiori dettagli sulle semplici
modifiche da fare).
Nota: il processo di configurazione dell'1.2.13 NON permettere di
tornare indietro -- se si fa un'errore rispondendo ad una domanda
durante il dialogo con Compilazione del kernel -- i kernel di Linux 1.3.x e 2.0.x
Per Linux 1.3.x e 2.0.x, si può usare un processo simile a quello di
Linux 1.2.13. Ancora, si seguano le istruzioni del file README
installato con i sorgenti. Il processo di configurazione si avvia con
make config
Comunque, c'è anche la possibilità di usare
make menuconfig
Ciò fornisce un sistema di configurazione a menu con un help in
linea che permette di spostarsi avanti e indietro nel processo di
configurazione.
Esiste inoltre un'interfaccia di configurazione altamente consigliata
che gira in X Window
make xconfig
Il supporto per il PPP può essere compilato direttamente dentro al
kernel oppure come modulo.
Se quando la propria macchina Linux è operativa, si usa PPP solo per
brevi periodi, allora si raccomanda di compilare il supporto per il
PPP come modulo. Usando 'kerneld' il proprio kernel caricherà
automaticamente i moduli richiesti per fornire il supporto per il PPP
quando si lancia il processo di connessione con PPP. Ciò fa
risparmiare porzioni importanti di memoria: nessuna parte del kernel
può essere messa in swap, ma i moduli caricabili sono automaticamente
rimossi se non sono in uso.
Per far ciò si deve abilitare il supporto per i moduli caricabili:
Enable loadable module support (CONFIG_MODULES) [Y/n/?] y
Per aggiungere il supporto nel kernel per il PPP, si risponda alla
seguente domanda:
PPP (point-to-point) support (CONFIG_PPP) [M/n/y/?]
Per il modulo caricabile del PPP, si risponda
Diversamente dal kernel 1.2.13, il kernel 2.0.x crea device PPP al
volo quando sono necessari e non c'è più bisogno di modificare i
sorgenti per incrementare il numero di dispositivi PPP disponibili.
Nota su PPP-2.2 e /proc/net/dev
Se si usa PPP-2.2, si scoprirà che un effetto collaterale nella
creazione al volo dei dispositivi PPP è che nessun dispositivo viene
mostrato nel file system /proc/net finché il dispositivo non
è creato lanciando pppd:
[hartr@archenland hartr]$ cat /proc/net/dev
Inter-| Receive | Transmit
face |packets errs drop fifo frame|packets errs drop fifo colls carrier
lo: 92792 0 0 0 0 92792 0 0 0 0 0
eth0: 621737 13 13 0 23 501621 0 0 0 1309 0
Una volta avviati uno (o più) servizi ppp, si vedranno delle voci così
(da un server ppp):
[root@kepler /root]# cat /proc/net/dev
Inter-| Receive | Transmit
face |packets errs drop fifo frame|packets errs drop fifo colls carrier
lo: 428021 0 0 0 0 428021 0 0 0 0 0
eth0:4788257 648 648 319 650 1423836 0 0 0 4623 5
ppp0: 2103 3 3 0 0 2017 0 0 0 0 0
ppp1: 10008 0 0 0 0 8782 0 0 0 0 0
ppp2: 305 0 0 0 0 297 0 0 0 0 0
ppp3: 6720 7 7 0 0 7498 0 0 0 0 0
ppp4: 118231 725 725 0 0 117791 0 0 0 0 0
ppp5: 38915 5 5 0 0 28309 0 0 0 0 0
Considerazioni generali sulla configurazione del kernel per il PPP
Se si sta mettendo su un PC Linux per far da server PPP, si deve
compilare il supporto per l'IP forwarding. Questo è pure necessario se
si vuole usare Linux per collegare alcune LAN assieme o per connettere
la propria LAN ad Internet.
Se si connette una LAN ad Internet (o si connettono assieme due LAN),
si dovrebbe essere ben coscienti delle problematiche sulla sicurezza.
L'aggiunta del supporto per i firewall IP nel kernel probabilmente è
un DOVERE!
Questo sarà necessario anche se si vuole usare IP masquerade per
connettere una LAN che usa uno dei suddetti numeri di rete IP 'non
connessi'.
Per abilitare l'IP Masquerade e l'IP fire walling, si
Prompt for development and/or incomplete code/drivers (CONFIG_EXPERIMENTAL)?
Ai nuovi utenti questo potrebbe sembrare un po' fuori luogo, ma molti
utenti Linux usano attivamente l'IP Masquerade e l'IP Firewalling dei
kernel Linux 2.0.XX senza alcun problema.
Una volta installato il nuovo kernel e riavviata la macchina, si può
cominciare a configurare e a testare il(i) collegamento(i) PPP.
Quali informazioni si debbono conoscere sul server PPP
Prima di poter stabilire una connessione PPP con un server, è
necessario procurarsi le seguenti informazioni (ci si rivolga al
supporto clienti o agli amministratori del proprio server PPP):
- Il o i numeri telefonici da comporre per il servizio
Se si è dietro ad un PABX, è necessario conoscere anche il numero PABX
che abilita le chiamate esterne - solitamente è lo zero (0) o il nove
(9).
- Il server usa numeri IP DINAMICI o STATICI?
Se il server usa numeri IP STATICI, allora è necessario conoscere
quale numero IP usare per la propria estremità della connessione
IP. Se il proprio ISP vi fornisce una sottorete di numeri IP validi,
bisogna conoscere anche quali numeri IP è possibile usare e qual'è la
maschera di rete (netmask).
La maggior parte degli Internet Service Provider usa numeri IP
DINAMICI. Come detto in precedenza, ciò ha qualche implicazione
in termini di servizi che si possono usare.
Comunque, anche se si stanno usando numeri IP STATICI, molti server PPP
non permetteranno mai (per ragioni di sicurezza) ad un client di
specificare un numero IP, in quanto ciò è un rischioso. Si Quali sono i numeri IP dei Domain Name Server dell'ISP?
Dovrebbero essere almeno due sebbene ne serva solo uno.
Ci potrebbe essere un problema a questo punto. La configurazione del PPP di MS
Windows 95 permette che l'indirizzo del DNS sia passato al client
come parte del processo di connessione. Quindi il proprio ISP potrebbe
benissimo rispondere che non c'è la necessità di conoscere gli
indirizzi dei server DNS.
Per Linux, si
Il server richiede l'uso di PAP/CHAP?
Se questo è il caso di deve conoscere "id" e "secret" da usare durante
la connessione (probabilmente queste sono il proprio nome utente e la
propria password nel proprio ISP).
- Il server avvia automaticamente il PPP o si deve fornire un
qualche comando per far partire il PPP una volta fatto il login?
Se si deve dare un comando per avviare il PPP, qual è?
- Il server è un sistema Microsoft Windows NT e, se così è,
usa il sistema MS PAP/CHAP?
Molte LAN di aziende usano MS Windows NT in questo modo per aumentare
la sicurezza.
Ci si annoti con cura queste informazioni, che tra un po' andremo ad
usarle!
Configurare il proprio modem e la porta seriale
Ci si dovrebbe assicurare che il proprio modem sia impostato
correttamente e conoscere a quale porta seriale è connesso.
Si ricorda :
- DOS com1: = Linux /dev/cua0 (e /dev/ttyS0)
- DOS com2: = Linux /dev/cua1 (e /dev/ttyS1)
eccetera
Non è male ricordare che se si hanno 4 porte seriali, la
configurazione predefinita dei PC è di avere la com1 e la com3 che
condividono IRQ4 e la com2 e la com4 che condividono IRQ3.
Se si hanno dispositivi su una porta seriale standard che condivide un
IRQ con il proprio modem, probabilmente si avranno dei problemi. Ci
si deve assicurare che la porta seriale a cui è connesso il modem abbia
un IRQ di sua proprietà e non condiviso. Molte schede seriali moderne
(e le porte seriali sulle schede madri di buona qualità) permettono
di spostare l'IRQ delle porte seriali.
Se si usa un kernel versione 2 di Linux, si possono vedere quali IRQ
sono in uso con cat /proc/interrupts , che produrrà un output
simile a:
0: 6766283 timer
1: 91545 keyboard
2: 0 cascade
4: 156944 + serial
7: 101764 WD8013
10: 134365 + BusLogic BT-958
13: 1 math error
15: 3671702 + serial
Qui è mostrata una porta seriale sull'IRQ4 (un mouse) ed una porta
seriale sull'IRQ15 (la connessione PPP permanente via modem ad
Internet). Ci sono anche le porte seriali com2 su IRQ3, e la com4 su
IRQ14, ma non sono utilizzate e perciò non vengono mostrate.
Attenzione: bisogna sapere quello che si fa quando si gioca con gli
IRQ! Non solo si deve aprire il proprio computer, tirare fuori le
schede e giocare con i jumper, ma si deve pure sapere cosa c'è su un
determinato IRQ. Nel mio caso ho un PC totalmente basato su SCSI, e
così ho disabilitato l'interfaccia IDE sulla scheda madre che
normalmente usano gli IRQ14 e 15!
Si dovrebbe tener presente che se il proprio PC si avvia anche con
altri sistemi operativi, lo spostamento degli IRQ può far sì che tali
sistemi operativi non si avviino correttamente, o che non si avviino
affatto.
Se si spostano le porte seriali su IRQ non standard, allora bisogna
dire a Linux qual è IRQ che ogni porta usa. Ciò è fatto usando
/bin/setserial -b /dev/ttyS2 IRQ 11
/bin/setserial -b /dev/ttyS3 IRQ 15
Comunque, se si usa il modulo per le seriali e lo si fa caricare
dinamicamente quando necessario da
Quindi, se si fa caricare su richiesta il modulo per le seriali,
bisogna riconfigurare gli IRQ ed il resto ogni volta che viene
caricato il modulo.
Una nota sulle porte seriali e le loro velocità
Se si usa un modem (esterno) ad alta velocità (14,400 Baud o
superiore), la propria porta seriale dev'essere in grado di gestire il
flusso di dati che un tale modem è in grado di produrre, in
particolare quando il modem comprime i dati.
Ciò richiede che la propria porta seriale usi un UART (Universal
Asynchronous Receiver Transmitter - Ricevitore/Trasmettitore Asincrono
Universale) moderno come un 16550(A). Se si usa una vecchia macchina
(o una vecchia scheda seriale), è abbastanza probabile che la propria
porta seriale abbia solamente un UART 8250, che può causere
considerevoli problemi quando utilizzata con un modem ad alta velocità.
Si usi il comando
setserial -a /dev/ttySx
per far sì che Linux dica il tipo di UART in proprio possesso. Se non
si ha una UART del tipo 16550A, si investa un po' di soldi in una
nuova scheda seriale (disponibile a meno di $50). Una volta
comperata, ci si assicuri di poterne spostare gli IRQ!
Nota: la prima versione del chip UART 16550 ha un errore. Questo è
stato scoperto quasi subito ed è stata rilasciata una revisione del
chip: l'UART 16550A. Comunque circolano un numero relativamente basso
di chip fallati. Non è facile incappare in uno di questi, ma comunque,
almeno per le schede abbastanza pregiate, si dovrebbe ottenere una
risposta al comando precedente che dice 16550A.
Nomi delle Porte Seriali
Storicamente, Linux usava i device
La porzione del kernel che richiedeva ciò è stata cambiata nella
versione 2.0.x del kernel e si dovrebbero usare i Configurare il proprio modem
Per usare PPP bisogna configurare correttamente il proprio modem. Per
far ciò
- Controllo di flusso hardware (RTS/CTS) (
& K3 in
molti modem Hayes)
Altre impostazioni (in comandi standard Hayes) che si dovrebbero
controllare sono:
- E1 Echo ON (richiesto per il funzionamento di chat)
- Q0 Report result codes (richiesto per il funzionamento di chat)
- S0=0 Auto Answer OFF (a meno che non si voglia che il proprio
modem risponda al telefono)
& C1 Carrier Detect ON solo dopo la connessione
& S0 Data Set Ready (DSR) sempre ON
- (forse) Data Terminal Ready
Esiste un sito che offre le impostazioni per un modem per una varietà
in continua crescita di costruttori e modelli di modem a che può tornare utile in questa operazione.
Non è male neppure investigare sul funzionamento dell'interfaccia
seriale del modem usata per connetterlo al proprio computer. La
maggior parte dei modem permette di far funzionare tale interfaccia
a velocità FISSA, mentre lasciano all'interfaccia con la linea
telefonica la possibilità di variare la sua velocità in modo da usare
quella più alta che sia lei che la corrispondente nel modem remoto
riescono a gestire.
Ciò è noto come funzionamento ``split speed''. Se il proprio modem lo
supporta, si blocchi l'interfaccia seriale del modem alla velocità
più alta disponibile (generalmente 115200 baud ma più probabilmente
38400 baud per i modem a 14400).
Si usi il proprio software di comunicazione (p.es. minicom o seyon)
per scovare la configurazione del proprio modem e per impostare quanto
richiesto per il PPP. Molti modem ritornano le loro impostazioni
correnti in risposta a AT& V, ma si consulti comunque il
manuale del proprio modem.
Se si fa un casotto con le impostazioni, si può ritornare alle
impostazioni sane (solitamente) dando il comando AT& F che
riporta il modem alle impostazioni del costruttore (comunque per la
maggior parte dei modem che ho incontrato, le impostazioni di fabbrica
includono tutto quello che serve per il PPP - ma si dovrebbe comunque
controllare)
Una volta scoperta la stringa di configurazione richiesta dal modem,
la si annoti da qualche parte. Ora ci sono due possibilità: si possono
immagazzinare queste impostazioni nella memoria non volatile del modem
in modo da poter essere richiamate con un apposito comando AT, oppure
si può passare le impostazioni corrette al modem come parte del
processo di composizione del numero.
Se si usa il proprio modem solamente da Linux per chiamare il proprio
ISP o server aziendale, la cosa più semplice sarà salvare la propria
configurazione del modem nella RAM non volatile.
Se d'altra parte, il proprio modem è usato da altre applicazioni e
sistemi operativi, è più sicuro passare le informazioni al modem ogni
volta che viene fatta la chiamata cosicché è garantito che il modem è
sempre nello stato corretto per la chiamata (ciò ha pure il vantaggio
aggiuntivo di registrare la stringa di configurazione del modem nel
caso il modem perda il contenuto della NV-RAM, che può sempre
succedere).
Note sul controllo del flusso seriale
Quando i dati viaggiano su linee di comunicazione seriale, può
capitare che i dati arrivino più velocemente di quanto il computer
possa gestire (il computer potrebbe essere occupato a fare
qualcos'altro -- si ricordi che Linux è un sistema operativo
multi-utente e multi-processo). Per poter assicurare che i dati non
vengano persi (ovvero che i dati non superino la capacità del buffer
d'ingresso e quindi vengano persi), sono necessari alcuni metodi per
controllare il flusso di dati.
Nelle linee seriali ci sono due modi per farlo:
- Usando segnali hardware (Clear To Send/Request to Send -- CTS/RTS)
- Usando segnali software (control S e control Q, noti anche come
XON/XOFF).
Mentre l'ultimo può andare bene per la connessione di un terminale
(testo), i dati in un collegamento PPP usano tutti gli 8 bit ed è
abbastanza probabile che da qualche parte nei dati ci siano dei byte
di dati che corrispondono a control S e control Q. Quindi, se il modem
è impostato per il controllo di flusso software, le cose possono
rapidamente andare in sfacelo!
Per le connessioni ad alta velocità che usano PPP (che usa dati a 8
bit) il controllo di flusso hardware è vitale ed è per questa ragione
che si deve usare questo tipo di controllo di flusso.
Verificare il proprio modem per la connessione
Ora che si è configurato il proprio modem e la porta seriale, è una
buona idea assicurarsi che queste impostazioni facciano realmente il
loro lavoro, chiamando il proprio ISP e verificando di potersi
connettere.
Usando un pacchetto di comunicazione (come minicom), si imposti la
inizializzazione richiesta per il PPP e per chiamare il server PPP al
quale ci si vuole connettere in una sessione PPP.
(Nota: a questo punto
Durante questo processo, si catturi (registrandolo su un file)
l'intero processo di login oppure si annoti accuratamente
(
Se il proprio server usa PAP, non si dovrebbe vedere una richiesta di
login, ma sul proprio schermo si dovrebbe invece vedere la
rappresentazione in modo testo del protocollo di controllo della
connessione (che assomiglia tanto a della spazzatura).
Qualche avvertenza:
- alcuni server sono abbastanza intelligenti: si può fare il login
usando nome/password in modo testo oppure usando PAP. Quindi se il
proprio ISP o server aziendale usa PAP ma non si vede la spazzatura
partire immediatamente, ciò non vuol dire che si è fatto qualcosa in
modo errato;
- alcuni server richiedono che inizialmente si immetta un po' di
testo e
alcuni server PPP sono passivi, ovvero stanno lì semplicemente
non spedendo niente finché il client che sta facendo il dialing non
gli spedisce un pacchetto lcp valido. Se il server PPP a cui ci si sta
connettendo opera in modo passivo, non si vedrà mai la spazzatura!
- alcuni server non avviano il PPP finché non si preme ENTER,
quindi non è una cattiva idea provare a farlo se ci si è connessi
correttamente ma non si vede la spazzatura!
Non è male connettersi almeno un paio di volte -- alcuni server
cambiano i loro prompt (p.es. con il passare del tempo!) ogni volta
che ci si connette. I due prompt critici che la propria macchina Linux ha
necessità di identificare ogni volta che si fa la connessione sono:
- il prompt che richiede di inserire il proprio nome utente;
- il prompt che richiede di inserire la propria password.
Se si deve lanciare un comando per avviare il PPP nel server, è
necessario trovare anche il prompt che il server dà una volta che ci è
loggati per dire che ora è possibile inserire il comando per lanciare
il PPP.
Se il proprio server, una volta loggati, lancia automaticamente il PPP
si inizierà a vedere un po' di spazzatura sullo schermo - queste sono
le informazioni che il server sta spedendo per avviare e configurare
la connessione PPP.
Dovrebbero essere qualcosa di questo tipo:
~y}#.!}!}!} }8}!}$}%U}"}&} } } } }%}& ...}'}"}(}"} .~~y}
(NdT: è questa la ``spazzatura'' a cui si faceva e si farà
riferimento.)
Su alcuni sistemi il PPP deve essere esplicitamente avviato sul
server. Questo di solito è perché il server è stato configurato per
permettere sia il login in PPP che il login con una shell usando la
stessa coppia nome utente/password. Se questo è il proprio caso, si
inserisca il comando una volta effettuato il login. Anche in questo
caso, si vedrà della spazzatura non appena viene avviato il lato
server della connessione PPP.
Se non si vede la spazzatura immediatamente dopo la connessione (e
nemmeno dopo il login e l'avvio manuale del server PPP, se richiesti)
si prema
A questo punto, si può "riattaccare" (N.d.T.: nel senso della cornetta
del telefono) il proprio modem (solitamente, battendo velocemente
+++ e poi dando il comando ATHO una volta che il modem ha
risposto con OK).
Se non si riesce a far andare il proprio modem, si legga il suo
manuale, le pagine man del software di comunicazione e il Serial
HOWTO! Una volta fatto questo, si rifaccia (per bene) quanto spiegato
in precedenza.
Configurare la risoluzione da nome a indirizzo (DNS)
Mentre agli umani piace dare nomi alle cose, i computer preferiscono di
molto i numeri. In una rete TCP/IP (che è quello che Internet è),
chiamiamo le macchine con un nome particolare per ogni macchina che
vive in un particolare &dquot; dominio&dquot; . Per
esempio, la mia workstation Linux si chiama archenland e
risiede nel dominio interweft.com.au . Il suo indirizzo
"umano" è quindi archenland.interweft.com.au (che è noto come il FQDN
- fully qualified domain name).
Comunque, quando i computer comunicano attraverso Internet, affinché
questa macchina possa essere trovata dagli altri computer in Internet,
è in realtà nota con il suo numero IP.
La traduzione (risoluzione) del nome (e del dominio) della macchina
nei numeri realmente usati su Internet è compito di macchine che
offrono il servizio di Domain Name (Domain Name Service).
Ciò che succede è questo:
- la propria macchina ha bisogno di sapere l'indirizzo IP di un
particolare computer. L'applicazione che richiede questa informazione
chiede al `risolutore' (resolver) nel proprio PC Linux di fornire
questa informazione;
-
il risolutore interroga il file locale degli host (
/etc/hosts )
e i domain name server di cui è a conoscenza (l'esatto
comportamento del resolver è determinato da /etc/host.conf );
- se la risposta è trovata nel file degli host, ne viene ritornato
il valore in risposta;
- se è specificato un domain name server, il proprio PC interroga
questa macchina;
- se la macchina DNS sa già il numero IP per il nome richiesto, lo
ritorna in risposta. Se così non è, interroga altri name server in
Internet per trovare l'informazione. Il name server poi passa questa
informazione al risolutore e questi all'applicazione che ne aveva fatto
richiesta.
Quando si fa una connessione PPP, si deve dire alla propria macchina
Linux dove andare a prendere le informazioni sulla conversione da nome
ad indirizzo IP (risoluzione dell'indirizzo - address resolution) in
modo che
Un modo è di inserire ogni host con il quale si vuole dialogare nel
file /etc/hosts (il che è realisticamente totalmente
impossibile se si è connessi ad Internet); un altro è di usare i
numeri IP della macchine invece dei loro nomi (un esercizio di memoria
impossibile tranne che per le LAN più piccole).
Il modo migliore è configurare Linux in modo che sappia dove andare a
prendere automaticamente queste informazioni nome/numero. Questo
servizio è fornito dai sistemi Domain Name Server (DNS). Tutto ciò che
serve è di inserire il numero (o i numeri) IP dei domain name server
nel proprio file /etc/resolv.conf.
Il file /etc/resolv.conf
L'amministatore del proprio server PPP o il servizio assistenza
clienti dovrebbe aver fornito due numeri IP di DNS (ne è necessario solo
uno, ma due danno un po' di ridondanza in caso di problemi in uno dei
due).
Come menzionato in precedenza, Linux non può impostare il proprio
name server nel modo che usa MS Windows 95. Quindi si
Il proprio /etc/resolv.conf potrebbe essere qualcosa di
simile a:
domain nome.di.dominio.del.proprio.isp
nameserver 10.25.0.1
nameserver 10.25.1.2
Si modifichi questo file (creandolo se necessario) per metterci le
informazioni fornite dal proprio ISP. Dovrebbe avere la proprietà e i
permessi che seguono:
-rw-r--r-- 1 root root 73 Feb 19 01:46 /etc/resolv.conf
Se si è già configurato un /etc/resolv.conf perché si è in
una LAN, semplicemente si aggiungano i numeri IP dei server DNS per il
PPP al file che già esiste.
Il file /etc/host.conf
Si dovrebbe pure controllare che il proprio file
/etc/host.conf sia configurato correttamente. Dovrebbe
essere una cosa così:
order hosts,bind
multi on
Ciò dice al risolutore di usare le informazioni nel file degli host
prima di interrogare un DNS per la risoluzione.
L'uso di PPP e i privilegi di root
Poiché PPP ha bisogno di impostare alcuni dispositivi di rete,
modificare la tabella di instradamento del kernel ed altro, richiede i
privilegi di root per farlo.
Se altri utenti oltre a root devono poter avviare una connessione PPP,
il programma pppd dev'essere setuid root:
-rwsr-xr-x 1 root root 95225 Jul 11 00:27 /usr/sbin/pppd
Se /usr/sbin/pppd non è impostato in questo modo, allora come
root si digiti il comando:
chmod u+s /usr/sbin/pppd
Quello che fa è rendere pppd eseguibile con i privilegi di
root
I programmi che sono eseguiti come 'set uid root' potenzialmente sono
dei buchi di sicurezza e si dovrebbe essere estremamente cauti nel fare
programmi 'suid root'. Un certo numero di programmi (incluso pppd)
sono stati scritti con tutte le attenzioni per minimizzare i pericoli
conseguenti alla loro esecuzione in suid root, quindi dovrebbe essere
sicuro farlo (ma non ci sono garanzie).
A seconda di come si vuole che il proprio sistema funzioni -
specificatamente se si vuole che QUALSIASI utente nel proprio sistema
sia in grado si avviare una connessione PPP, si dovrebbe rendere i
propri script ppp-on/off leggibili ed eseguibili al mondo intero
(probabilmente questo va bene solo se il proprio PC è usato SOLO da se
stessi).
Comunque, se NON si vuole che qualsiasi utente sia in grado di
avviare una connessione PPP (per esempio, i propri figli hanno un
account sulla macchina Linux, ma non vuoi che vadano in giro per
Internet senza la una supervisione), bisogna creare un gruppo per il
PPP (come root, si modifichi il file /etc/group) e:
- si renda pppd suid root, di proprietà dell'utente root e del
gruppo PPP, con gli altri permessi su questo file vuoti. Insomma
dovrebbe avere questi permessi (o simili):
-rwsr-x--- 1 root PPP 95225 Jul 11 00:27 /usr/sbin/pppd
- si rendano gli script ppp-on/off di proprietà dell'utente root e
del gruppo PPP;
- si rendano gli script ppp-on/off leggibili/eseguibili al gruppo PPP
-rwxr-x--- 1 root PPP 587 Mar 14 1995 /usr/sbin/ppp-on
-rwxr-x--- 1 root PPP 631 Mar 14 1995 /usr/sbin/ppp-off
- si rendano vuoti gli altri diritti di accesso a ppp-on/off;
- si aggiungano gli utenti che si vuole possano avviare il PPP al
gruppo PPP in /etc/group.
Anche se si fa questo, gli utenti ordinari non saranno ANCORA in grado
di buttare giù la connessione via software! L'esecuzione dello
script
Un alternativa (e metodo migliore) a questa impostazione è di usare il
programma Impostare i file di connessione PPP
Adesso è necessario essere loggati come
Il PPP usa un certo numero di file per connettersi e impostare la
connessione PPP. Questi differiscono per nome e locazione in PPP 2.1.2
e 2.2.
Per il PPP 2.1.2 i file sono:
/usr/sbin/pppd # l'eseguibile PPP
/usr/sbin/ppp-on # lo script di composizione del numero e connessione
/usr/sbin/ppp-off # lo script di disconnessione
/etc/ppp/options # le opzioni che pppd usa per tutte le connessioni
/etc/ppp/options.ttyXX # le opzioni specifiche per una connessione su
# questa porta
Per il PPP 2.2 i file sono:
/usr/sbin/pppd # l'eseguibile PPP
/etc/ppp/scripts/ppp-on # lo script di composizione del numero e connessione
/etc/ppp/scripts/ppp-on-dialer # parte 1 dello script di composizione
# del numero
/etc/ppp/scripts/ppp-off # il vero script di chat
/etc/ppp/options # le opzioni che pppd usa per tutte le connessioni
/etc/ppp/options.ttyXX # le opzioni specifiche per una connessione su
# questa porta
Gli utenti di Red Hat Linux dovrebbero notare che l'installazione
predefinita di Red Hat 4.X mette questi script in
/usr/doc/ppp-2.2.0f-2/scripts .
Nella propria directory /etc ci dovrebbe essere una directory ppp:
drwxrwxr-x 2 root root 1024 Oct 9 11:01 ppp
Se non esiste, la si crei con questo proprietario e permessi.
Se la directory già esiste, dovrebbe contenere un file di opzioni
tipo, chiamato options.tpl . Questo file è incluso qui sotto nel
caso che non ci sia.
Lo si stampi in quanto contiene una spiegazione di praticamente tutte
le opzioni per PPP (utile da leggere assieme alle pagine man di
pppd). Sebbene si possa usare questo file come punto di partenza del
proprio file /etc/ppp/options file, è probabilmente meglio
creare un proprio file di opzioni che non contenga tutti i commenti,
il quale sarà così molto più breve e più facile da leggere e
mantenere.
Se si posseggono più linee seriali o modem (caso tipico di un server
PPP), si crei un file /etc/ppp/options generale contenente le
opzioni comuni a tutte le porte seriali sulle quali si vuole supportare
il dial in/out e poi si crei un file di opzioni individuali per ognuna
delle line seriali sulle quali si voglia poter stabilire una
connessione PPP con le impostazioni specifiche richieste per ogni
porta.
Questi file specifici per le porte si chiamano
Comunque, per una connessione PPP singola, si può semplicemente usare
il file /etc/ppp/options . In alternativa si possono mettere
tutte le opzioni come argomenti per il comando pppd stesso.
È più semplice mantenere una configurazione che usa i file
/etc/ppp/options.ttySx . Se si usa PPP per connettersi ad un
certo numero di siti diversi, si possono creare file di opzioni per
ogni sito in /etc/ppp/options.site e poi specificare il file
di opzioni come un parametro del comando PPP quando ci si connette
(usando l'opzione Il file di opzioni tipo options.tpl
Alcune distribuzioni sembrano aver perso il file options.tpl, e quindi
eccone qui una versione completa. Suggerisco di NON modificare questo
file per creare il proprio (o i propri) file
/etc/ppp/options . Piuttosto, lo si copi su un nuovo file e
poi si modifichi quello. Se si fa casino con le modifiche è sempre
possibile tornare a quello originale e ricominciare.
# /etc/ppp/options -*- sh -*- opzioni generali per pppd
# created 13-Jul-1995 jmk
# autodate: 01-Aug-1995
# autotime: 19:45
# Usa l'eseguibile o il comando shell specificato per impostare la
# linea seriale. Questo script solitamente userebbe il programma
# "chat" per dialogare con il modem ed avviare la sessione ppp
# remota.
#connect "echo Bisogna installare un comando connect."
# Avvia l'eseguibile o il comando shell specificato dopo che pppd ha
# concluso la connessione, Questo script potrebbe, ad esempio, inviare
# comandi al modem per fargli riagganciare se non sono disponibili i
# segnali di controllo hardware del modem.
#disconnect "chat -- \d+++\d\c OK ath0 OK"
# mappa di caratteri asincrona -- esadecimale a 32-bit; ogni bit è un
# carattere del quale è necessario fare l'escape quando pppd lo
# riceve. 0x00000001 rappresenta '\x01', e 0x80000000 rappresenta
# '\x1f'.
#asyncmap 0
# Richiede che il peer si autentifichi da solo prima di permettere la
# trasmissione o la ricezione di pacchetti di rete.
#auth
# Usa il controllo di flusso hardware (i.e. RTS/CTS) per controllare
# il flusso di dati sulla porta seriale.
#crtscts
# Usa il controllo di flusso software (i.e. XON/XOFF) per controllare
# il flusso di dati sulla porta seriale.
#xonxoff
# Aggiunge, quando la negoziazione IPCP è completata con successo, un
# instradamento predefinito nella tabella di instradamento di sistema,
# usando il peer come gateway. Questa voce viene automaticamente
# rimossa quando la connessione PPP è interrotta.
#defaultroute
# Specifica che di certi caratteri dovrebbe essere fatto l'escape in
# trasmissione (indipendentemente dal fatto il peer richieda tale
# operazione con la sua mappa di caratteri di controllo
# asincrona). Questi caratteri di cui dev'essere fatto l'escape sono
# specificati come una lista di numeri esadecimali separati da
# virgole. Si noti che può essere specificato praticamente qualsiasi
# carattere, mentre l'opzione asyncmap permette di specificare solo
# caratteri di controllo. I caratteri dei quali non è possibile fare
# l'escape sono quelli con valore esadecimale 0x20 - 0x3f o 0x5e.
#escape 11,13,ff
# Non usa le linee di controllo del modem.
#local
# Specifica che pppd dovrebbe usare un lock in stile UUCP sul
# dispositivo seriale per assicurare l'accesso esclusivo al
# dispositivo.
#lock
# Usa le linee di controllo del modem. In Ultrix, questa opzione
# implica il controllo hardware del flusso come l'opzione
# crtscts. (Questa opzione non è completamente implementata.)
#modem
# Imposta il valore di MRU [Maximum Receive Unit - Unità Massima di
# Ricezione] a per la negoziazione. pppd chiederà al peer di
# inviare pacchetti di non più di byte. Il minimo valore di MRU è
# 128. Il valore predefinito è 1500. Un valore di 296 è raccomandato
# per connessioni lente (40 byte per l'header TCP/IP + 256 byte di
# dati).
#mru 542
# Imposta la netmask per l'interfaccia a , una netmask a 32 bit in
# notazione "decimal dot" (p.es. 255.255.255.0).
#netmask 255.255.255.0
# Disabilita il comportamento predefinito quando non è specificato
# nessun indirizzo IP locale, che è di determinare (se possibile)
# l'indirizzo IP locale dal nome dell'host. Con questa opzione, il
# peer deve fornire un indirizzo IP locale durante le negoziazione
# IPCP (a meno che non sia specificato esplicitamente nella riga di
# comando o nel file delle opzioni).
#noipdefault
# Abilita le opzioni "passive" nell'LCP. Con questa opzione, pppd
# proverà ad iniziare la connessione; se non riceve risposta dal peer,
# allora pppd attenderà passivamente un pacchetto LCP valido da parte
# del peer (invece di uscire, come farebbe senza questa opzione).
#passive
# Con questa opzione, pppd non trasmetterà pacchetti LCP per iniziare
# una connessione finché non riceve un pacchetto LCP valido dal peer
# (come per l'opzione "passive" per le vecchie versioni di pppd).
#silent
# Non richiede o permette la negoziazione di qualsiasi opzione per LCP
# o IPCP (usa i valori predefiniti).
#-all
# Disabilita la negoziazione di compressione Indirizzo/Controllo (usa
# quanto predefinito, ovvero campi address/control disabilitati).
#-ac
# Disabilita la negoziazione asyncmap (usa la asyncmap predefinita,
# i.e. fa l'escape di tutti i caratteri di controllo).
#-am
# Non fa il fork per diventare un processo in background (altrimenti
# pppd lo farebbe se è specificato un dispositivo seriale).
#-detach
# Disabilita la negoziazione dell'indirizzo IP (con questa opzione
# l'indirizzo IP remoto deve essere specificato con un'opzione nella
# riga di comando o nel file delle opzioni).
#-ip
# Disabilita la negoziazione magic number. Con questa opzione pppd non
# può rilevare una linea cortocircuitata (looped-back).
#-mn
# Disabilita la negoziazione MRU [Maximum Receive Unit] (usa il valore
# predefinito, i.e. 1500).
#-mru
# Disabilita la negoziazione della compressione del campo protocollo
# ("protocol field compression") (usa quanto predefinito,
# i.e. compressione del campo protocollo disabilitata).
#-pc
# Richiede che il peer si autentifichi da solo usando il PAP. Questo
# richiede un'autentificazione a DUE VIE - NON usare per una
# connessione standard con autentificazione PAP ad un ISP, in quanto
# richiede che anche la macchina dell'ISP si autentifichi da sola
# nella propria macchina (e non sarà in grado di farlo).
#+pap
# Non accetta di autentificare usando PAP.
#-pap
# Richiede che il peer di autentifichi da solo usando
# l'autentificazione CHAP [Cryptographic Handshake Authentication
# Protocol]. Questo richiede un'autentificazione a DUE VIE - NON
# usare per una connessione standard con autentificazione CHAP ad un
# ISP, in quanto richiede che anche la macchina dell'ISP si
# autentifichi da sola nella propria macchina (e non sarà in grado di
# farlo).
#+chap
# Non accetta di autentificare usando CHAP.
#-chap
# Disabilita la negoziazione della compressione dell'header IP in
# stile Van Jacobson (usa quanto predefinito, i.e. nessuna compressione).
#-vj
# Incrementa il livello di debug (analoga -d). Se è data questa
# opzione, pppd registrerà il contenuto di tutti i pacchetti spediti e
# ricevuti in un formato leggibile. I pacchetti sono registrati
# usando syslog con funzionalità daemon e debug. Queste informazioni
# possono essere redirette ad un file impostando opportunamente il
# file /etc/syslog.conf (vedere syslog.conf(5)) (se pppd è compilato
# abilitando l'extra debugging, registrerà i messaggi usando le
# funzionalità local2 invece di daemon).
#debug
# Aggiunge il nome del dominio al nome dell'host locali per scopi
# di autentificazione. Per esempio, se gethostname() ritorna il nome
# porsche, ma il FQDN (Fully Qualified Domain Name) è
# porsche.Quotron.COM, si dovrebbe usare l'opzione domain per
# impostare il nome dominio a Quotron.COM.
#domain
# Abilita il codice di debug nel driver del PPP a livello kernel.
# L'argomento n è un numero che è la somma dei seguenti valori: 1 per
# abilitare i messaggi di debug generici, 2 per richiedere la
# visualizzazione del contenuto dei pacchetti ricevuti, e 4 per
# visualizzare quello dei pacchetti trasmessi.
#kdebug n
# Imposta il valore di MTU [Maximum Transmit Unit - Unità Massima di
# Trasferimento] a . A meno che il peer non richieda un valore
# minore tramite la negoziazione MRU, pppd chiederà al codice di
# gestione della rete del kernel di inviare attraverso l'interfaccia
# di rete del PPP pacchetti di dati di non più di n byte.
#mtu
# Imposta il nome del sistema locale ad per scopi di
# autentificazione. Se si sta usando PAP/CHAP probabilmente dev'essere
# impostato al nome utente del proprio ISP.
#name
# Imposta a il nome utente da usare per autentificare questa
# macchina con il peer usando il PAP.
# NON usare questa opzione se si sta usando l'opzione 'name'
# suddetta.
#user
# Obbliga l'uso del nome dell'host come nome del sistema locale per
# scopi di autentificazione (ha priorità sull'opzione name).
#usehostname
# Imposta a il nome assunto del sistema remoto per scopi di
# autentificazione.
#remotename
# Aggiunge una voce nella tabella ARP [Address Resolution Protocol -
# Protocollo di Risoluzione Indirizzi] di sistema con l'indirizzo IP
# del peer e l'indirizzo Ethernet di questo sistema.
#proxyarp
# Usa la base di dati di password di sistema per autentificare con il
# peer usando PAP.
#login
# Se è specificata questa opzione, pppd invierà un frame echo-request
# LCP al peer ogni n secondi. Sotto Linux, echo-request è inviata
# quando per n secondi non si sono ricevuti pacchetti dal
# peer. Normalmente il peer dovrebbe rispondere a echo-request
# inviando un echo-reply. Questa opzione può essere usata con
# l'opzione lcp-echo-failure per rilevare che il peer non è più
# connesso.
#lcp-echo-interval
# Se è specificata questa opzione, pppd presumerà che il peer è morto
# se sono inviati n echo-request LCP senza ricevere un echo-reply LCP
# valido. Se questo accade, pppd terminerà la connessione. L'uso di
# questa opzione richiede un valore non nullo come parametro a
# lcp-echo-interval. Questa opzione può essere usata per abilitare pppd
# a terminare dopo l'interruzione della connessione fisica (p.es. il
# modem ha messo giù la linea) nelle situazioni nella quali non sia
# disponibile il controllo hardware delle linee da parte del modem.
#lcp-echo-failure
# Imposta l'intervallo di riavvio LCP (timeout nella ritrasmissione) a
# secondi (valore predefinito 3).
#lcp-restart
# Imposta il massimo numero di trasmissioni di terminate-request LCP a
# (valore predefinito 3).
#lcp-max-terminate
# Imposta il numero massimo di trasmissioni di configure-request LCP a
# (valore predefinito 10).
# Alcuni server PPP non lenti nell'avviarsi. Si può dover incrementare
# questo valore se si ottengono errori tipo 'serial line looped back'
# e si è SICURI di aver fatto correttamente il login e che il il PPP
# dovrebbe essere già avviato sul server.
#lcp-max-configure
# Imposta il numero massimo di configure-NAK LCP ricevuti prima di
# inviare configure-Rejects (valore predefinito 10).
#lcp-max-failure
# Imposta l'intervallo di riavvio di IPCP (timeout in ritrasmissione)
# a secondi (valore predefinito 3).
#ipcp-restart
# Imposta il numero massimo di trasmissioni di terminate-request IPCP
# a (valore predefinito 3).
#ipcp-max-terminate
# Imposta il numero massimo di trasmissioni di configure-request IPCP
# a (valore predefinito 10).
#ipcp-max-configure
# Imposta il numero massimo di configure-NAK IPCP ricevuti prima di
# inviare configure-Rejects (valore predefinito 10).
#ipcp-max-failure
# Imposta l'intervallo di riavvio PAP (timeout in ritrasmissione)
# a secondi (valore predefinito 3).
#pap-restart
# Imposta il numero massimo di trasmissioni di authenticate-request
# PAP a (valore predefinito 10).
# (default 10).
#pap-max-authreq
# Imposta l'intervallo di riavvio CHAP (timeout in ritrasmissione per
# challenge) a secondi (valore predefinito 3).
#chap-restart
# Imposta il numero massimo di trasmissioni challenge CHAP a
# (valore predefinito 10).
#chap-max-challenge
# Con questa opzione, pppd reinterrogherà il peer ogni secondi.
#chap-interval
# Con questa opzione, pppd accetterà il suggerimento del peer per il
# proprio indirizzo IP locale, anche se l'indirizzo IP locale è stato
# specificato in un'opzione.
#ipcp-accept-local
# Con questa opzione, pppd accetterà il suggerimento del peer per il
# suo indirizzo IP (remoto), anche l'indirizzo IP remoto è stato
# specificato in un'opzione.
#ipcp-accept-remote
Quali opzioni dovrei usare? (No PAP/CHAP)
Beh, come in tutte le cose... dipende. Le opzioni qui specificate
dovrebbero funzionare con la maggior parte dei server.
Comunque, se NON funzionassero, SI LEGGA IL FILE DI OPZIONI TIPO
(/etc/ppp/options.tpl )
Si dovrebbe inoltre notare che gli script di connessione qui
presentati usano alcune opzioni in riga di comando di pppd per rendere
il tutto un poco più semplice da modificare.
# /etc/ppp/options (NIENTE PAP/CHAP)
#
# Previene pppd da fare il fork e passare in background
-detach
#
# usa le linee di controllo del modem
modem
# usa il lock in stile uucp per assicurare l'accesso esclusivo al
# dispositivo seriale.
lock
# usa il controllo di flusso hardware
crtscts
# crea un instradamento predefinito per questa connessione nella
# tabella di instradamento
defaultroute
# NON imposta l'"escape" di nessuna sequenza di controllo
asyncmap 0
# usa la dimensione massima dei pacchetti in trasmissione di 552 byte
mtu 552
# usa la dimensione massima dei pacchetti in ricezione di 552 byte
mru 552
#
#-------FILE DEL FILE ESEMPIO /etc/ppp/options (niente PAP/CHAP)
Se il proprio server usa PAP (Password Authentication Protocol)
Se il server al quale ci connette richiede l'autentificazione PAP o
CHAP c'è un po' più di lavoro da fare.
Al file delle opzioni precedente, si aggiungano le seguenti righe:
#
# forza pppd a usare il proprio nome utente nell'ISP come 'nome host'
# durante il processo di autentificazione
name # si deve modificare questa riga
#
# Se si fa girare un *server* PPP e si ha bisogno di forzare il PAP o
# il CHAP si tolga il commento alla riga appropriata fra le due che
# seguono. NON usarle se si è un client che si connette ad un server
# PPP (anche se questi usa PAP o CHAP) in quanto dicono al SERVER di
# autentificare se stesso nella propria macchina (e quasi certamente
# non potrà farlo e la connessione fallirà).
#+chap
#+pap
#
# Se si usano secret CRIPTATI nel file /etc/ppp/pap-secrets, allora
# togliere il commento alla riga che segue.
# Nota: questo NON è la stessa cosa che usare le password MS criptate
# come si può fare con MS RAS in Windows NT.
#+papcrypt
Usare MSCHAP
Il RAS di Microsoft Windows NT può essere configurato per usare una
variante di CHAP (Challenge/Handshake Authentication Protocol). Nella
distribuzione sorgente di PPP, è possibile trovare un file chiamato
README.MSCHAP80 che lo discute.
Abilitando il debug di pppd è possibile determinare se il server
richiede l'autentificazione usando questo protocollo. Infatti se il
server la richiede, si vedrà una riga di questo tipo:
rcvd [LCP ConfReq id=0x2 ]
L'informazione critica è
Per poter usare MS CHAP, sarà necessario ricompilare pppd per
supportarlo. Si vedano le istruzioni nel file README.MSCHAP80 nei
sorgenti di PPP per le istruzioni su come compilare e usare questa
variante.
Si dovrebbe notare che al momento il codice supporta solo i client
PPP Linux che si connettono ad un server MS Windows NT. Il file secrets di PAP/CHAP
Se si usa l'autentificazione pap o chap, allora si deve creare anche
il file secrets. Questi sono:
/etc/ppp/pap-secrets
/etc/ppp/chap-secrets
Il proprietario dev'essere l'utente root, il gruppo root e per ragioni
di sicurezza i permessi devono essere impostati a 740.
La prima cosa da notare su PAP e CHAP è che sono stati progettati per
autenticare
``Huh? Qual è la differenza?'' Vi chiederete.
Beh, una volta che la propria macchina ha fatto la sua connessione PPP
al server,
PAP può (e CHAP
Il vostro ISP probabilmente vi avrà assegnato un nome utente e una
password per permettervi la connessione al loro sistema e quindi ad
Internet. Il provider non è affatto interessato al nome del vostro
computer, quindi probabilmente si dovrà usare il proprio nome utente
nel proprio ISP come nome per il proprio computer.
Ciò è fatto usando usando l'opzione
name nome_utente_nel_proprio_ISP
al proprio file /etc/ppp/options .
Tecnicamente, si dovrebbe in realtà usare
Poiché PAP è per l'autentificazione di
Non è male notare anche che molti ISP usano banchi di modem multipli
connessi a differenti server terminali, ognuno con un nome diverso, ma
ai quali si ACCEDE (a rotazione) da un unico numero. Può essere quindi
un po' difficile in alcuni casi sapere qual'è il nome del computer
remoto in quanto dipende a quale server terminale ci si connette!
Il file secrets di PAP
Il file /etc/ppp/pap-secrets è qualcosa di simile a
# Secrets per l'autentificazione usando PAP
# client server secret indirizzi_IP_locali_accettabili
I quattro campi sono delimitati da spazi bianchi e l'ultimo può essere
vuoto (il che è probabilmente quello che si vuole per l'allocazione di
indirizzi IP dinamica e probabilmente anche per quella statica da
parte del proprio ISP).
Supponiamo che il proprio ISP assegni il nome utente /etc/ppp/options[.ttySx] e modificare il file
/etc/ppp/pap-secrets come segue
# Secrets per l'autentificazione usando PAP
# client server secret indirizzi_IP_locali_accettabili
fred * flintstone
Questo file dice per il nome di macchina locale
Si noti che non c'è bisogno di specificare un indirizzo IP locale, a
meno che non si voglia FORZARE un indirizzo IP statico
particolare. Anche se si prova, è abbastanza difficile che funzioni
in quanto la maggior parte dei server PPP (per ragioni di sicurezza)
non permettono al sistema remoto di impostare il numero IP che gli
stanno per dare.
Il file secrets di CHAP
Ciò richiede di avere metodi di autentificazione mutua, ovvero si deve
permettere alla propria di macchina di autentificare il server
remoto
Quindi, se la propria macchina è name fred
remotename barney e la macchina remota dovrebbe usare name
barney remotename fred nei rispettivi file
/etc/ppp/options.ttySx .
Il file /etc/chap-secrets per fred dovrebbe assomigliare a
# Secrets per l'autentificazione usando CHAP
# client server secret indirizzo IP locale accettabile
fred barney flintstone
barney fred wilma
e per barney
# Secrets per l'autentificazione usando CHAP
# client server secret indirizzo IP locale accettabile
barney fred flintstone
fred barney wilma
Si noti in particolare che entrambe le macchine devono avere voci per
l'autentificazione bidirezionale. Ciò permette alla macchina locale di
autentificarsi presso il server Gestione di connessioni multiple autentificate con PAP
Alcuni possono connettersi a più di un server che usa PAP. Finché il
proprio nome utente è diverso su ogni macchina alla quale ci si vuole
connettere, questo non è un problema.
Comunque, molti utenti hanno lo stesso nome utente su due (o più o
anche su tutti) sistemi sui quali si connettono. Ciò causa un
problema nella corretta selezione della riga appropriata da
/etc/ppp/pap-secrets .
Come ci si potrebbe aspettare, PPP fornisce un meccanismo per
risolverlo. PPP permette di impostare un 'nome assunto' per la
terminazione remota della connessione (il server) usando l'opzione
Si supponga di connettersi a due server PPP usando il nome utente
fred. Allora si imposterà il proprio /etc/ppp/pap-secrets a
qualcosa così
fred pppserver1 barney
fred pppserver2 wilma
Ora, per impostare la connessione a pppserver1 si dovrebbe usare
name fred remotename pppserver1 nel proprio ppp-options
mentre per pppserver2 name fred remotename pppserver2 .
Poiché è possibile selezionare il file delle opzioni del ppp da usare
con pppd usando l'opzione file nomefile , si può creare uno
script per connettersi ad ognuno dei propri server PPP, prendendo
correttamente il file delle opzioni da usare e quindi selezionando
l'opzione remotename giusta.
Instaurare manualmente una connessione PPP
Una volta creati i propri file /etc/ppp/options e
/etc/resolv.conf (e, se necessario, il file
/etc/ppp/pap|chap-secrets ), è possibile verificare le
impostazioni stabilendo manualmente una connessione PPP (una volta che
la connessione funziona manualmente, automatizzeremo il processo).
Per far ciò, il proprio software di comunicazione dev'essere in grado
di uscire SENZA reinizializzare il modem. Minicom lo può fare con ALT Q
(o nelle versioni più vecchie con CTRL ALT Q).
Ci si assicuri di essere loggati come root.
Si lanci il proprio software di comunicazione (come minicom), si
componga il numero del server e si faccia normalmente il login. Se è
necessario dare un comando per avviare il PPP nel server, lo si
faccia. Ora si vedranno le porcherie di cui si è parlato in
precedenza.
Se si usa pap o chap, allora semplicemente connettendosi al sistema
remoto si dovrebbe far partire il ppp e si vedranno le porcherie senza
fare il login (sebbene ciò possa anche non accadere per alcuni server
- si provi a premere
Ora si esca dal software di comunicazione
pppd -d -detach /dev/ttySx 38400 &
L'opzione -d abilita il debug - la conversazione di avvio di
connessione ppp sarà registrata nei file di log del proprio sistema -
il che torna utile in caso di problemi.
Le lucette del proprio modem dovrebbero accendersi e spegnersi finché
la connessione PPP non è stabilita.
A questo punto si può dare un'occhiata all'interfaccia PPP, usando il
comando
ifconfig
Oltre ai vari dispositivi Ethernet e loopback che si possiedono, si
dovrebbe vedere qualcosa di simile a
ppp0 Link encap:Point-Point Protocol
inet addr:10.144.153.104 P-t-P:10.144.153.51 Mask:255.255.255.0
UP POINTOPOINT RUNNING MTU:552 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0
TX packets:0 errors:0 dropped:0 overruns:0
dove
- inet addr:10.144.153.10 è il numero IP del proprio capo della connessione.
- P-t-P:10.144.153.5 è il numero IP del SERVER.
(naturalmente, ifconfig non riporterà questi numeri IP ma quelli usati
dal proprio server PPP).
Nota: ifconfig dice anche che la connessione è SU e FUNZIONANTE!
Se non viene riportato nessun dispositivo ppp o qualcosa di simile a
ppp0 Link encap:Point-Point Protocol
inet addr:0.0.0.0 P-t-P:0.0.0.0 Mask:0.0.0.0
POINTOPOINT MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0
TX packets:0 errors:0 dropped:0 overruns:0
la propria connessione PPP non è stata fatta...si veda oltre per il debug!
Si dovrebbe essere in grado di vedere anche un instradamento all'host
remoto (ed oltre). Per far ciò, si lanci il comando
route -n
Si dovrebbe vedere qualcosa di simile a
Kernel routing table
Destination Gateway Genmask Flags MSS Window Use Iface
10.144.153.3 * 255.255.255.255 UH 1500 0 1 ppp0
127.0.0.0 * 255.0.0.0 U 3584 0 11 lo
10.0.0.0 * 255.0.0.0 U 1500 0 35 eth0
default 10.144.153.3 * UG 1500 0 5 ppp0
Di particolare importanza, si noti che ci sono DUE voci che puntano
alla propria interfaccia ppp.
La prima è un instradamento di tipo HOST (indicato dal flag H) e che
permette di vedere l'host al quale si è connessi, ma niente altro.
La seconda è l'instradamento predefinito (default), stabilito fornendo
a pppd l'opzione
Se non si vede una tabella di instradamento con queste due voci,
qualcosa è andato storto. In particolare se i log di sistema mostrano
un messaggio che dice che pppd non ha rimpiazzato un instradamento
predefinito, allora si ha l'instradamento predefinito che punta alla
propria interfaccia Ethernet - il quale
Si dovranno allora esplorare i file di inizializzazione del sistema
per trovare dove viene impostato questo instradamento predefinito
(probabilmente verrà usato un comando tipo
Ora si verifichi la connessione facendo 'ping' al server usando il
numero IP riportato dall'output di ifconfig, i.e.
ping 10.144.153.51
Si dovrebbe ricevere un output simile a
PING 10.144.153.51 (10.144.153.51): 56 data bytes
64 bytes from 10.144.153.51: icmp_seq=0 ttl=255 time=328.3 ms
64 bytes from 10.144.153.51: icmp_seq=1 ttl=255 time=190.5 ms
64 bytes from 10.144.153.51: icmp_seq=2 ttl=255 time=187.5 ms
64 bytes from 10.144.153.51: icmp_seq=3 ttl=255 time=170.7 ms
Questo elenco andrà avanti per sempre - per fermarlo si usi CTRL C, e
a quel punto si riceveranno un altro po' di informazioni:
--- 10.144.153.51 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 170.7/219.2/328.3 ms
Fin qua tutto bene.
Ora si provi a fare il ping ad un host usando il suo nome (non il nome
del server PPP stesso ma un host in un altro sito che si SA essere
probabilmente attivo...). Per esempio
ping sunsite.unc.edu
A questo punto ci sarà una piccola pausa mentre Linux ottiene dal DNS
specificato in /etc/resolv.conf il numero IP per il nome host
"fully qualified" al quale si è fatto il ping - quindi non ci si
preoccupi (si vedranno comunque le lucette del modem lampeggiare). In
breve si otterrà un output simile a
PING sunsite.unc.edu (152.2.254.81): 56 data bytes
64 bytes from 152.2.254.81: icmp_seq=0 ttl=254 time=190.1 ms
64 bytes from 152.2.254.81: icmp_seq=1 ttl=254 time=180.6 ms
64 bytes from 152.2.254.81: icmp_seq=2 ttl=254 time=169.8 ms
64 bytes from 152.2.254.81: icmp_seq=3 ttl=254 time=170.6 ms
64 bytes from 152.2.254.81: icmp_seq=4 ttl=254 time=170.6 ms
Ancora, lo si fermi con CTRL C per ottenere le statistiche...
--- sunsite.unc.edu ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 169.8/176.3/190.1 ms
Se non si riceve nessuna risposta, si provi a fare il ping
all'indirizzo IP del server DNS del proprio ISP. Se si ottiene
risposta, allora sembra proprio che ci sia qualche problema nel
proprio /etc/resolv.conf .
Se non funziona, invece si ha un problema di instradamento oppure il
proprio ISP ha qualche problema ad instradare i pacchetti di
ritorno. Si verifichi che la tabella di instradamento sia come quella
vista prima, e se è a posto si contatti il proprio ISP. Un buon test
per ISP è di usare un altro sistema operativo per connettersi. Se si
può andare oltre il proprio ISP con quello, allora il problema dipende
dalla propria terminazione del collegamento.
Se tutto funziona, si può buttare giù la connessione digitando
ppp-off
Dopo una breve pausa, il modem dovrebbe riattaccare da solo.
Se questo non funziona, si spenga il proprio modem oppure si lanci il
proprio software di comunicazione e si interrompa il modem con +++ e
poi si riagganci con ATH0 quando si riceve il prompt OK del modem.
Si deve inoltre cancellare il file di lock creato da pppd
rm -f /var/lock/LCK..ttySx
Automatizzare la propria connessione e creazione degli script
Sebbene si possa continuare a connettersi a mano come appena mostrato,
è molto più elegante creare alcuni script che lo facciano
automaticamente per noi.
Un insieme di script che automatizzano il login e l'avvio del PPP
cosicché tutto quello che si deve fare (come root o come membro del
gruppo PPP) è dare un unico comando che avvii la connessione.
Script di connessione per l'autentificazione con Nome utente/Password
Se il proprio ISP NON richiede l'uso di PAP/CHAP, questi sono gli
script per te!
Se il pacchetto ppp è installato correttamente, si dovrebbero avere
due file di esempio. Per PPP 2.1.2 sono in /usr/sbin e per
PPP 2.2 sono in /etc/ppp/scripts . Si chiamano
per PPP-2.1.2
ppp-on
ppp-off
e per PPP-2.2
ppp-off
ppp-on
ppp-on-dialer
Ora, se si sta usando PPP 2.1.2, suggerisco caldamente di cancellare i
file d'esempio. Ci sono potenziali problemi con questi. E non
venitemi a dire che funzionano bene, li ho usati per anni anch'io (e
li raccomandavo nella prima versione di questo HOWTO)!
A beneficio degli utilizzatori di PPP 2.1.2, qui sono riportate delle
versioni d'esempio MIGLIORI prese dalla distribuzione di PPP
2.2. Suggerisco di copiarsi ed usare questi script Lo script ppp-on
Questo è il primo di una COPPIA di script che lanciano la
connessione.
#!/bin/sh
#
# Script per inizializzare una connessione PPP. Questo è il primo di
# una coppia di script. Questa coppia di script non è sicura in quanto
# il codice è visibile usando il comando `ps'. Comunque, è semplice.
#
# Questi sono i parametri. Li si modifichi a quel che necessita.
TELEPHONE=555-1212 # Il numero telefonico per la connessione
ACCOUNT=george # Il nome di account per il login (come in
# 'George Burns')
PASSWORD=gracie # La password per questo account (e 'Gracie Allen')
LOCAL_IP=0.0.0.0 # Indirizzo IP locale, se noto. Dinamico = 0.0.0.0
REMOTE_IP=0.0.0.0 # Indirizzo IP remoto, se desiderato.
# Dinamico = 0.0.0.0
NETMASK=255.255.255.0 # La netmask appropriata, se necessaria
#
# Gli esporta rendendoli globali così saranno disponibili anche a
# 'ppp-on-dialer'
export TELEPHONE ACCOUNT PASSWORD
#
# Questa è la posizione dello script che compone il numero e fa il
# login. Si invita ad usare il nome file assoluto in quanto la
# variabile $PATH non è usata nelle opzioni di connessione (e farlo in
# un account come 'root' sarebbe un buco di sicurezza, quindi non lo
# si richieda).
#
DIALER_SCRIPT=/etc/ppp/ppp-on-dialer
#
# Inizializza la connessione
#
#
exec /usr/sbin/pppd debug /dev/ttySx 38400 \
$LOCAL_IP:$REMOTE_IP \
connect $DIALER_SCRIPT
Ecco qui lo script ppp-on-dialer:
#!/bin/sh
#
# Questa è la seconda parte dello script ppp-on. Effettua il
# protocollo di connessione per la connessione desiderata.
#
/usr/sbin/chat -v \
TIMEOUT 3 \
ABORT '\nBUSY\r' \
ABORT '\nNO ANSWER\r' \
ABORT '\nRINGING\r\n\r\nRINGING\r' \
'' \rAT \
'OK-+++\c-OK' ATH0 \
TIMEOUT 30 \
OK ATDT$TELEPHONE \
CONNECT '' \
ogin:--ogin: $ACCOUNT \
assword: $PASSWORD
Per PPP-2.2, lo script
#!/bin/sh
######################################################################
#
# Determina il dispositivo da chiudere
#
if [ "$1" = "" ]; then
DEVICE=ppp0
else
DEVICE=$1
fi
######################################################################
#
# Se esiste il pid file ppp0 allora il programma è in esecuzione. Lo
# ferma.
if [ -r /var/run/$DEVICE.pid ]; then
kill -INT `cat /var/run/$DEVICE.pid`
#
# Se il kill non funziona allora non c'è alcun processo in esecuzione
# con questo pid. Significa inoltre che il file di lock è stato
# lasciato lì. Allo stesso tempo si può quindi voler cancellare il
# file di lock.
if [ ! "$?" = "0" ]; then
rm -f /var/run/$DEVICE.pid
echo "ERRORE: Rimozione del vecchio file pid"
exit 1
fi
#
# Successo. Si lascia che pppd pulisca da solo la sua roba vecchia.
echo "Connessione PPP a $DEVICE terminata."
exit 0
fi
#
# Il processo ppp non è in esecuzione per ppp0
echo "ERRORE: connessione PPP non attiva su $DEVICE"
exit 1
Modificare gli script forniti per l'avvio del PPP
Poiché gli script sono due, andremo a modificarne uno alla volta.
Lo script ppp-on
Si deve modificare questo script per riflettere il PROPRIO nome utente
nell'ISP, la PROPRIA password per l'ISP, e il numero di telefono di
quest'ultimo.
Ognuna delle righe simili a
Inoltre, se si imposta il numero IP (se ce n'è bisogno), nel file
/etc/ppp/options si CANCELLI la riga che dice
$LOCAL_IP:$REMOTE_IP \
Inoltre, ci si assicuri che la variabile shell DIALER_SCRIPT punti al
percorso completo e al nome dello script che compone il numero che si
intende usare. Quindi, se si è spostato o rinominato lo script, ci si
assicuri di modificare in modo adeguato lo script Lo script ppp-on-dialer
Questo è il secondo degli script che mettono in funzione la propria
connessione PPP.
Nota: uno script di conversazione (chat) è solitamente tutto in una
riga. I backslash ('\') sono usati per permettere la continuazione di
una riga in più righe fisiche (per comodità di lettura) e non fanno
parte dello script stesso.
Comunque, è molto utile analizzarlo in dettaglio così da capire cosa
realmente fa (o dovrebbe fare)!
Il significato di uno script di conversazione (chat)...
Un script di conversazione è una sequenza di coppie
&dquot; stringa attesa&dquot; &dquot; stringa
inviata&dquot; . In particolare si noti che ci si aspetta
Se si invia qualcosa &dquot;
&dquot; ) e similmente per aspettare qualcosa
senza mandare niente! Inoltre, se una stringa consiste di diverse
parole (p.es. NO CARRIER), bisogna racchiuderla tra apici
in modo che chat la veda come una singola entità.
La riga di conversazione nel nostro esempio è:
exec /usr/sbin/chat -v
Invocando chat, il -v dice a chat di copiare TUTTO il suo I/O nei log
di sistema (solitamente /var/log/messages). Una volta che si è
contenti di come funziona lo script, si modifichi questa riga per
rimuovere il -v per preservare i log di sistema da confusione non
necessaria.
TIMEOUT 3
Questo imposta il timeout per la ricezione di un input atteso a tre
secondi. Ci può essere bisogno di incrementarlo diciamo a 5 o 10
secondi se si usa un modem veramente lento!
ABORT '\nBUSY\r'
Se chat riceve la stringa BUSY, termina l'operazione.
ABORT '\nNO ANSWER\r'
Se chat riceve la stringa NO ANSWER, termina l'operazione.
ABORT '\nRINGING\r\n\r\nRINGING\r'
Se chat riceve (ripetutamente) la stringa RINGING, termina
l'operazione. Significa che qualcuno vi sta chiamando al telefono!
&dquot; \rAT
Attende che il modem non ritorni niente prima di inviare la stringa AT.
OK-+++\c-OK ATH0
Questa è un po' più complicata in quanto sfrutta qualcuna delle capacità
di recupero dagli errori di chat.
Quel che dice è... Attendi OK, se NON è ricevuto (perché in modem non è
in modo comandi) allora invia +++ (la stringa predefinita compatibile
Hayes che riporta il modem in modo comandi) e attendi OK. Poi invia
ATH0 (la stringa di ``riattacco'' del modem). Ciò permette al nostro
script di far fronte alle situazioni nella quali il proprio modem è
``bloccato in linea''!
TIMEOUT 30
Imposta il timeout a 30 secondi per il resto dello script. Se si ha
esperienza di problemi con lo script di chat che termina a causa di
timeout, lo si incrementi a 45 secondi o più.
OK ATDT$TELEPHONE
Attende OK (la risposta del modem al comando ATH0) e compone il numero
che si vuole chiamare.
CONNECT ''
Attende CONNECT (che il modem invia quando il modem remoto risponde) e
non invia niente in risposta.
ogin:--ogin: $ACCOUNT
Ancora, abbiamo anche qui un po' di recupero dagli errori. Aspetta il
prompt per il login (...ogin:) ma se non lo riceve entro il timeout,
invia un return e poi attende ancora il prompt per il login. Quando ha
ricevuto il prompt, invia il nome utente (salvato nella variabile
$ACCOUNT).
assword: $PASSWORD
Attende il prompt per la password e invia la password (ancora salvata
in una variabile shell).
Questo script ha delle ragionevoli capacità per il recupero dagli
errori. chat ha considerevolmente molte più possibilità di quelle qui
dimostrate. Per maggiori informazioni si consulti la pagina di
manuale di chat (L'avvio di PPP dal lato server
Sebbene lo script ppp-on-dialer vada bene per server che avviano
automaticamente il pppd da loro lato della connessione una volta
effettuato il login, alcuni server richiedono che si avvii
esplicitamente il PPP nel server.
Se si deve dare un comando per avviare il PPP sul server, allora si
DEVE modificare lo script ppp-on-dialer.
Alla FINE dello script (dopo la riga della password) si aggiunga
un'altra coppia
Una volta che chat ha trovato il prompt della shell, deve dare il
comando di avvio del PPP richiesto dal proprio ISP.
Nel mio caso, il mio server PPP usa il prompt della Linux Bash
predefinito
[hartr@kepler hartr]$
e richiede che io digiti
ppp
per avviare il PPP sul server.
È una buona idea permettere un po' di recupero dagli errori anche qui,
quindi nel mio caso uso
hartr--hartr ppp
Questo dice che se non si riceve il prompt entro il timeout, di
inviare un ritorno carrello (carriage return) e di cercare un'altra
volta il prompt.
Una volta ricevuto il prompt, allora invia la stringa
Nota: non si dimentichi di aggiungere un \ alla fine della riga
precedente cosicché chat pensi ancora che l'intero script di
conversazione sia in una riga!
Sfortunatamente, alcuni server producono un insieme di prompt molto
variabili. Può essere necessario effettuare più volte il login usando
minicom per capire l'andamento e scegliere una stringa
&dquot;attesa&dquot; stabile.
Uno script di conversazione per le connessioni autentificate con PAP/CHAP
Se il proprio ISP usa PAP/CHAP, allora lo script di conversazione è
molto più semplice. Tutto ciò che lo script deve fare è di comporre il
numero telefonico, attendere la connessione e poi lasciare che pppd
gestisca il login!
#!/bin/sh
#
# Questa è la parte 2 dello script ppp-on. Effettuerà il protocollo di
# connessione per la connessione desiderata.
#
exec /usr/sbin/chat -v \
TIMEOUT 3 \
ABORT '\nBUSY\r' \
ABORT '\nNO ANSWER\r' \
ABORT '\nRINGING\r\n\r\nRINGING\r' \
'' \rAT \
'OK-+++\c-OK' ATH0 \
TIMEOUT 30 \
OK ATDT$TELEPHONE \
CONNECT '' \
Le opzioni "
Come si è già visto, si può abilitare la registrazione delle
informazioni di debug usando l'opzione -d di pppd. L'opzione 'debug' è
equivalente.
Poiché stiamo stabilendo una connessione con un nuovo script, per il
momento si lasci l'opzione per il debug (Attenzione: se lo spazio del
disco è stringente, la registrazione degli scambi pppd può far
aumentare rapidamente la dimensione del file syslog, causando
problemi - questo succede solo nel caso in cui si fallisce la
connessione e si continua a provare per qualche minuto).
Una volta contenti di come tutto funziona, si può rimuovere
questa opzione.
Se si è chiamato il file delle opzioni di ppp con qualcosa di diverso
da /etc/ppp/options o /etc/ppp/options.ttySx , si
specifichi il nome del file con l'opzione
exec /usr/sbin/pppd debug file options.myserver /dev/ttyS0 38400 \
Verificare i propri script di connessione
Si apra un nuovo Xterm per root (se si è in X) oppure si apra una
nuova console virtuale e si faccia il login come root.
In questa nuova sessione, si lanci il comando
tail -f /var/log/messages
(o di qualsiasi altro sia il file di registrazione di sistema).
Nella prima finestra (o console virtuale) si lanci il comando
ppp-on &
(o qualsiasi altro nome con il quale si è chiamato la versione
modificata di /usr/sbin/ppp-on). Se non si fa andare lo script in
background specificando & alla fine del comando, non si riotterrà il
prompt del terminale finché ppp non esce (quando termina il
collegamento).
Ora si torni alla finestra che sta mostrando i log di sistema.
Si vedrà qualcosa di simile a quanto segue (a patto che si sia
specificata l'opzione -v per chat e -d per pppd).... ciò che segue è
quanto lo script di conversazione registra nei log di sistema seguito
dalle informazioni di avvio per pppd:
Oct 21 16:09:58 hwin chat[19868]: abort on (NO CARRIER)
Oct 21 16:09:59 hwin chat[19868]: abort on (BUSY)
Oct 21 16:09:59 hwin chat[19868]: send (ATZ^M)
Oct 21 16:09:59 hwin chat[19868]: expect (OK)
Oct 21 16:10:00 hwin chat[19868]: ATZ^M^M
Oct 21 16:10:00 hwin chat[19868]: OK -- got it
Oct 21 16:10:00 hwin chat[19868]: send (ATDT722298^M)
Oct 21 16:10:00 hwin chat[19868]: expect (CONNECT)
Oct 21 16:10:00 hwin chat[19868]: ^M
Oct 21 16:10:22 hwin chat[19868]: ATDT722298^M^M
Oct 21 16:10:22 hwin chat[19868]: CONNECT -- got it
Oct 21 16:10:22 hwin chat[19868]: send (^M)
Oct 21 16:10:22 hwin chat[19868]: expect (ogin:)
Oct 21 16:10:23 hwin chat[19868]: kepler login: -- got it
Oct 21 16:10:23 hwin chat[19868]: send (hartr^M)
Oct 21 16:10:23 hwin chat[19868]: expect (ssword:)
Oct 21 16:10:23 hwin chat[19868]: hartr^M
Oct 21 16:10:23 hwin chat[19868]: Password: -- got it
Oct 21 16:10:23 hwin chat[19868]: send (??????^M)
Oct 21 16:10:23 hwin chat[19868]: expect (hartr)
Oct 21 16:10:24 hwin chat[19868]: [hartr -- got it
Oct 21 16:10:24 hwin chat[19868]: send (ppp^M)
Oct 21 16:10:27 hwin pppd[19872]: pppd 2.1.2 started by root, uid 0
Oct 21 16:10:27 hwin pppd[19873]: Using interface ppp0
Oct 21 16:10:27 hwin pppd[19873]: Connect: ppp0 <--> /dev/cua1
Oct 21 16:10:27 hwin pppd[19873]: fsm_sdata(LCP): Sent code 1, id 1.
Oct 21 16:10:27 hwin pppd[19873]: LCP: sending Configure-Request, id 1
Oct 21 16:10:27 hwin pppd[19873]: fsm_rconfreq(LCP): Rcvd id 1.
Oct 21 16:10:27 hwin pppd[19873]: lcp_reqci: rcvd MRU
Oct 21 16:10:27 hwin pppd[19873]: (1500)
Oct 21 16:10:27 hwin pppd[19873]: (ACK)
Oct 21 16:10:27 hwin pppd[19873]: lcp_reqci: rcvd ASYNCMAP
Oct 21 16:10:27 hwin pppd[19873]: (0)
Oct 21 16:10:27 hwin pppd[19873]: (ACK)
Oct 21 16:10:27 hwin pppd[19873]: lcp_reqci: rcvd MAGICNUMBER
Oct 21 16:10:27 hwin pppd[19873]: (a098b898)
Oct 21 16:10:27 hwin pppd[19873]: (ACK)
Oct 21 16:10:27 hwin pppd[19873]: lcp_reqci: rcvd PCOMPRESSION
Oct 21 16:10:27 hwin pppd[19873]: (ACK)
Oct 21 16:10:27 hwin pppd[19873]: lcp_reqci: rcvd ACCOMPRESSION
Oct 21 16:10:27 hwin pppd[19873]: (ACK)
Oct 21 16:10:27 hwin pppd[19873]: lcp_reqci: returning CONFACK.
Oct 21 16:10:27 hwin pppd[19873]: fsm_sdata(LCP): Sent code 2, id 1.
Oct 21 16:10:27 hwin pppd[19873]: fsm_rconfack(LCP): Rcvd id 1.
Oct 21 16:10:27 hwin pppd[19873]: fsm_sdata(IPCP): Sent code 1, id 1.
Oct 21 16:10:27 hwin pppd[19873]: IPCP: sending Configure-Request, id 1
Oct 21 16:10:27 hwin pppd[19873]: fsm_rconfreq(IPCP): Rcvd id 1.
Oct 21 16:10:27 hwin pppd[19873]: ipcp: received ADDR
Oct 21 16:10:27 hwin pppd[19873]: (10.144.153.51)
Oct 21 16:10:27 hwin pppd[19873]: (ACK)
Oct 21 16:10:27 hwin pppd[19873]: ipcp: received COMPRESSTYPE
Oct 21 16:10:27 hwin pppd[19873]: (45)
Oct 21 16:10:27 hwin pppd[19873]: (ACK)
Oct 21 16:10:27 hwin pppd[19873]: ipcp: returning Configure-ACK
Oct 21 16:10:28 hwin pppd[19873]: fsm_sdata(IPCP): Sent code 2, id 1.
Oct 21 16:10:30 hwin pppd[19873]: fsm_sdata(IPCP): Sent code 1, id 1.
Oct 21 16:10:30 hwin pppd[19873]: IPCP: sending Configure-Request, id 1
Oct 21 16:10:30 hwin pppd[19873]: fsm_rconfreq(IPCP): Rcvd id 255.
Oct 21 16:10:31 hwin pppd[19873]: ipcp: received ADDR
Oct 21 16:10:31 hwin pppd[19873]: (10.144.153.51)
Oct 21 16:10:31 hwin pppd[19873]: (ACK)
Oct 21 16:10:31 hwin pppd[19873]: ipcp: received COMPRESSTYPE
Oct 21 16:10:31 hwin pppd[19873]: (45)
Oct 21 16:10:31 hwin pppd[19873]: (ACK)
Oct 21 16:10:31 hwin pppd[19873]: ipcp: returning Configure-ACK
Oct 21 16:10:31 hwin pppd[19873]: fsm_sdata(IPCP): Sent code 2, id 255.
Oct 21 16:10:31 hwin pppd[19873]: fsm_rconfack(IPCP): Rcvd id 1.
Oct 21 16:10:31 hwin pppd[19873]: ipcp: up
Oct 21 16:10:31 hwin pppd[19873]: local IP address 10.144.153.104
Oct 21 16:10:31 hwin pppd[19873]: remote IP address 10.144.153.51
Si noti che uso numeri IP STATICI, quindi la mia macchina li spedisce
al server PPP, e quindi non si vedrà questa parte se si usano numeri
IP DINAMICI. Inoltre questo server richiede un comando specifico per
avviare il ppp dalla sua parte.
Se tutto sembra OK, lo si verifichi ulteriormente come prima con ping
a numeri IP e a nomi di host.
Si lanci il proprio web browser o quant'altro e si cominci a navigare, si è finalmente connessi!
Chiudere la connessione PPP
Quando si è finito di usare la connessione PPP, si usi il comando
standard ppp-off per buttarla giù (si ricorda che bisogna essere o
root oppure un membro del gruppo PPP!).
Nei file di log di sistema di vedrà qualcosa di simile a:
Oct 21 16:10:45 hwin pppd[19873]: Interrupt received: terminating link
Oct 21 16:10:45 hwin pppd[19873]: ipcp: down
Oct 21 16:10:45 hwin pppd[19873]: default route ioctl(SIOCDELRT): Bad address
Oct 21 16:10:45 hwin pppd[19873]: fsm_sdata(LCP): Sent code 5, id 2.
Oct 21 16:10:46 hwin pppd[19873]: fsm_rtermack(LCP).
Oct 21 16:10:46 hwin pppd[19873]: Connection terminated.
Oct 21 16:10:46 hwin pppd[19873]: Exit.
Non ci si preoccupi del Risoluzione dei problemi
Ci possono essere diversi motivi per i quali la propria connessione non
funziona: chat non è arrivato correttamente alla fine della sua
esecuzione, oppure si ha una linea molto disturbata, ecc. Quindi si
controlli nei log di sistema per indicazioni.
Ho compilato il supporto per il PPP nel kernel, ma...
Un problema molto comune è che la gente compila il supporto per il PPP
nel kernel, ed ancora quando provano a lanciare pppd, il kernel
afferma che non ha il supporto per il ppp! Ci sono diverse ragioni per
le quali ciò può accadere.
Si è fatto il boot con il kernel giusto?
Sebbene si sia /etc/lilo.conf
e rilanciato lilo.
Una buona verifica sul kernel la si può ottenere usando il comando
Linux archenland 2.0.28 #2 Thu Feb 13 12:31:37 EST 1997 i586
Questa mostra la versione del kernel e la data della sua compilazione,
che dovrebbero dare un'idea abbastanza buona di cosa sta funzionando.
Si è compilato il supporto per il ppp come modulo?
Se si è compilato il supporto per il ppp a livello kernel come modulo,
ma non si sono creati ed installati i moduli, allora si può ottenere
questo tipo di errore. Si veda il Kernel-HOWTO e il file README in
/usr/src/linux !
Un'altra possibilità connessa ai moduli è che ci si aspetta che il
modulo sia caricato automaticamente, ma non è in esecuzione il demone
Si sta usando la versione corretta di PPP per il proprio kernel?
Si Si sta eseguendo pppd come root?
Se non si esegue pppd come utente root (e pppd non è suid a root), si
può ricevere questo messaggio.
Il mio modem si connette ma il ppp non parte mai
Ci sono innumerevoli variazioni sul tema (si dia un'occhiata a
comp.os.linux...).
Un errore
Nella registrazione si devono controllare molto attentamente i prompt
reali, tenendo bene in mente che noi umani abbiamo la tendenza a
leggere quello che PENSIAMO di aver scritto, e non quello che c'è
realmente scritto!
Il log di sistema dice ``
Ci sono anche qui delle varianti, come
Per capire cosa succede in questi casi, è necessario comprendere un
po' di quel che succede dietro le quinte durante l'esecuzione di pppd.
Quando pppd viene avviato, invia pacchetti LCP (Link Control Protocol -
Protocollo di Controllo del Collegamento) alla macchina remota. Se
riceve una risposta valida allora passa allo stadio successivo (usando
pacchetti IPCP - IP Control Protocol - Protocollo di Controllo IP) e
solo quando questa negoziazione è completa viene avviato lo strato IP
in modo che si possa usare la connessione PPP.
Se non c'è un server ppp funzionante all'altro capo quando il proprio
PC invia pacchetti LCP, questi vengono riflessi dal processo di login
della terminazione remota della connessione. Poiché questi pacchetti
usano 8 bit, la loro riflessione causa la soppressione dell'ottavo bit
(si ricorda che ASCII è un codice a 7 bit). Il PPP vede questo e si
comporta di conseguenza.
Ci sono diverse ragioni per cui può avvenire questa riflessione.
Non ci si è loggati correttamente nel server
Quando il proprio script di conversazione termina, pppd viene avviato
nel proprio PC. Comunque, se non si è completato il processo di login
nel server (incluso l'invio di un qualsiasi comando necessario per
avviare il PPP nel server), PPP non verrà avviato.
Quindi, i pacchetti LCP sono riflessi e si riceve questo errore.
Si deve controllare attentamente e correggere (se necessario) il
proprio script di conversazione (si veda più indietro).
Non si è avviato il PPP nel server
Alcuni server PPP richiedono l'inserimento di un comando e/o di un
RETURN dopo la completazione del processo di login prima di avviare il
ppp dal loro lato della connessione.
Si verifichi il proprio script di conversazione (si veda più indietro).
Se si fa il login manualmente e si scopre che è necessario inviare un
RETURN per avviare il PPP, si aggiunga semplicemente una coppia di
stringhe attesa/inviata vuote alla fine del proprio script di
conversazione (una stringa vuota in realtà invia un RETURN).
Il processo PPP remoto è lento a partire
Questa è un po' una birichinata!
Di default, il proprio pppd è compilato per inviare un massimo di 10
richieste di configurazione lcp. Se il server è un po' lento a
partire, tutte le 10 richieste possono essere spedite prima che il
server sia pronto a riceverle.
Nella propria macchina, pppd si vede tutte le 10 richieste che gli
tornano indietro (senza l'ottavo bit) ed esce.
Ci sono due modi per aggirare questo problema:
Aggiungere un
In alternativa, si può essere un po' furbini. Si dovrebbe aver notato
che quando si fa il login a mano nel server PPP e il PPP viene
avviato, il
Usando questa conoscenza a priori, si può aggiungere una nuova coppia
di stringhe attesa/inviata alla fine dello script di
conversazione che aspetta una tilde e non invia niente. Cioè qualcosa
di simile a:
\~ ''
Nota: poiché il carattere tilde ha un significato particolare nella
shell, ne deve essere fatto l'escape (e quindi metterci prima un
backslash).
Instradamento predefinito non impostato (
Se pppd si rifiuta di impostare un instradamento predefinito, è perché
(abbastanza giustamente) si rifiuta di rimuovere/rimpiazzare un
instradamento predefinito preesistente.
La ragione classica per cui capita questo errore è che alcune
distribuzioni impostano l'instradamento predefinito verso la propria
scheda Ethernet invece di impostare uno specifico instradamento di
rete.
Si veda la Linux NAG ed il Net2/3 HOWTO per informazioni su come
impostare correttamente la propria scheda Ethernet e gli instradamenti
associati.
Un'altra ragione potrebbe essere che la propria LAN usi già un
gateway/router e che la propria tabella di instradamento sia già
impostata per puntare, tramite l'instradamento predefinito, a tale
gateway.
Sistemare questa situazione può richiedere un po' di buone nozioni di
IP networking e va oltre lo scopo di questo HOWTO. Si consiglia di
trovare qualche aiuto esperto (tramite newsgroup o da qualcuno a cui
si possa chiedere la soluzione e che sia raggiungibile in maniera
diretta).
Altri problemi
Ci sono molte ragioni oltre a queste che possono causare il fallimento
della connessione ppp e/o non farla funzionare correttamente.
Si vedano le PPP FAQ (che sono veramente una serie di domande e
risposte). È un documento omnicomprensivo e le risposte SONO lì! Per
la mia (brutta) esperienza, se le risposte al proprio problema non
solo lì, il problema NON è un errore del ppp! Nel mio caso usavo un
kernel ELF e non avevo aggiornato i moduli correttamente. Ho perso
solamente due giorni (e buona parte di una notte) a stanare quello che
si è rivelato essere un perfetto server PPP prima delle luci
dell'alba!
Ottenere aiuto quando ormai non si sa più cosa provare
Se non si riesce a far funzionare la propria connessione PPP, si
riveda tutto questo documento e si verifichi tutto, in congiunzione
con l'output creato da "chat -v..." e "pppd -d" nel log di sistema.
Si consulti anche la documentazione di PPP e le FAQ, oltre agli altri
documenti qui citati!
Se ancora non se ne esce, si provi nei newsgroup comp.os.linux.misc e
comp.os.linux.networking che sono regolarmente seguiti da persone che
possono aiutare con il PPP, così come nel newsgroup comp.protocols.ppp
Si può pure provare a mandare a me una email personale, ma non ho una
giornata lavorativa (e di vita) regolare e quindi non garantisco di
rispondere rapidamente, in quanto tutto dipende dal carico di lavoro
attuale e dallo stato della mia vita privata!
In particolare, NON SI POSTINO RISME DI OUTPUT DI DEBUG NEI GRUPPI
DI DISCUSSIONE E NEMMENO LI SI SPEDISCA A ME VIA EMAIL , nel primo
caso si sprecherà un sacco di banda e nel secondo verranno consegnati
a /dev/null (a meno che io non li abbia espressamente richiesti).
Problemi comuni una volta che il collegamento funziona
Un problema che si troverà è che i provider supportano solamente il
pacchetto software di connessione che loro stessi distribuiscono ai
nuovi abbonati. Questo è (tipicamente) per Microsoft Windows :-( e
molti servizi di supporto clienti sembrano non saperne niente di Unix
(o Linux). Così, ci si prepari ad un'assistenza molto limitata da
quella parte.
Si potrebbe comunque fare a quegli individui un favore ed educarli su
Linux (qualsiasi persona che lavora nel supporto clienti di un ISP
dovrebbe essere abbastanza addentro alla terminologia di Internet e
dovrebbe quindi avere a casa una macchina Linux!)
Non riesco a vedere niente oltre al server PPP al quale mi connetto
OK, la propria connessione PPP è su e funzionante e si può fare ping
al server PPP con il suo numero IP (il secondo o ``remoto'' numero IP
mostrato da
Prima di tutto, si provi a fare ping ai numeri IP specificati nel
proprio /etc/resolv.conf come name server. Se questi funzionano, si
ping my.provider.net.au
Se questo NON funziona, si ha un problema con la risoluzione dei
nomi. Ciò probabilmente dipende da un errore di battitura nel proprio
file /etc/resolv.conf. Lo si controlli accuratamente con le informazioni
ottenute chiamando il proprio provider. Se tutto sembra a posto, si
chiami il proprio provider e si verifichi di aver scritto
correttamente i numeri IP.
Se ANCORA non funziona (e il proprio provider conferma che i suoi name
server sono attivi e funzionanti), c'è un problema da qualche altra
parte, e suggerisco di controllare attentamente la propria
installazione di Linux (in particolare si controllino i permessi dei
file).
Se ANCORA non si riesce a fare ping ai name server del proprio
provider tramite i loro numeri IP, allora questi non sono attivi (si
chiami il provider al telefono e si controlli) oppure c'è qualche
problema di instradamento da parte del proprio provider. Ancora, lo si
chiami e si verifichi.
Una possibilità è che la "terminazione remota" sia un server PPP Linux
nel quale non sia stata specificata l'opzione di IP forwarding nel
kernel!
Una buona verifica generale è di provare a connettersi al proprio
provider usando il software che molti di questi forniscono per (gulp)
Microsoft Windows. Se tutto funziona da un altro sistema operativo con
esattamente lo stesso account, allora il problema è nel proprio
sistema Linux e NON nel proprio provider.
Posso spedire email, ma non posso riceverla
Se si stanno usando numeri IP dinamici, è perfettamente normale. Si veda
[ più avanti.
]Perché la gente non può fare finger, WWW, gopher, talk nella mia macchina?
Ancora, se si stanno usando numeri IP dinamici, è perfettamente
normale. Si veda [ più avanti.
]Usare i servizi Internet con numeri IP dinamici
Se si stanno usando numeri IP dinamici (e molti provider danno solo
numeri IP dinamici a meno che non si paghi significativamente di più
per la propria connessione), allora si debbono accettare le
limitazioni che questo impone.
Prima di tutto, le richieste di servizi esterni funzioneranno
bene. Ovvero, si possono spedire email usando sendmail (a patto di
averlo configurato correttamente), scaricare file in ftp da siti
remoti, fare finger ad utenti su altre macchine, navigare nel web, ecc.
In particolare, si può rispondere mentre si è off line (ovvero non si
è connessi) alle email che si sono scaricate nella propria
macchine. La posta resterà semplicemente in attesa nella propria coda
di posta (mail queue) finché non ci si connette al proprio ISP.
Comunque, la propria macchina NON è connessa ad Internet 24 ore al
giorno, né ha lo stesso numero IP ogni volta che viene
connessa. È quindi impossibile ricevere email direttamente nella
propria macchina e veramente molto difficile configurare un server
web o ftp a cui possano accedere i propri amici! Per come Internet
è progettata la propria macchina non esiste come macchina unica e
permanentemente contattabile quanto non ha un unico numero
IP (si ricordi che altre macchine useranno il numero IP a voi
assegnato in una connessione, quando gli viega allocato per la loro
connessione).
Se si configura un server WWW (o qualsiasi altro server), tale server
rimane totalmente sconosciuto a qualsiasi utente in Internet FINCHÉ
questi non sappiano che la macchina è connessa E quale sia il suo
reale (e momentaneo) numero IP. Ci sono diversi modi per far ottenere
ad altri utenti questa informazione: si può chiamarli o mandargli
un email per dirglielo oppure usare in modo astuto i file ".plan" su
un account shell nel proprio provider (assunto che questi permetta
accessi shell e finger).
Ora, per la maggior parte degli utenti questo non è un problema: tutto
ciò che la maggior parte della gente vuole è inviare e ricevere email
(usando il proprio account nel provider) e fare connessioni in uscita in
WWW, ftp e ad altri servizi su Internet. Se veramente si DEBBONO
avere connessioni entranti nella propria macchina, si dovrebbe realmente
ottenere un numero IP statico. In alternativa si possono esplorare i
metodi suggeriti in precedenza...
Configurazione dell'email
Anche per numeri IP dinamici, si può certamente configurare sendmail
sulla propria macchina per spedire fuori qualsiasi email composta
localmente. La configurazione di sendmail può essere oscura e
difficoltosa, quindi questo documento non prova nemmeno a dire come
farla. Comunque, si dovrebbe probabilmente configurare sendmail
cosicché il proprio ISP sia designato come proprio "smart relay" host
(l'opzione
Ci sono anche eccellenti libri su Sendmail (da citare la 'bibbia'
della O'Reilly and Associates), ma questi esulano quasi certamente
dalle necessità della maggior parte degli utenti!
Una volta configurato sendmail, probabilmente si vorrà fare in modo
che, non appena la connessione PPP è attiva, sendmail spedisca
qualsiasi messaggio in attesa nella coda di email in uscita. Per far
ciò, si aggiunga il comando
sendmail -q &
al proprio script /etc/ppp/ip-up (si veda più avanti).
Le email in ingresso sono un problema nel caso di numeri IP
dinamici. Il modo per gestirle è di:
- configurare il proprio mail user agent (elm, pine, ecc.) in modo
che tutta la posta venga spedita spedita fuori con un header "reply"
che riporti il proprio indirizzo di email nel proprio ISP.
Se possibile, si dovrebbe anche impostare il proprio indirizzo FROM al
proprio indirizzo email nel proprio provider.
- usare i programmi popclient o fetchmail per scaricare la propria
posta dal proprio provider. In alternativa, se il proprio ISP usa
IMAP, usare un MUA che supporta IMAP (come pine).
Si può automatizzare questo processo al momento dell'attivazione delle
connessione mettendo i comandi appropriati nello script
/etc/ppp/ip-up (si veda più avanti).
Configurare un name server locale
Sebbene si possano tranquillamente usare i DNS localizzati nel proprio
ISP, si può anche impostare un name server (secondario) di sola cache
locale che venga attivato dallo script ip-up. Il vantaggio di usare un
name server locale (di sola cache) è che fa risparmiare tempo (e
banda) se si contattano frequentemente gli stessi siti durante una
lunga sessione on-line.
La configurazione di un DNS di sola cache (che usi una riga
``forwarders'' che punta al DNS dell'ISP nel file named.boot) è
relativamente semplice. Il libro della O'Reilly (DNS and Bind)
spiega tutto quello che serve sapere sull'argomento.
È disponibile anche un DNS-HOWTO.
Se si fa funzionare una piccola LAN che può accedere Internet
attraverso il proprio PC Linux (usando IP Masquerade per esempio),
probabilmente è una buona idea far girare un name server locale (con
una direttiva forwarders) quando la connessione è attiva, in quanto
ciò minimizzerà la banda e il ritardo associato con la risoluzione di
nomi.
Una nota di Netiquette (galateo della rete): si chieda il permesso al
proprio ISP prima di iniziare ad usare un name server secondario di
sola cache nel dominio del proprio ISP. Propriamente configurato, il
proprio DNS non causerà nessun problema a proprio provider, ma se si
sbaglia qualcuno ne può causare.
Connettere assieme due reti usando PPP
In linea di principio non c'è differenza tra il collegare una macchina
Linux ad un server PPP e il collegare due LAN usando PPP su una
macchina di ognuna delle LAN. Si ricordi che il PPP è un protocollo
Comunque, si deve
Se si ha intenzione di usare il sub networking in un numero IP di rete
su entrambi i lati della connessione, si troverà utile il Linux sub
networking mini-howto (bozza). È disponibile a .
Per poter connettere due LAN, si Impostare i numeri IP
Ci si metta d'accordo con l'amministratore di rete dell'altra LAN su i
numeri IP che saranno usati per ognuno degli estremi dell'interfaccia
PPP. Se si stanno usando numeri IP statici, ciò probabilmente richiede che ci
si connetta ad uno specifico numero telefonico.
Si modifichi il file /etc/ppp/options[.ttyXX] appropriato - è
una buona idea avere un modem e porta specifici dal proprio lato per
questa connessione. Può essere pure necessario modificare il
proprio file /etc/ppp/options , e creare appositi file
options.ttyXX per le altre connessioni!
Si specifichino i numeri IP per il proprio lato del collegamento PPP
nel file delle opzioni appropriato esattamente come mostrato in
precedenza per i numeri IP statici.
Impostare l'instradamento
Ci si deve organizzare in modo che i pacchetti nella propria LAN locale
siano instradati attraverso l'interfaccia che la connessione PPP
stabilisce. Questo è un processo in due stadi.
Prima di tutto, si deve stabilire un instradamento dalla macchina che
esegue la connessione PPP alla(e) rete(i) all'altro estremo del
collegamento. Se il collegamento è verso Internet, ciò può essere gestito
dall'instradamento predefinito stabilito da pppd stesso nel proprio
estremo della connessione, usando l'opzione 'defaultroute'.
Se comunque, la connessione è solo un collegamento tra due LAN, allora
deve essere aggiunto un instradamento di rete specifico per ognuna
delle reti accessibili attraverso la connessione. Ciò è fatto usando un
comando 'route' per ognuna delle reti nello script /etc/ppp/ip-up (si
veda [ per le
istruzioni su come farlo).
]
La seconda cosa che bisogna fare è dire agli altri computer sulla
propria LAN che la propria macchina Linux è in realtà un 'gateway'
(passaggio) per la(e) rete(i) all'altro estremo della connessione
PPP.
Naturalmente, l'amministratore di rete dell'altro estremo della
connessione ppp deve fare anche lui le stesse cose! Comunque, poiché
egli instraderà i pacchetti per la vostra rete specifica, sarà
richiesto un'Sicurezza di rete
Se si connette la propria LAN ad Internet usando PPP, anche solamente
ad una LAN &dquot;straniera&dquot;, si deve essere consci delle
questioni sulla sicurezza. Suggerisco caldamente di considerare la
configurazione di un firewall!
Si dovrebbe parlare con l'amministratore LAN del proprio sito
Dopo che la connessione è attiva: lo script /etc/ppp/ip-up
Una volta che la connessione PPP è attiva, pppd cerca il file