Capitolo 17. Instaurare manualmente una connessione PPP

Ora che si sono creati i 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 farlo, il proprio software di comunicazione deve essere in grado di uscire SENZA reinizializzare il modem. Minicom lo può fare - ALT Q (o nelle versioni più vecchie di minicom CTRL ALT Q).

Ci si assicuri di avere accesso 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 vedrà la spazzatura di cui si è parlato in precedenza.

Se si usa pap o chap, allora semplicemente connettendosi al sistema remoto si dovrebbe fare partire il ppp e si vedrà la spazzatura senza fare il login (sebbene possa anche non accadere per alcuni server - si provi a premere Enter e si veda se inizia la spazzatura).

Ora si esca dal software di comunicazione senza reinizializzare il modem (ALT Q o CTRL A Q in minicom) e al prompt di Linux (come root) si digiti...

pppd -d -detach /dev/ttySx 38400 &

L'opzione -d abilita il debug - la conversazione di avvio della connessione ppp sarà registrata nel 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. Ci vorrà un po' di tempo perché la connessione PPP venga attivata.

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

(Naturalmente, ifconfig non riporterà questi numeri IP ma quelli usati dal proprio server PPP.)

Nota: ifconfig dice anche che la connessione è ATTIVA e FUNZIONANTE!

Se non viene riportato nessun dispositivo ppp o qualcosa come:-

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 effettuata... Si veda più avanti per il debug!

Si dovrebbe essere in grado di vedere anche un instradamento all'host remoto (ed oltre). Per farlo, si dia 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 qui, 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 nient'altro.

La seconda è l'instradamento predefinito (default route - stabilito fornendo a pppd l'opzione defaultroute). Questo è l'instradamento che dice al proprio PC Linux di inviare qualsiasi pacchetto NON destinato alle Ethernet locali - per le quali ci sono degli instradamenti specifici - al server PPP stesso. Il server PPP è poi responsabile dell'instradamento dei nostri pacchetti verso Internet e dell'instradamento dei pacchetti di ritorno verso di noi.

Se non si vede una tabella di instradamento con queste due voci, qualcosa è andato storto. In particolare, se il log di sistema mostra un messaggio che dice che pppd non ha rimpiazzato un instradamento predefinito esistente, allora si ha un instradamento predefinito che punta alla propria interfaccia Ethernet - il quale DEVE essere sostituito da un instradamento di rete specifico: SI PUÒ AVERE SOLO UN INSTRADAMENTO PREDEFINITO!!!

Si dovranno allora esplorare i file di inizializzazione del sistema per trovare dove viene impostato questo instradamento predefinito (verrà usato un comando come route add default...). Si cambi questo comando in qualcosa come route add net....

Ora si verifichi la connessione facendo 'ping' al server usando il numero IP riportato dall'output di ifconfig, cioè

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 prema 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

Fino a qua tutto bene.

Ora si provi a fare 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 qualificato (fully qualified host name) al quale si è fatto il ping - quindi non ci si preoccupi (ma si vedranno 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 ping all'indirizzo IP del server DNS del proprio ISP. Se si ottiene risposta, allora sembra proprio che ci sia qualche problema in /etc/resolv.conf.

Se non funziona, si ha invece un problema di instradamento oppure il proprio ISP ha qualche problema ad instradare i pacchetti di ritorno. Si verifichi la tabella di instradamento come mostrato precedentemente, e se è a posto si contatti il proprio ISP. Un buon test per l'ISP è di usare un altro sistema operativo per connettersi. Se si riesce ad andare oltre il proprio ISP con quello, allora il problema dipende dalla propria estremità del collegamento.

Se tutto funziona, si disattivi la connessione digitando:-

ppp-off

Dopo una breve pausa, il modem dovrebbe riattaccare da solo.

Se 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 la risposta OK del modem.

Può essere inoltre necessario cancellare il file di lock creato da pppd.
rm -f /var/lock/LCK..ttySx