SLIP/PPP Emulator HOWTO

a cura di Irish <irish@eskimo.com>

Versione 3.0 (aggiornata al 8/7/97)

1. Introduzione

Questo documento descriverà come riuscire a far connettere la vostra macchina Linux ad un sito qualunque usando un emulatore SLIP/PPP, ad esempio SLiRP o TIA. Non mi assumo nessuna responsabilità per il vostro utilizzo di queste informazioni, ma le correzioni sono benvenute.

Non proverò a descrivere tutto quello che può essere fatto su questa connessione dopo che è stata stabilita, ma farò riferimento ad altri documenti o siti che conterranno le informazioni più importanti.

Fatto questo, cominciamo!

2. Come funziona un emulatore?

È importante capire come funziona in generale un emulatore SLIP/PPP, per rendersi conto dei suoi limiti. Innanzitutto, non è necessario che installiate l'emulatore sulla vostra macchina. L'emulatore gira soltanto sul vostro host remoto. È richiesta l'installazione dei protocolli TCP/IP e SLIP o PPP nel kernel sulla vostra macchina (cose che tra un po' approfondiremo), e di qualche client.

Ecco cosa succede: voi spedite delle richieste di rete dalla vostra macchina al vostro host remoto attraverso il collegamento SLIP/PPP. L'emulatore le cattura e le invia in generale fuori sulla Rete. Poi i dati in ingresso vengono mandati indietro dalla Rete al vostro account sull'host remoto, dove l'emulatore le cattura e le invia indietro sul collegamento SLIP/PPP alla vostra macchina. Sicché, alla Rete sembra come se voi steste operando dal vostro account sull'host remoto, ma a voi appare come se foste davvero connessi proprio alla Rete.

Come potete vedere, ciò può confondere la roba che è in arrivo dalla Rete. Ad esempio, talk non funziona con un emulatore, perché la richiesta in ingresso di talk cerca di lanciare il demone talk sull'host remoto, non sul vostro.

L'altra profonda differenza tra un emulatore ed un vero SLIP/PPP è che NON vi viene assegnato un indirizzo IP univoco; ricordate, state soltanto convertendo un dialup account in una connessione SLIP/PPP.

2.1 Cos'è il TIA?

