GulP! GulP!
Benvenuti dal Gruppo Utenti Linux Piombino!

Questa pagina non utilizza frames per massima compatibilità con tutti i browser
e minimizza l'utilizzo di immagini per velocizzare il caricamento. Enjoy!

Ruler
Menu

Home
lo Statuto
Pagine Personali
Documentazione
Software
i Link


Ruler


L'accesso a Internet (seconda parte)

allora,
come promesso trattiamo ora la configurazione vera e propria della connessione a Internet. Innanzitutto, come funzionano le cose?


Nozioni Generali


Quando si effettua la connessione al provider, il nostro computer invia un pacchetto di dati al server per richiamare la sua attenzione. Il server risponde ed ha inizio una procedura che è definita "Handshake" ossia "Stretta di Mano"; proprio come due persone che si incontrano, si danno la mano e si scambiano informazioni come per esempio il nome, il nostro computer manda al server i dati per la connessione che consistono sostanzialmente nello USERNAME e nella PASSWORD. Il Server li verifica, fa mente locale e decide se accettarci o no. A questo punto ha inizio uno scambio di dati in trasmissione/ricezione che permette a noi di fare richieste al server, e al server di mandarci le risposte. Questa è una spiegazione piuttosto grossolana di cosa succede nella pratica. Ma vediamo un po' più da vicino...

L'Handshake

Perchè si possa stabilire una connessione, abbiamo bisogno di due cose, essenzialmente, ossia:

1) il supporto PPP nel kernel (che c'è sempre nei kernel di default)
2) un programma che mandi comandi al modem e riceva ed interpreti i dati in arrivo : pppd

il pppd è un cosiddetto DEMONE, ossia un programma che gira in background ed esegue dei compiti specifici, nel nostro caso tenere viva la connessione. Nella directory /etc/ppp del nostro sistema linux, ci sono sempre degli script di esempio da poter usare per creare il nostro personale script di connessione; quello di default si chiama in genere ip-up ed è complesso e commentato. Ma a noi, ora che sappiamo quale programma usare, basta leggere la documentazione di pppd (con un "man pppd") per creare in pochi minuti tutto il necessario. Dunque: la sintassi di pppd è la seguente:

pppd [tty device] [speed] [options]

dove "tty device" sta per il nome della periferica con cui fare la connessione, nelnostro caso il modem; generalmente, il sistema fa un link simbolico alla porta seriale utilizzata dal modem e lo chiama /dev/modem, quindi questo sarà il device a cui riferirsi: /dev/modem.
"speed" setta la velocità della porta seriale, che conviene mettere a 115000 anche se il modem è a 56K. "options" sono tutti i parametri che pppd accetta come operazioni da eseguire: comporre il numero di telefono, mandare questo e quello, etc...
Bene, ora è giusto sapere che pppd NON SA comporre un numero telefonico, e che questo compito viene in realtà eseguito da un secondo programma che si chiama chat. Il programma non ha niente a che vedere con la chat tipo IRC, ma è un mezzo eccellente per comunicare col modem. la nostra stringa che lancia pppd assume in questo modo il seguente aspetto:

pppd lock connect '/usr/bin/chat -v -f conf_di_chat'

seguita da opzioni varie che ora vedremo.
Il flag "-v" indica a chat di eseguire tutte le operazioni in "verbose mode", ossia dicendoci dettagliatamente tutto quello che sta facendo.
Il flag "-f conf_di_chat" dice a chat di leggere tutti i comandi e le impostazioni dal file "conf_di_chat".
Ma che argomenti richiede chat? Per semplicità incollo qui direttamente il mio "conf_di_chat" (che nella pratica si chiama net.chat)


TIMEOUT 60
ABORT "NO CARRIER"
ABORT BUSY
ABORT "NO DIALTONE"
ABORT ERROR
REPORT CARRIER
REPORT CONNECT
"" +++ATZ
OK ATDT0565123456
CONNECT ""
sername: gulp
assword: culo

Cos'è questa roba?
E' quello che comunemente viene definito come script expect/send ossia un insieme di coppie di valori ordinati dove il primo è quello che ci si aspetta di ricevere dal modem, e il secondo quello che il nostro computer gli deve rispondere.
Lo script dice che quando si comunica col modem si deve "mollare la connessione" nei seguenti casi: non c'è risposta (NO CARRIER), è occupato, non c'è linea telefonica (NO DIALTONE), si verifica un errore.
poi si chiede al modem di dirci quando c'è risposta e connessione, dopodichè senza che il modem ci dica nulla (la stringa "") si invia un comando di reset (+++ATZ) per essere sicuri che nessuna impostazione precedente pregiudichi la nostra connessione.
quando il modem risponde con un OK, gli si dice di comporre il numero (ATDT0565123456); qui ovviamente va messo il giusto numero del provider;.)
quando arriva il messaggio di connessione (CONNECT) non si risponde nulla (ancora la stringa "")
E qui una finezza; siccome può succedere che per cattiva trasmissione si perdano dei dati, per essere sicuri di riconoscere quando il provider ci chiede di fare il login (con la richiesta "username:") si dice al modem che è sufficiente attendere "sername:" per inviare il nostro USERNAME; la stessa cosa avviene per la richiesta della password.

A questo punto, se username e password sono corretti parte la connessione e si può aprire un browser per visualizzare pagine web o far partire una sessione ftp.

La parte semplice: i due script di collegamento!

A questo punto abbiamo le informazioni per automatizzare tutti i compiti descritti qui sopra; basta fare due script: uno che lancia pppd ed uno che contiene i dati da scambiare. I due script sono qui, pronti da copiare e modificare e si chiamano net e net.chat:

#!/bin/bash
#
# net
#
# uno script per la connessione.
# utilizza net.chat come file di configurazione.
#
localip=0.0.0.0
remoteip=
device=/dev/modem
pppflags="57600 modem debug defaultroute"
/usr/sbin/pppd lock connect '/usr/sbin/chat -v -f /etc/ppp/net.chat' $device $pppflags $localip:$remoteip

e qui di seguito lo script net.chat:

TIMEOUT 60
ABORT "NO CARRIER"
ABORT BUSY
ABORT "NO DIALTONE"
ABORT ERROR
REPORT CARRIER
REPORT CONNECT
"" +++ATZ
OK ATDT0565123456
CONNECT ""
sername: gulp
assword: culo


Dove li metto?

Gli script in questione vanno messi nella medesima directory, purchè sia nel path, altrimenti lanciando net il sistema non lo troverà a meno che si premetta un "./".
Per i meno pratici:

bisogna copiare e incollare ( o riscrivere ) gli script qui sopra; salvarli; poi dare i permessi di esecuzione a net, altrimenti non lo eseguiremo mai!!!
lo si fa con:

chmod +x net

Novita'!!!!

Come al solito, il Perl entra a far parte della mia e delle vostre esistenze, e si manifesta in uno script che ho fatto apposta per voi:
Gulpnet
che potete scaricare seguendo il link, decomprimere con tar xvzf gulpnet.tgz ed eseguire. Lui si occupera' di chiedervi tutto sulla vostra connessione e creera' gli script adatti.
enjoy!