  #PPP Linux-IT HOWTO
  Salvatore Sanfilippo md5330@mclink.it (AntireZ on irc)
  v0.3, 18 Marzo 1998

  Questo documento non dovrebbe esistere... poiche' la documentazione
  ufficiale del PPP ed il PPP-HOWTO sono piu' che sufficienti. Visto che
  comunque su #Linux-IT le richieste di aiuto a proposito del PPP continuano
  copiose come non mai, ho deciso di scriverlo.

  *** Vi prego di scusarmi per sviste, imprecisioni, lamer-ate, errori di
  *** ortografia, semantica, sintassi e tutto quello che ho potuto combinare.
  *** L'autore non si assume la responsabilita' per i possibili danni
  *** causati dalle cattive indicazioni di questo testo.

  Copyright

  *No Copyright*, stracopiate, modificate, aggiornate ecc. ecc.

  Distribuzione

  Potete trovare questo documento su http://www.kyuzz.org/antirez

  Se per caso non lo trovate alla URL citata sopra provate a chiederlo
  sul canale #Linux-IT di IRCnet.
  Spero che sia presto presente un bot per la distribuzione di file in modo 
  automatico.

  Storia delle revisioni:

	Versione 0.1, 6 Gennaio 1998.
		Prima versione, ad uso del canale #linux-it.

	Versione 0.2, 9 Gennaio 1998.
		Revisione della forma e correzione di alcune imprecisoni,
                aggiunta della sezione 'Qualcosa non va?'.

	Versione 0.3, 15 Marzo   1998.
		Modifica del nome da PPP-Lamer-HOWTO a PPP-LinuxIT-HOWTO,
		leggera revisione generale,
		qualche dettaglio sulle opzioni demone pppd,
		breve guida ai comandi AT,
		uso di isapnp per usare dei modem PnP.

  Ringraziamenti

  Il raffreddore che mi ha piantato a casa facendomi venire la voglia di
  scrivere questo piccolo howto,

  la spremuta di arancia, che mi ha guarito... :)

  #Linux-IT,
  
  tutti quelli che mi hanno aiutato e mi aiuteranno con linux,
  
  Valentina Balbo (lawendy on irc) che ha corretto la forma (0.1 e 0.2),
  
  ellisia (on irc) che ha corretto la forma (0.3)

  Pancrazio De Mauro (Trantor on irc) che mi ha dato preziose indicazioni
  sulle cose che non andavano bene e su come modificarle.

  Alessandro Altamura (Sandrokan on irc) per il suo PPP-come, che ho usato
  come spunto per scrivere la parte inerente al PAP, nonche' per i consigli 
  che mi ha dato.
 
  1. Introduzione

  Ci siamo, hai appena finito di installare Linux, sembra funzionare tutto
  abbastanza bene, ma c'e' un problema. Non riesci a configurare Linux per
  il PPP e sei costretto a collegarti ancora con findus95. Non mi soffermo
  neppure per un attimo su cosa sia tecnicamente il PPP, perche' mi manca la
  competenza e questa non e' la sede adatta. Per quello c'e' la documentazione 
  di linux. Si assuma qui che il PPP e' il modo in cui quasi tutti gli 
  utenti Linux devono collegarsi al loro provider. Nel caso il tuo provider 
  non supporti il PPP ma lo SLIP riferisciti a qualche altro documento.

  ******************************* NOTA BENE *******************************
  * Per come e' strutturato e per la logica seguita in fase di scrittura  *
  * questo HOWTO deve essere letto TUTTO ED IN MANIERA SEQUENZIALE per    *
  * essere compreso pienamente.                                           *
  *************************************************************************

  1.1. Cose da fare a priori

  Prima di iniziare a configurare la connessione ci sono alcune cose
  assolutamente fondamentali che devono essere presenti nel tuo sistema
  Linux. Diciamo che le piu' importanti sono:

	A- un modem ;)
	B- il supporto per il PPP nel tuo kernel
	C- il demone pppd ed il programma chat
	D- minicom ( o altro programma di comunicazione, ma 
          io faccio riferimento a lui )
	E- un editor, quale vi, emacs, joe o altro.

  
  A. Il modem deve essere correttamente installato e configurato. Per
  configurare il modem in Linux, basta, nella maggior parte dei casi, creare
  un link simbolico sotto /dev con il seguente comando.

  ln -sf /dev/cua0 /dev/modem ( se in windoz si aveva il modem su COM1)
  ln -sf /dev/cua1 /dev/modem ( COM2 )
  ln -sf /dev/cua2 /dev/modem ( COM3 )
  ln -sf /dev/cua3 /dev/modem ( COM4 )

  Se la vostra distribuzione e' la RedHat potete configurare il modem dal
  pannello di controllo.

  *** Tenete presente che se il modem e' di tipo PnP c'e' la possibilita'
  che questo non sia nella stessa 'COM' di findus95, o peggio, che non sia 
  riconosciuto affatto. In questo caso dovete usare *isapnp*. Non e'
  semplicissimo ma alla fine riuscirete a far andare il vostro modem.
  Potete usare isapnp anche nel caso in cui il modem si auto-settasse
  in una porta/irq che crea conflitto.

  *** PER MAGGIORI INFORMAZIONI VEDERE LA SEZIONE RIGUARDANTE isapnp *** 

  In ogni caso per vedere le porte seriali che Linux ha riconosciuto al
  momento del boot lanciate il comando 'dmesg | grep tty'.
  Otterrete un output tipo questo:

  	tty00 at 0x03f8 (irq = 4) is a 16550A
  	tty01 at 0x02f8 (irq = 3) is a 16550A
  	tty02 at 0x03e8 (irq = 4) is a 16550A (nel mio caso questo e' il modem)

  Nel mio caso il modem e' la terza porta seriale riconosciuta da linux, cioe'
  tty02, dunque nel link simbolico che ho fatto ho usando cua2.
  Ultimo avvertimento riguardo ai modem. Se il sistema sul quale state
  operando e' portatile ed il modem e' su scheda PCMCIA dovete prima
  attivare il supporto per le schede PCMCIA.
  In tal caso riferitevi al PCMCIA-HOWTO di David Hinds.
 
  Se il modem e' ben installato, facendo partire minicom si
  deve vedere a video uno stringa simile alla seguente:

  AT S7=45 S0=0 L1 V1 X4 &c1 E1 Q0
  OK
  
  B. Un'altra cosa veramente indispensabile e' che il kernel del tuo pc
  sia compilato con il supporto per il PPP, altrimenti non c'e' soluzione.
  Se sei con il kernel standard della tua distribuzione linux il supporto
  per il PPP c'e' quasi di sicuro, in caso contrario dovrai compilare un
  kernel abilitando questa opzione. Un modo semplice per vedere se nel tuo
  kernel il supporto per il PPP e' presente e' usare il comando 'dmesg |
  grep PPP' che cerca le righe che contengono la stringa PPP tra i messaggi
  di boot. Se il tuo kernel ha il supporto per il PPP l'output del comando
  sara' simile a questo: (in questo caso passa pure al punto C)

  	PPP: version 2.2.0 (dynamic channel allocation)
  	PPP Dynamic channel allocation code copyright 1995 Caldera, Inc.
  	PPP line discipline registered.

  Se invece non vedi nessun output ci sono due possibili soluzioni: Il
  tuo kernel non ha il supporto per il PPP o lo carica al bisogno ( nel
  caso di kernel modulari ). Puoi accertarti lanciando il comando 'pppd'. 
  Se il supporto per il PPP non e' presente nel tuo kernel il pppd ti 
  avvisa, se invece tutto e' ok vedrai qualcosa di simile:

  	~}#A!}!}!} }2}!}$}%}%}&y}'}"}(}"}'~~}#A!}!}!}......
  

  C. Devi accertarti che sia il demone pppd che il programma chat siano
  presenti nel tuo sistema, poiche' sono essenziali per la connessione in  
  PPP. per assicurarti che siano installati prova a lanciare 'pppd' e 'chat'.
  Nel caso in cui la shell ti ristituisse uno dei due seguenti messaggi
  di errore:

  	bash: pppd: command not found

  	bash: chat: command not found

  molto probabilmente hai la necessita' di installare questi questi programmi.
  In tal caso consulta la tua distribuzione ed installali.

  D. Minicom non e' strettamente necessario, specialmente se il provider al
  quale ci si sta connettendo usa il PAP, in ogni caso e' meglio che sia
  presente nel sistema. Se digitando 'minicom' si ottiene un messaggio
  di errore e' conveniente installarlo. In caso contrario se minicom parte
  lo si puo' quittare con la combinazione di tasti '<CTRL>+a x'.

  
  E. Per configurare il PPP si devono editare alcuni file di sistema e
  crearne degli altri. Per questo e' necessario un editor. E' estremamente
  probabile che nel vostro sistema sia gia' presente l'editor vi, mentre
  invece non c'e' alcuna sicurezza che sia presente un'altro editor. Se
  non volete usare vi poiche' lo trovate criptico installate un altro
  editor. Se invece volete usare vi ecco un mini corso di sopravvivenza...
  
  p.s. Se in dos avevate familiarita' con WordStar provate ad usare joe.
  Se avete installato pine, provate pico. E' un editor molto povero ma
  facilissimo da usare, a prova di lamer ;).
  
  1.2. mini-corso di sopravvivenza con l'editor vi

  La prima cosa da sapere a proposito dell'editor vi e' che questo possiede
  due modalita'. Una in cui si inseriscono i comandi ed una in cui si
  inserisce/edita il testo. Si passa dalla modalita' comandi a quella di
  inserimento se si aziona un comando di inserimento, viceversa di passa
  dalla modalita' di inserimento a quella dei comandi grazie al tasto ESC.
  Non vi dico nient'altro... vi do questa tabella:

  *** per spostarsi usare i tasti h,j,k,l o, se il vostro terminale
      le supporta, le frecce.
  
  comando	descrizione

  a		attiva la modalita' di inserimento dopo il cursore
  i             attiva la modalita' di inserimento prima del cursore
  I             attiva l'inserimento all'inizio della riga corrente
  A		attiva l'inserimento alla fine della riga corrente
  x		cancella il carattere su cui si e' posizionati
  dd		cancella tutta la riga corrente
  :w		salva il file modificato
  :q		esce da vi
  :q!		esce da vi senza salvare le modifiche.

  *** alcuni comandi se preceduti da un numero vengono eseguiti n volte.
  *** ad esempio digitando 4x si ottiene la cancellazione di 4 caratteri.

  tutto qui, buona fortuna con vi! ;)

  1.3. Dimmi come ti collegavi con findus95.. e ti diro' chi sei
  
  Esaurite le premesse si parte con la configurazione del PPP. Un elemento
  fondamentale da conoscere per configurare la connesione e' il metodo di
  autenticazione che usa il vostro provider. I metodi piu' comuni sono i
  seguenti:

  	- Autenticazione tramite terminale
	- PAP
	- CHAP ( il meno diffuso, *non e' trattato in questo howto* )

  Per sapere quale usa il vostro provider fate una telefonata o attenetevi
  alle seguenti indicazioni di massima (molto di massima...):
  
  * Il vostro provider usa il terminale se nella connessione con windows, 
    dopo i fischi del modem, si apre una finestra nera dove bisogna 
    immettere user e password o qualcosa del genere e poi premere ok o F7.
    Un esempio di provider che usa il terminale e' mclink.

  * Il vostro provider usa il PAP se dovete mettere negli appositi spazi
    della form di windows il nome utente e la password e premere su
    connetti, senza alcuna finestra nera che si apre.
    Un esempio di provider che usa il PAP e' tin.
    *** (attenzione! anche nel caso del CHAP win95 apparira' cosi')

  n.b. Purtroppo non mi e' mai capitato di configurare una connessione in
  CHAP, dunque non posso trattare l'argomento. Spero che questa sezione 
  sia inserita da qualcun'altro.

  *************************************************************************
  * Dovete pretendere che il vostro provider vi dia, cosi' come fa per    *
  * win95, le istruzioni per il collegamento con Linux!!!. Provate a      *
  * chiederle. Prima o poi, se le richieste sono in numero sufficiente,   *
  * si adegueranno al fatto che molti scelgono Linux.                     *
  *************************************************************************

  1.4. Connettersi con l'autenticazione tramite terminale

  Per connetterti con l'autenticazione tramite terminale ci sono due modi.
  Uno un po' scomodo usando il minicom, uno piu' comodo tramite il
  programma chat. In pratica tramite minicom/chat si crea la connessione
  seriale vera e propria in cui si inserisce la user e la password, fatto
  questo il pppd aggancia questa connessione ed instaura il PPP.
  
  1.4.1. Un primo tentativo

  In ogni caso e' bene fare un primo tentativo con minicom. Lanciate
  minicom, (un veloce help sui comandi puo' essere ottenuto tramite la
  combinazione di tasti '<CTRL>+a z'), componete il numero di telefono del
  vostro provider con uno di questi comandi, partite dal primo, se non
  va provate via via con quelli appresso:

  	ATDTnumero (esempio ATDT321446)
	ATX3DTnumero
	ATDPnumero
	ATX3DPnumero

  Dovreste sentire il modem che emette i soliti fischi.
  Se tutto e' andato bene dovrebbe apparire la procedura di autenticazione
  del provider, ad esempio:

	Canaglia-Net s.p.a.
	Via Cardarella n.5 ecc.. ecc..
	
	username:

  Immettere username/password o codice_utente/password o simili.
  Dopo un po'dovreste vedere un messaggio come 'Attiva il
  tuo PPP' o semplicemente qualcosa di simile:

	~?}#A!}!}!} }2}!}$}%\}%}& ~~y}'}"}(}"}'\~~?}#A!}!}!}......

  In ambedue i casi si deve sospendere minicom (<CTRL>+a j), con il risultato
  di trovarsi nuovamente al prompt. A questo punto date il seguente comando:
  
  /usr/sbin/pppd /dev/modem debug crtscts modem defaultroute noipdefault asyncmap 0
                                            ( attenzione, continua --------> )

  Aspettate un 15 secondi ed infine lanciate il comando 'ifconfig',
  dovreste avere un output molto simile a questo:

             # ifconfig
   lo        Link encap:Local Loopback
             inet addr:127.0.0.1  Bcast:127.255.255.255  Mask:255.0.0.0
             UP BROADCAST LOOPBACK RUNNING  MTU:3584  Metric:1
             RX packets:0 errors:0 dropped:0 overruns:0
             TX packets:0 errors:0 dropped:0 overruns:0
   
   ppp0      Link encap:Point-Point Protocol
             inet addr:195.110.133.216  P-t-P:195.110.133.192 Mask:255.255.255.0
             UP POINTOPOINT RUNNING  MTU:1500  Metric:1
             RX packets:10 errors:0 dropped:0 overruns:0
             TX packets:10 errors:0 dropped:0 overruns:0

  Se invece qualcosa e' andato storto si vedra' solo la sezione riguardante
  'lo', cioe' il loopback locale. In questo caso andate a vedere sotto, alla
  sezione "Qualcosa non va?".

  Se tutto e' andato bene e si vede comparire il benedetto ppp0 testate la
  connessione facendo un ping ad esempio al server dns del vostro provider,
  o magari semplicemente all'indirizzo che vedete dopo il P-t-P nell'output
  dell'ifconfig (e' il pc che vi routa i pacchetti).
  Nel caso dell'esempio lanciando 'ping 195.110.133.192'. Se tutto funziona
  bene si dovrebbe avere un output simile: (bloccare il ping con <CTRL>+c)

    # ping 195.110.133.192

    PING 195.110.133.192 (195.110.133.192): 56 data bytes
    64 bytes from 195.110.133.192: icmp_seq=0 ttl=255 time=1358.4 ms
    64 bytes from 195.110.133.192: icmp_seq=1 ttl=255 time=1242.0 ms
    64 bytes from 195.110.133.192: icmp_seq=2 ttl=255 time=901.6 ms
    64 bytes from 195.110.133.192: icmp_seq=3 ttl=255 time=1242.1 ms
    64 bytes from 195.110.133.192: icmp_seq=4 ttl=255 time=1082.0 ms

    --- 195.110.133.192 ping statistics ---
    6 packets transmitted, 5 packets received, 16% packet loss
    round-trip min/avg/max = 901.6/1165.2/1358.4 ms

  A questo punto si puo' benissimo staccare la connessione con
  il seguente comando:

          kill -INT `cat /var/run/ppp0.pid`
 
  ( il cat e' racchiuso tra ` ` (ALT+96) e non tra ' ' )
  
  Beh.. se siete arrivati fin qui senza problemi e' tutto a posto! Non ci
  resta che configurare il tutto in maniera permanente.

  1.4.2. La configurazione vera e propria.

  Se avete deciso di usare sempre minicom per la vostra connessione le cose
  che dovete fare a questo punto sono veramente poche.
  
  Editate il file /etc/resolv.conf per settare il vostro server dns.
  Il server dns fara' in modo che la vostra connessione funzioni anche
  con gli indirizzi 'umani' come ad esempio sunsite.unc.edu, che sara'
  automaticamente tradotto nell'indirizzo numerico 152.2.254.81,
  l'/etc/resolv.conf deve contenere le seguenti righe:
  
	domain dominio.del.tuo.provider
	nameserver 192.106.166.1 (l'indirizzo del tuo nameserver)
	nameserver xxx.yyy.zzz.kkk (eventuali altri nameserver)
  
  ********************************************************************
  * Se non conosci l'indirizzo del dns del tuo provider puoi usare   *
  * 192.106.166.1 o 194.243.154.62 o ancora 151.99.125.2             *
  ********************************************************************

  Il dominio del tuo provider e' l'ultima parte (quella sempre fissa) del
  dns del tuo ip dinamico. Ad esempio il dominio di net133-207.mclink.it e'
  mclink.it. Nonostante sia bene mettere il giusto dominio, un errore non
  comporta il non funzionamento del PPP.
  
  Il passo successivo e' la creazione dello script /etc/ppp/ppp-start (o un 
  altro qualsiasi nome), che si occupera' di far partire il pppd. Il file
  deve contenere le seguenti righe...

   #!/bin/sh
   /usr/sbin/pppd /dev/modem 115200 debug crtscts modem defaultroute noipdefault

  e deve essere reso eseguibile con il comando 'chmod 700 /etc/ppp/ppp-start'
  Infine per una questione di comodita' esegui il comando:

	  ln -sf /etc/ppp/ppp-start /usr/bin/ppp-start 

  che fara' in modo che il ppp-start sia eseguibile a prescindere dalla 
  directory in cui ti trovi.

  E' necessario anche lo script che chiude la connessione. Basta creare
  un file /etc/ppp/ppp-stop che contiene le due seguenti righe:
  
  #!/bin/sh
  kill -INT `cat /var/run/ppp0.pid`
  
  *** nota che il cat e' racchiuso tra ` ` (ALT+96) e non tra ' '
 
  Lo script ppp-off va reso eseguibile con il comando:

  	chmod 700 /etc/ppp/ppp-stop

  Edita inoltre il file /etc/ppp/options ed assicurati che contenga la sola 
  riga:

  	debug

  E' necessario mettere debug in options poiche' tale file *deve* contenere
  qualcosa. Altrimenti sarebbe vuoto, perche' abbiamo scelto di passare 
  le opzioni al pppd come argomenti.

  A dire il vero sono molte le opzioni che possono essere passate al pppd
  tramite questo file, questa semplificazione e' voluta per non complicare
  le cose, poiche' si assume che ci siano delle difficolta' con il PPP.
  Per maggiori informazioni vedi la sezione 2.0 'pppd visto da vicino'.

  Bene, hai finito. Da ora in poi i passi per effettuare una connessione
  sono i seguenti:
 
  - caricare minicom
  - instaurare una connessione seriale con il provider (ATDT... come prima)
  - autenticatesi con user/pass
  - sospendere minicom (<CTRL>+a j)
  - lanciare ppp-start

  Se qualcosa non va bene cerca di individuare il problema grazie ai log
  di sistema. Vedi la sezione "Qualcosa non va?".

  1.4.3. Che noia autenticarsi con minicom... chat!

  La fase di autenticazione puo' essere automatizzata utilizzando il comando
  chat. Chat in pratica immette per voi la vostra user e password in modo
  che l'unica operazione per connettersi sara' quella di lanciare il
  fatidico 'ppp-start'.
  Chat si puo' usare in diversi modi, propongo qui il piu' semplice.
  In pratica si devono passare a chat per argomenti alternativamente le
  stringhe che deve aspettare durante il dialogo di autenticazione e quelle
  con cui deve rispondervi. Un esempio chiarira' molto le idee.
  Ammettiamo che la procedura per autenticarsi al provider Canaglia-Net sia
  questa:

	Benvenuti su Canglia-Net s.p.a.
	autenticazione PPP

	username: carogna
	password: ulala534

  In questo caso si deve dire a chat che appena incontra la stringa name:
  deve rispondere Carogna ed appena incontra ssword: deve rispondere
  ulala534. In questo caso lo script /etc/ppp/ppp-start automatizzato
  sarebbe questo: 
  
  ( \ indica che la riga continua senza il ritorno a capo )

  /usr/sbin/pppd connect 'chat -v "" ATDTxxxxxx CONNECT "" :name carogna \
  :ssword ulala534' /dev/modem 115200 debug crtscts \ 
  modem defaultroute noipdefault

  dove xxxxxxx deve essere sostituito con il numero di telefono del
  provider. 

  *** Nel caso in cui il modem apra la linea ma non componga il numero 
      si puo' provare ad aggiungere 'ATX3 OK' subito prima di ATDTxxxxxx.
      Se nelle prove con minicom era necessario il comando ATDP
      si sostituisca ad ATDT (molto raro.. ormai le centraline 
      sono tutte digitali). 
    
  1.4.4. Un esempio di connessione

  Questi sono i file che uso per la mia connessione ad mclink:

  **************************************************************************
  * /etc/ppp/ppp-mclink

    /usr/sbin/pppd connect 'chat -v "" ATDT321446 CONNECT "" "*" 21 @ mcnet \
    ORIGINATED "" @ md5330 sword: zf.43G "now)" "\d\d\d\d\d\d"' /dev/modem \
    debug crtscts modem defaultroute noipdefault

    n.b. chat interpreta \d come una pausa di un secondo.

  **************************************************************************
  * /etc/ppp/resolv.conf

    domain mclink.it
    nameserver 192.106.166.1

  **************************************************************************
  * /etc/ppp/options

    lock

  n.b. le opzioni del file options sono quelle che pppd usa sempre, anche
  lanciando semplicemente pppd /dev/modem.

  *** In ogni caso prova 'man pppd' per maggiori informazioni.

  1.5. Connettersi tramite il PAP

  Editate il file /etc/resolv.conf per settare il vostro server dns.
  Il server dns fara' in modo che la vostra connessione funzioni anche
  con gli indirizzi 'umani' come ad esempio sunsite.unc.edu, che sara'
  automaticamente tradotto nell'indirizzo numerico 152.2.254.81,
  l'/etc/resolv.conf deve contenere le seguenti righe:

        domain dominio.del.tuo.provider
        nameserver 192.106.166.1 (l'indirizzo del tuo nameserver)
        nameserver xxx.yyy.zzz.kkk (eventuali altri nameserver)

  il dominio del tuo provider e' l'ultima parte (quella sempre fissa) del
  dns del tuo ip dinamico. Ad esempio il dominio di net133-207.mclink.it e'
  mclink.it. Nonostante sia bene mettere il giusto dominio, un errore non
  comporta il non funzionamento del PPP.

  Create il file /etc/ppp/ppp-start che deve contenere la seguente riga:

    /usr/sbin/pppd connect 'chat -v "" ATZ OK ATDTxxxxxx CONNECT""' \
    /dev/modem -detach defaultroute modem noipdefault name USER &

    (il carattere \ indica che la riga continua senza invio)

    dove xxxxxx deve essere sostituito con il numero di telefono del
    provider ed USER con la username del vostro abbonamento.

  *************************************************************************** 
  * Valgono le stesse considerazioni di prima sulla la composizione del     *
  * numero ( vedi sezione 1.4.1 ), se non funziona cosi' provate a          *
  * sostituire ATDT con ATX3DT, se non va ancora provate con ATDP ed        *
  * infine con ATX3DP. Con uno di questi quattro dovrebbe funzionare.       *
  ***************************************************************************


  Date un 'chmod 700 /etc/ppp/ppp-start' per rendere lo script eseguibile.
  
  Create un file /etc/ppp/ppp-stop come quello descritto all'1.4.2 di
  questo documento.
  
  Editate il file /etc/ppp/pap-secrets in modo che contenga le seguenti
  righe:

        # Secrets for authentication using PAP
        # client        server  secret                  IP addresses
          USER		*       PASSWORD

  dove USER e' la vostra username e PASSWORD e' appunto la password...
  ad esempio se la mia user e' parossi e la mia password hg105TZ il file
  /etc/ppp/pap-secrets apparira' cosi':

        # Secrets for authentication using PAP
        # client        server  secret                  IP addresses
          parossi	*	hg105TZ

  Modificate i permessi dell' /etc/ppp/pap-sectets in modo che la vostra
  password non possa essere scrutata da occhi indiscreti con il seguente
  comando: 'chmod 600 /etc/ppp/pap-secrets'. 

  Ok.. non vi resta che creare un link simbolico in modo che lo script
  ppp-start sia eseguibile da ovunque. Usate questo comando:

  ln -sf /etc/ppp/ppp-start /usr/bin/

  Per quanto riguarda il PAP e' tutto qui', se non funziona andate a vedere
  la prossima sezione.

  1.6. Qualcosa non va?

  Se il PPP si rifiuta di andare, il metodo migliore per capire cosa succede
  e' quello di dare uno sguardo ai log di sistema.

  Ricordate che:

  1 - I log di sistema sono nel file /var/log/messages. Le sue ultime <N>
      righe possono essere viste con il comando:

	tail -<N> /var/log/messages

  2 - Che molti utenti di #Linux-IT saranno felici di aiutarvi, a patto che:

  	a) Abbiate letto con attenzione queste istruzioni e siate certi di
  	   averle comprese e applicate correttamente.

  	b) Siate in grado di fornire spiegazioni il piu' possibile
	   dettagliate. Inutile esclamare "Aiuto! il PPP non va!". 
           Quindi tenetevi pronti con:

	  - la procedura che avete usato

	  - il contenuto del file /var/log/messages
	    (solo la parte inerente al PPP!!!)

	  - informazioni sulla connessione al vostro provider ( usa il PAP?
	    DNS, ecc. ecc. )

  1.7. Appena altre due o tre cosette

  Bene! siete riusciti a far andare il PPP, qualche piccolo consiglio per
  godervi la vostra connessione.

  Tanto per iniziare andate a rileggere col senno del poi l'ottimo PPP-HOWTO
  di Robert Hart.

  Non dimenticate mai....

	1) Di *NON* ircare mai come root
	2) Che avete dei servizi di rete tipici di un server
	3) Che se volete stare tranquilli e non avete esigenze particolari
	   potete editare il file /etc/hosts.deny e mettere un bel ALL: ALL
	4) Di usare un kernel 2.0.32 o superiore per non incappare nel
           teardrop, ovvero un d.o.s. che pianta la connessione linux
           con un solo pacchetto.

  Inoltre ci sono due file molto utili: /etc/ppp/ip-up ed /etc/ppp/ip-down
  il primo viene eseguito dal pppd ogni volta che la vostra connessione
  diventa operativa, il secondo non appena la connessione termina.
  Possono risultarvi di certo interessanti. Ad esempio potete mettere nello
  ip-up uno script che lancia tutti i programmi che di solito usate ad ogni
  connessione o un comando che setta l'hostname come ad esempio questo:

  hostname $(host $(ifconfig ppp0 | grep inet | awk {'print $2'} \
  | cut -d: -f2) | grep Name | cut -d' '  -f2)

  Con questo e' tutto, buone connessioni!

	Approfondimenti

   2.0. pppd visto da vicino

  Il demone pppd (Point to Point deamon) ha molte opzioni, qui di seguito
  vengono esaminate le piu' importanti, riprese dal manuale del pppd.

  Si ricorda che la sintassi generale del pppd e' la seguente:

	pppd [ tty_name ] [ speed ] [ options ]

  connect <p>
	Usa il programma o lo script di shell specificato attraverso <p>
	per creare il collegamento seriale. Questa opzione e' spesso usata
	in unione al comando chat per comporre il numero ed inizare la
	sessione remota del ppp.

  crtscts
	Dice al pppd di usare il controllo di flusso nella porta seriale.
	*Opzione consigliata*

  defaultroute
	Aggiunge un 'default route' nelle tabelle di routing. Necessario
	se non si ha intenzione di usare il comando route per fare
	la stessa cosa.
	*Opzione consigliata*

  disconnect <p>
	Esegue il programma o lo script di shell specificato attraverso <p>
 	non appena il pppd termina la connessione. Utile ad esempio nel
	caso in cui il vostro modem non chiuda automaticamente la linea
	per fargliela chiudere tramite un comando apposito.

  lock
	Specifica che il pppd deve bloccare il device che sta usando
	per assicurarsi di essere l'unico ad accedervi.
	Puo' creare problemi con l'autenticazione tramite minicom.
	*Opzione consigliata nel caso non si utilizzi minicom*

  mru <n>
	Setta l'MRU [Maximum Receive Unit] ad <n>.
	Il suo valore di default e' di 1500. E' raccomandato un valore di
	296 nel caso di connessioni lente. Il valore comunemente consigliato
	per un modem 36.600 e' di 552.
	* fate dei tentativi per trovare il valore migliore *

  mtu <n>
	Setta l'MTU [Maximum Trasmit Unit] ad <n>.
	Se avete una connessione a 36.600 provate a settarlo a 552.
	* fate dei tentativi per trovare il valore migliore *

  name
	Setta il nome del sistema locale per l'autenticazione.
	Si usa con il PAP.

  xonxoff
	Usa il controllo di flusso software.

  2.1. I comandi AT

  Grazie ad i comandi AT possiamo comunicare con il nostro modem per
  settare delle opzioni e per impartirgli dei comandi. Gli script
  contenuti in questo howto possono essere modificati aggiungendo
  dei comandi AT. Potete sperimentare con questi comandi con un programma
  di comunicazione come minicom.

  *** TUTTI I COMANDI AT DEVONO ESSERE PRECEDUTI DAI DUE CARATTERI 'AT'.
      Ad esempio il comando DT (che compone un numero) deve essere passato
      al modem come ATDT. Una serie di comandi AT possono essere passati
      con un solo AT iniziale. Ad esempio la stringa

	ATE0L2

      disabilita l'echo del modem e imposta il volume medio dello speaker.


  Comando	Utilizzo
  -------	--------

  A		Dice al modem di rispondere alla chiamata in arrivo.
		Se ad esempio un vostro amico vi chiama tramite il suo
		PC con il comando ATDT538274 (dove 538274 e' il
		vostro ipotetico numero di telefono) voi potete
		far rispondere il vostro modem con il comando ATA.

  D_		dove _ puo' essere:

			0-9, A-D, # e *
			L ricompone l'ultimo numero
			P compone in modo 'pulse'
			T compone in modo tonale
			, pausa

		Ad esempio il comando ATDT0,344554 compone in modo tonale
		uno 0, fa una pausa, infine compone 344554.
		Questo e' il classico caso del centralino telefonico
		in cui e' necessario digitare lo 0 per avere la linea.

  E0		Disattiva l'echo dei comandi
		In questo modo con un programma come minicom non riuscirete
		a vedere il comando che state digitando. Infatti
		il modem non vi restituira' i caratteri che digitate.

  E1		Attiva l'echo dei comandi

  H0		Riattacca (hang-up)

  H1		Apre la linea (make busy)

  Ix			Restituisce delle informazioni sul modem.
			Al variare di x da 0 a 6:

			0 Codice del prodotto (spesso bps max)
			1 codice della somma di controllo
			2 ROM test
			3 Firmware & device ID
			4 ID riservato
			5 ID riservato
			6 ID riservato

			Ad esempio il mio modem risponde ad ATI3 cosi':
			V2.011.1-V34_ACF_DP1
			OK

  Lx			Setta il volume dello speaker in relazione
			ad x che varia da 0 a 3:

			0 Volume speaker nullo
			1 Volume speaker basso
			2 Volume speaker medio
			3 Volume speaker alto

			Ad esempio il comando ATL1 setta il volume basso.

 Mx			Imposta l'attivita' dello speaker in relazione
			ad x che varia da 0 a 3.

			0 Speaker sempre disattivo
			1 Speaker attivo durante l'individuazione della
			  portante (default)
			2 Speaker sempre attivo
			3 Speaker disattivo durante la composizione del 
			  numero ed attivo durante l'individuazione della
			  portante.

			Ad esempio il comando ATM0 fa in modo che durante
			la connessione lo speaker non emetta alcun suono.
			Utile se ci si connette di notte rischiando
			di dar fastidio a qualcuno ;)

			Si potrebbe modificare lo script di esempio cosi':

			/usr/sbin/pppd connect 'chat -v "" ATZ OK ATM0 OK \ 
			ATDTxxxxxx CONNECT""' /dev/modem -detach defaultroute \
			modem noipdefault name giosab &
			
  Xn			Imposta l'individuazione di alcune situazioni della
			linea. Al variare di n da 0 a 4:

			0 compatibilita' Hayes Smartmodem 300
			1 come 0 piu' CONNECT responses
			2 come 1 piu' l'individuazione del segnale di linea
			3 come 1 piu' l'individuazione del segnale di occupato
			4 tutte le individuazioni attive (default)

  Y0			Disabilita la 'disconnesione nel caso in cui la
			connessione rimanga disattiva per molto tempo'.

  Y1			Abilita la disconnessione nel caso di cui sopra.

  Z			Reset.

  2.2. isapnp, ovvero "Come far andare i modem PnP".

  Se state leggendo questa parte dell'HOWTO e' probabile che abbiate a che fare
  con un modem PnP. Con buone probabilita', dopo la lettura di questa sezione
  e grazie alla utility isapnp, sarete in grado di far funzionare a dovere il 
  vostro modem. In ogni caso ACQUISTARE HARDWARE PnP E' UN GROSSO SBAGLIO e va
  evitato. L'hardware PnP e' espressamente pensato per Windog 95. Cio' e' un
  assurdo, poiche' l'hardware deve essere pensato per funzionare con tutti i
  sistemi. Inoltre spesso il PnP crea piu' difficolta' di installazione
  dell'hardware tradizionale... dunque BOICOTTATE IL PnP!!!

  *** E' anche vero che con i Kernel 2.2.* ci saranno molti meno problemi
      con questo tipo di hardware poiche' questo supporta appieno il PnP.

  2.2.1 isapnp

  L'utility isapnp configura le vostre schede (in questo caso modem) PnP.
  Vi basti sapere che in un certo senso isapnp 'dice' al vostro modem
  che indirizzo di base usare (per capirci che cua o COM) e che IRQ usare.
  La prima cosa da fare e' scaricare ed installare isapnp. Se avete una
  distribuzione RedHat5 o Debian troverete isapnp tra i packages, altrimenti
  potete scaricarlo da http://www.roestock.demon.co.uk/isapnptools/
  (almeno al momento in cui scrivo).

  *** Per installare isapnp riferitevi al file INSTALL contenuto nel package.

  Isapnp si compone di tre principali parti:

	isapnp		 - l'utility che configura le schede PnP
	pnpdump		 - l'utility che fa una scansione delle schede
			   PnP contenute nel vostro sistema.
	/etc/isapnp.conf - Il file di configurazione di isapnp

  In primo luogo ci serviremo di pnpdump. Questo, se eseguito, restituisce
  nell'output standard le schede PnP che ha trovato nel vostro pc nel formato
  del file di configurazione /etc/isapnp.conf. Cio' semplifica di molto il
  nostro lavoro.

  La prima cosa da fare e' eseguire pnpdump e vedere se effettivamente
  individua la vostra scheda. Ad esempio potete usare:

  	pnpdump | more

  Se pnpdump ha individuato la scheda correttamente vedrete un output simile
  a questo:

  # $Id: pnpdump.c,v 1.10 1997/07/14 22:30:47 fox Exp $
  # This is free software, see the sources for details.
  # This software has NO WARRANTY, use at your OWN RISK
  ........
  ........
  # Card 1: (serial identifier c0 16 00 14 37 03 00 69 5c)
  # WCI0003 Serial No 369103927 [checksum c0]
  # Version 1.0, Vendor version 0.1
  # ANSI string -->Fax/Voice/Modem/Speakphone/Asvd 33600 PNP<--
  #
  # Logical device id WCI0003
  #     Device support I/O range check register
  # Don't forget to uncomment the activate (ACT Y) when happy
  ........
  ........
  (CONFIGURE WCI0003/369103927 (LD 0
  #     ANSI string -->Modem/Fax/Voice<--
  # Card 1: (serial identifier c0 16 00 14 37 03 00 69 5c)
  # WCI0003 Serial No 369103927 [checksum c0]
  # Version 1.0, Vendor version 0.1
  # ANSI string -->Fax/Voice/Modem/Speakphone/Asvd 33600 PNP<--
  ........
  ........
  # Multiple choice time, choose one only !

  seguito da tante sezioni simili a questa:
  
  #     Start dependent functions: priority preferred
  #       Fixed IO base address 0x02f8
  #             Number of IO addresses required: 8
  # (IO 0 (BASE 0x02f8))
  #       IRQ 3.
  #             High true, edge sensitive interrupt (by default)
  # (INT 0 (IRQ 3 (MODE +E)))

  ed infine:

  # (ACT Y)
  ))
  # End tag... Checksum 0x00 (OK)
  
  # Returns all cards to the "Wait for Key" state
  (WAITFORKEY)

  Altrimenti pnpdump vi avvisera' che non ha trovato nessuna scheda PnP.
  In questo caso... siete sicuri di avere un modem PnP??? :)

  Se tutto e' andato bene reindirizzate questo output al file di configurazione
  con questo comando:

  	pnpdump > /etc/isapnp.conf

  Il file di configurazione che avete appena creato ha delle righe che iniziano
  con un '#'. Dovete togliere questo carattere (di commento) in determinate 
  righe a seconda della configurazione che volete ottenere.
  
  Per far cio' editate il file /etc/isapnp.conf con il vostro editor preferito
  e fate come di seguito:

  Per configurare la scheda come cua0 (COM1) - irq 4 togliete i # che precedono
  le seguenti righe:

  # (IO 0 (BASE 0x03f8))
  # (INT 0 (IRQ 4 (MODE +E)))

  Per cua1 (COM2) - irq 3 togliete i # che precedono le seguenti:

  # (IO 0 (BASE 0x02f8))
  # (INT 0 (IRQ 3 (MODE +E)))

  Per cua2 (COM3) - irq 4 togliete i # che precedono le seguenti:

  # (IO 0 (BASE 0x03e8))
  # (INT 0 (IRQ 4 (MODE +E)))

  Per cua3 (COM4) - irq 3 togliete i # che precedono le seguenti:

  # (IO 0 (BASE 0x02e8))
  # (INT 0 (IRQ 3 (MODE +E)))

  *** In ogni caso si deve sempre togliere il '#' che precede la seguente riga:

  # (ACT Y)

  Ovviamente dovete far attenzione a scegliere una cua / COM libera.
  Potete vedere la lista delle porte seriali riconosciute *al momento del boot*
  grazie al comando:

	dmesg | grep tty

  che fornira' un output simile a questo:

	[root@localhost /root]# dmesg | grep tty
	tty00 at 0x03f8 (irq = 4) is a 16550A (COM1 per capirci)
	tty01 at 0x02f8 (irq = 3) is a 16550A (COM2)
	tty03 at 0x02e8 (irq = 3) is a 16550A (COM4 - modem PnP)

  *** Vi ricordo che tty00 = COM1, tty01 = COM2, tty02 = COM3, tty03 = COM4

  *** Si fa notare che nell'esempio l'unica COM libera e' la COM3

  *****************************************************************************
  A volte i modem PnP al momento del boot cercano di autoconfigurarsi senza
  l'intervento di windog95. 
  In questo caso tty03 e' un modem PnP. Nel mio caso cio' creava un
  conflitto per cui grazie ad isapnp l'ho spostato su tty02 irq 4.
  *****************************************************************************

  Ok.. modificato /etc/isapnp.conf il prossimo passo e' quello di lanciare
  isapnp. Solo in questo modo il nostro modem verra' configurato.
  Per far cio' usare il comando:

	isapnp /etc/isapnp.conf

  Vedrete spuntare qualcosa di simile a questo:

	Board 1 has Identity c0 16 00 14 37 03 00 69 5c:  WCI0003 Ser......

  Perfetto... non ci resta che dire a linux di settare la seriale per le nuove
  impostazioni. Questo puo' essere fatto tramite il comando *setserial*.
  Dare i seguenti comandi uno dopo l'altro.

	setserial /dev/ttyS2 irq 3 autoconfig
	setserial /dev/ttyS2 spd_vhi
	setserial /dev/ttyS2

  *** Dovete sostituire ttyS2 a:

	ttyS0 se avete configurato come COM1
	ttyS1  "   "        "       "   COM2
	ttyS2  "   "        "       "   COM3
	ttyS3  "   "        "       "   COM4

  e dovete sostituire il 3 dopo irq con il numero di irq che era specificato
  nella riga a cui avete tolto il # nell'/etc/isapnp.conf, dunque in linea
  di massima:

	irq 4 per COM1
	irq 3     COM2
	irq 4     COM3
	irq 3     COM4

  ***************************************************************************
  se qualcosa dovesse andare storto provate a modificare l'irq sia dal file
  /etc/isapnp.conf che dal primo comando setserial. Per avere una lista
  degli interrupt occupati in modo da potersi regolare usare il seguente
  comando:
		cat /proc/interrupts
  Di solito possono essere usati (se liberi) i sequenti irq:
  	2, 3, 4, 5, 7, 10, 11, 12
  ***************************************************************************

  Ok.. a questo punto ci dovreste essere... non vi resta che andare a provare.
  A questo scopo fate il link simbolico come era stato specificato all'inizio
  di questo howto tramite il comando:

  ln -sf /dev/cua0 /dev/modem  ( se lo avete confiturato come COM1 )
  ln -sf /dev/cua1 /dev/modem  ( se lo avete configurato come COM2 )
  ln -sf /dev/cua2 /dev/modem  ( se lo avete configurato come COM3 )
  ln -sf /dev/cua3 /dev/modem  ( se lo avete configurato come COM4 )

  e lanciate minicom. Se vedete comparire la fatidica stringa di
  inizializzazione AT S7=45 S0=0 L1 V1 X4 &c1 E1 Q0 ( o simile ) allora e' 
  tutto ok e non vi resta che creare lo script /bin/setmodem da lanciare
  ogni volta che volete utilizzare il modem. Ecco come potrebbe apparire
  il vosto script:

  #!/bin/sh
  isapnp /etc/isapnp.conf
  setserial /dev/ttyS2 irq 3 autoconfig
  setserial /dev/ttyS2 spd_vhi
  setserial /dev/ttyS2

  ( Notate che dovete modificare ttyS2 e irq 3 a seconda del vostro caso )

  *** che dovete rendere eseguibile con il comando:

	chmod 700 /bin/setmodem

  Bene.. spero sia andato tutto bene, nel caso ancora non vada nulla di
  strano...
  Dovete provare a cambiare porta ed irq e fare delle prove. Se proprio non
  dovesse andare provate man mano a:

	- Modificare porta e/o irq e riprovare
	- Leggere meglio questo howto
	- Riferirsi alla documentazione di isapnp
	- Disabilitare dal bios le porte seriali interne e riprovare cosi'
	- Controllare se il modem e' dotato di qualche switch interno
          che disabilita il PnP e magari qualcun'altro che cambia porta/irq.
	- Spedirmi una mail a MD5330@mclink.it
	- /JOIN #Linux-it (non chiedete se potete chiedere, chiedete)

  2.2.2. Un problema raro ma non troppo.

  Potrebbe capitarvi che il modem funzioni... ma ad una lentezza esagerata.
  In questo caso con minicom vedrete spuntare lentamente una prima parte
  della stringa di inizializzazione, poi una seconda parte. In questo caso
  e' estremamente probabile che il vostro modem sia in *conflitto*.
  L'unico possibile rimedio a questo problema e' quello di spostare il modem
  di porta e/o di irq. Fate delle prove, se siete tenaci alla fine andra'
  tutto per il verso migliore ;)



  Indice
	
	1. Introduzione
	1.1. Cose da fare a priori
        1.2. Mini corso di sopravvivenza con l'editor vi
        1.3. Dimmi come ti collegavi con findus95.. e ti diro' chi sei
	1.4. Connettersi con l'autenticazione tramite terminale
		1.4.1. Un primo tentativo
  		1.4.2. La configurazione vera e propria
		1.4.3. Che noia autenticarsi con minicom... chat!
		1.4.4. Un esempio di connessione
	1.5. Connettersi tramite il PAP
	1.6. Qualcosa non va?
	1.7. Appena altre due o tre cosette
	
		Approfondimenti

	2.0. pppd visto da vicino
	2.1. I comandi AT
	2.2. isapnp, ovvero "Come far andare i modem PnP".
		2.2.1. isapnp
		2.2.2. Un problema raro ma non troppo



  #PPP Linux-IT HOWTO
  Salvatore Sanfilippo md5330@mclink.it (AntireZ on irc)
  v0.3, 18 Marzo 1998