"The Intenet Adaptor" (L'Adattatore Internet ndt) è stato scritto dai genietti di marketplace.com. Ora hanno smesso di lavorarci sopra e lo considerano un prodotto 'maturo'. L'ultima versione è la 2.05; se avete intenzione di utilizzare TIA, procuratevi per cortesia questa versione.

NOTA Secondo le ultime voci, sono disponibili ora soltanto licenze per siti.

2.2 Cos'è lo SLiRP?

Si tratta di un programma freeware, coperto dalla GNU Public License. Al momento ne è uscita una beta, ed è molto stabile. Sfoggia un po' di funzionalità in più rispetto a TIA, ed è (a quanto dicono) più accomodante sulle risorse dell'host. Disponibile dappertutto presso i siti FTP su Linux.

2.3 Che dire di Term?

Se non avete l'accesso di root presso la vostra macchina per una ragione o per un'altra, e non potete convincere qualcuno che ce l'ha ad installare SLIP e dip, allora non avrete molte possibilità tranne l'utilizzo di Term. Se ne volete sapere di più su Term, per favore leggete l'HOWTO su Sunsite.

2.4 Che dire del vero SLIP/PPP?

Hey, oggigiorno un sacco di posti stanno offrendo del vero SLIP/PPP per dialup non dedicate a prezzi ragionevoli. Se ve lo potete permettere o ne sentite il bisogno, prendetelo. La Cosa Vera è sempre migliore dell'emulazione. Comunque uno dei vantaggi di un emulatore è la sicurezza; funziona come un firewall impenetrabile, e usandolo siete corazzati abbastanza, esattamente come il vostro provider. Dovrete tuttavia pagare per questo vantaggio, l'emulazione è più lenta e non supporta appieno tutti i protocolli. Ancora, e concludo, l'emulazione è sufficiente per la maggior parte delle persone ed è una buona maniera di collegarsi alla Rete/Internet.

2.5 Ne ho abbastanza! Come inizio?

Va bene, ci stiamo arrivando, ma prima c'è qualche informazione di cui avete bisogno, ed un paio di spiegazioni.

Innanzitutto, avete bisogno di ottenere l'indirizzo IP del vostro provider, se non lo avete già. Potete ottenerlo scrivendo 'who' al prompt di shell presso di loro, o leggendo il loro /etc/hosts, o anche soltanto chiedendoglielo. Mentre ve lo procurate, prendete l'indirizzo IP dell'host POP/SMTP e del server NNTP (se non sapete cosa sono queste cose, fidatevi di me e chiedetele lo stesso, ne avrete bisogno).

In secondo luogo, fatemi spiegare velocemente qualcosa sull'hostname e sul nome di dominio. L'hostname è la prima parte di un nome delle macchine, il dominio è la sua parte restante. Più o meno così: nomehost.dominio.nome (una divisione in quattro sarebbe nomehost.do.minio.nome). Insieme essi formano un Fully Qualified Domain Name o FQDN (Nome di Dominio Pienamente Qualificato ndt).

Il nome della vostra macchina Linux viene conservato in /etc/HOSTNAME, e sì, potete cambiarlo. Infatti, per favore fatelo (se state usando Slackware, sarà per default "darkstar.frop.org"). Basta editare il file /etc/HOSTNAME per essere qualunque cosa vogliate - ricordate, se state usando un emulatore, allora siete praticamente invisibile per la Rete in generale, sicché potete essere creativi. Comunque, se state progettando di ottenere prima o poi una vera connessione SLIP/PPP, probabilmente vorrete adattarvi ad essere un sub-host del vostro provider. Ad esempio, se il vostro provider è "info.superhiway.com", il dominio è "superhiway.com" e il nome dell'host è "info". Allora potreste essere sia "offramp.info.superhiway.com" che soltanto "offramp.superhiway.com". Funzionerebbero entrambi, ed in entrambi i casi il vostro hostname è "offramp".

3. Preparare la vostra macchina Linux

In due parole, ecco di cosa avete bisogno. Spiegherò le prime tre cose approfonditamente.

Avrete anche bisogno di prendere un appropriato emulatore binario per il vostro host remoto e di installarlo. SLiRP è disponibile presso Sunsite e altri siti FTP su Linux. Tutte le informazioni importanti per TIA sono disponibili presso il sito principale di TIA.

Fatto! Cominciamo.

3.1 Compilare il vostro kernel

Se non l'avete mai fatto, allora dovreste farlo. E dovreste leggere prima le FAQ, ma non vi preoccupate, è facile. Se volete, mi potete spedire una e-mail e vi darò una mano.

Darò per scontato che sappiate farlo, per amore di brevità. Quando fate il 'make config', cercate "Network Devices". Mettete 'y', naturalmente, poi mettete 'y' a SLIP, CSLIP, (o PPP) e TCP/IP e 'n' a tutto il resto, a meno che non abbiate delle schede ethernet oppure abbiate bisogno di qualche altro protocollo per qualcos'altro. Se non lo fate, non funzionerà! Terminate la compilazione e l'installazione del nuovo kernel, poi,

3.2 Editare qualche file in /etc

Questi file inizializzeranno i vostri percorsi verso il vostro host remoto. /etc è la directory per le configurazioni del sistema. Sostituite tutto quello che è tra virgolette con i valori appropriati, naturalmente (ma non inserite le virgolette, servono da promemoria). Ci sono tre file che dovete cambiare e sono:

3.3 DIP

DIP (Dialup Internet Protocol) è ciò che userete per chiamare l'host remoto, lanciare l'emulatore e convertire la linea in un SLIP/PPP. È presente nel pacchetto "N" della Slackware, insieme ad un sacco di client e di utility, qualcuna delle quali potreste anche volerla installare =). È anche disponibile presso Sunsite in un singolo file .tar

Una volta installato, avrete bisogno di uno script dip. Qui c'è un esempio, basta inserire la roba giusta dove stanno le virgolette (ma non inserite le virgolette, servono solo da promemoria).

       
----------TAGLIA QUI--------------------------------

main:
  get $local "vostrohostname.dominio.nome"
  get $remote "hostnameremoto.dominio.nome"

# La vostra porta qui
  port cua"?"

# Usate 115200 per i modem 28.8 
  speed 57400
  reset

# non usate gli spazi nella vostra stringa di comando AT!
  init AT "string of commands"
  wait OK 5

# Questo farà richiamare. Se non funziona, giocate con il tempo di attesa
# (ascoltate il vostro modem). Se non funziona ancora, scrivetemi.
# _Guardate anche la nota alla fine dello script re: error codes._

dial:
  dial "phonenumber"
  print Dialing...
  if $errlvl != 0 goto error

# Potreste aver bisogno di cambiare questo tempo di attesa per 
# adattarlo al vostro modem
  wait BUSY 20
  if $errlvl == 0 goto dial

login:
  print Connected and Logging in...

# Questo "wait" e "send" mi fa superare i miei host Annex. _Cambiatelo 
# per il vostro sito!_
  wait ==> 60
  send 4\n
  wait ogin: 60
  if $errlvl != 0 goto login_error1
  send "LOGIN"\n
  wait assword: 60
  if $errlvl != 0 goto login_error2
  send "PASSWORD"\n

loggedin:
  wait "SYSTEM PROMPT" 60
  if $errlvl != 0 goto shell_error
  print Logged in!
  send "emulator startup command"\n
  wait "emulator startup response" 60
  if $errlvl != 0 goto emu_error

# Il valore raccomandato di mtu è 1500, ma questo è più veloce in modo
# interattivo. L'ftp potrebbe essere più lento, sicché modificatelo a
# piacere. 
  get $mtu 296
  default

done:
  print CONNECTED to $remote with address $rmtip
  mode CSLIP
  goto exit

error:
  print Dialing Error

login_error1:
  print No Login

login_error2:
  print No Password prompt

shell_error:
  print No shell prompt

emu_error:
  There was a problem starting the emulator

exit:

# Questo provocherà un errore quando si usa il flag -v, ma funziona 
# quando lo lanciate normalmente (termina dip ad un prompt locale).
  \r
-------------TAGLIA QUI-----------------------------

Dip fa notare che versioni più recenti di dip non ritornano i codici dello status del modem (BUSY, NO CONNECT, etc.), al loro posto usano dei numeri. Ecco una tabella:

Questo dovrebbe rendere la vostra sezione di composizione telefonica somigliante a questo:

dial:
  dial "phonenumber"
  print Dialing...
  if $errlvl != 0 goto error
  wait 1 20
  if $errlvl != 1 goto dial

Ringrazio Lee Olds (lee@eskimo.com) per questa parte.

\n = nuova linea, \r = a capo. Potreste aver bisogno di uno dei due (o di entrambi) nei posti giusti. Se quelli forniti non funzionano, fate degli esperimenti.

Una nota sul modo in cui sono scritti il "wait" e i "send". Se non risulta chiaro dall'esempio, ecco cosa sta succedendo:

Potete inserire dei comandi di pausa se ne avete bisogno, in questo modo: "sleep 10" Questo metterà in pausa lo script per 10 secondi.

Dopo aver scritto questo file, rinominatelo, diciamo, come remote.dip ed inseritelo in /root. Poi, come root, avviate 'dip remote'. Usate il flag -v la prima volta per fare un debug ('dip -v remote'), questo flag vi mostrerà tutti i passi che dip compie.

Dip si avvierà soltanto come root, ma c'è un modo per farlo partire da un account utente. Per ora, se avete bisogno di questa informazione, chiedetemela. Posso inserirla in questo file più in là, se la vogliono abbastanza persone.

Se il dip emette subito un segnale d'errore, provate a togliere i commenti dallo script.

3.4 PPP

Quanto detto sopra vi fa navigare con il CSLIP, il che è davvero un'ottima cosa la maggior parte delle volte. È davvero facile farlo funzionare, dal momento che il protocollo è supportato al livello del kernel - soltanto accertatevi che stia lì e che funzioni.

Comunque, qualcuno di voi vorrà il PPP, per motivi che soltanto voi potete dire. Non vi dirò qui come installarlo, esiste un altro intero HOWTO scritto apposta. Quello che farò è dirvi cosa c'è da capire quando si usa il PPP con un emulatore.

Innanzitutto, nell'ultima versione del DIP si afferma che potete usarlo per lanciare il PPP e potete farlo, MA fa partire soltanto il demone PPP - nessun flag, niente. Sicché se volete usare DIP per lanciare il PPP, assicuratevi di inserire tutte le informazioni di avvio nel file /etc/ppp/options, altrimenti non funzionerà.

Parlando del file delle opzioni, una delle cose che DEVONO essere presenti al suo interno a prescindere da come lanciate il pppd è questa: '192.0.2.1:XXX.XXX.XX.XX'. Che è 'indirizzoIPlocale:indirizzoIPremoto'. Ne avete bisogno perché di norma il pppd può riempire da solo questa riga vuota, ma non ci riesce se si connette ad un emulatore.

Assicuratevi di prendere l'ultima release del pacchetto pppd e la più grande. Sembra che recentemente ci siano state alcune versioni che avevano qualche problema.

Infine, a meno che non abbiate una buona ragione per usare il PPP, o vogliate soltanto imparare come funziona, non ne avete veramente bisogno. Ho sperimentato entrambi e non ho notato nessuna differenza di prestazione con il set standard dei client. Naturalmente, il Vostro Chilometraggio Può Variare. :)

4. E ora?

Hey, se è andato tutto bene, ora siete connessi ad Internet! Provate un 'telnet remotehostname' (ricordate quella abbreviazione nel vostro file host?). Dovreste ottenere il prompt remoto di login del telnet. Continuate, provatelo! Ora potete usare telnet/FTP/ecc. dappetutto sulla Rete dalla vostra macchina locale. Come? La vostra macchina sta utilizzando quella remota come un nameserver per risolvere gli indirizzi (resolv.conf). Sperimentate, scoprite cosa funziona e cosa no.

Non potrete usare i servizi che non siano già attivati sul vostro host remoto! Ad esempio, se il vostro server non permette i telnet, è probabile che neanche voi possiate farlo. Perché? Perché l'emulatore sta soltando trasferendo quello che è già disponibile.

4.1 Posta

L'ovvia soluzione non grafica è Pine, che si può scaricare dall'Università di Washington.

La mia scelta per il 'Miglior Programma di Posta, Basato su X ' va a XFmail. Al momento ne è uscita la beta, e va forte. Facile da installare; non ha bisogno di un sistema locale di posta installato (ma funzionerà con gli spool locali) perché ha in sè il POP - basta con popclient/fetchpop! Facile da usare; completamente personalizzabile dalla GUI. Supporta anche il MIME. Prendetelo dal sito principale di The XFmail.

4.2 News

Il News Reader testuale SLRN è in tutta onestà semplice da installare e di facile utilizzo. È un vero NNTP newsreader, il che significa che non è necessario nessun trasporto locale di news per farlo funzionare (non è necessario che installiate Cnews o INN). È necessario, naturalmente, che abbiate accesso ad un server NNTP, ma questo servizio è fornito dalla maggior parte degli ISP. È un programma testuale, ma usa i colore ed ha il supporto per il mouse, e funziona bene in una finestra rxvt.

Il News Reader KNews, funzionante in X, è quasi perfetto. Come per il precedente SLRN, non è necessario alcun trasporto locale, ma necessita di un server NNTP. Vale quanto meno un'occhiata.

4.3 Mosaic/Netscape

Ovviamente, avrete bisogno che X sia attivo per farlo funzionare, ma si tratta semplicemente di scaricare via FTP il file binario, spacchettarlo, ed installarlo.

5. Miscellanea

Se ho dimenticato qualcosa, o avete ancora delle domande, io leggo la mia posta quotidianamente. Questo articolo viene aggiornato abbastanza regolarmente, perciò tornate a controllarlo piuttosto spesso (cambierò i numeri della versione). Naturalmente, più contribuite, più informazioni saranno inserite qui, perciò non esitate a dirmi qualunque cosa avete da offrire.

Se voleste avere un aiuto, o state sperimentando dei problemi con il vostro setup, vi aiuterò, ma dovete inviarmi le seguenti informazioni:

  1. Una copia dei vostri tre file /etc.
  2. Una copia dell'output prodotto dal vostro script, lanciato con la -v flag (per favore togliete la vostra password da lì!).
Anche se non avete nessuna aggiunta da fare, ma avete usato questo documento con successo, PER FAVORE SCRIVETEMI. Voglio sapere quanto in realtà risulta utile quello che ho scritto.

5.1 Riferimenti

Sunsite è il sito FTP di sunsite.unc.edu, una autentica pletora di ogni cosa su Linux, comprese quasi tutte le FAQ, gli HOWTO e i README scritti.

Marketplace.com è il sito principale del TIA, l'unico posto dove è disponibile. Io sono Irish, irish@eskimo.com, disponibile per commenti su Linux praticamente ogni giorno, quando non sto coccolando il mio gatto o abbracciando mio figlio.

Documentazione tradotta da Francesco Rana <francesco.rana@libero.it>

Questo HOWTO è disponibile nei seguenti posti: