Linux e PPP

di Stefano Grassi
grassi@dsi.unimi.it

Molti utenti di Linux dopo aver ottenuto un accesso Internet desiderano connettere il proprio PC alla rete utilizzando il protocollo PPP; per farlo è necessario raccogliere informazioni leggendo interamente diversi file che si trovano nei siti ftp o sui CD ROM. Questa guida è la mia personalissima sintesi dei passi necessari per ottenere una connessione fuonzionante. E' divisa in 3 sezioni, Linux come server PPP tramite cavo seriale, Linux come server PPP via modem. Tutte le prove sono basate sul mio sistema Linux così configurato :


LINUX COME CLIENT PPP

Esempio pratico di connessione a Video On Line
Vale anche per altri PPP server simili 

Dati del provider:
nameserver: 192.20.32.1
mailserver: mbox.vol.it
domain: vol.it
remote hostname: www.vol.it
  1. il kernel deve essere stato compilato con il supporto TCP/IP e PPP abilitato. Inoltre il sistema deve avere il loopback funzionante. (Eventualmente abilitare la scheda di rete 'dummy').

  2. vi scrivete uno script shell così fatto (che poi ho messo nella /usr/local/bin), che sarà usato ogni volta che ci collegheremo:
    #!/bin/sh
    # pppstart 
    # Script to connect to V.O.L.
    # Note: 'pppd' and 'chat' are in /usr/lib/ppp/
    # 
    pppd connect 'chat -v "" ATDP......  CONNECT ""' user VOSTRO_ID
    
    (Ovviamente al posto di ...... dovete mettere il numero di telefono di V.O.L. più vicino a voi)

  3. Si deve scrivere il file options che va messo nella /etc/ppp/
        
    # /etc/ppp/options
    # File for Linux as PPP client 
    /dev/modem
    38400
    lock
    crtscts
    modem
    asyncmap 0
    remotename www.vol.it
    defaultroute
    
    Attenzione: la velocità di 38400 è la massima da indicare, almeno per le prove che ho effettuato io, infatti pur avendo una seriale veloce e avendo settato la porta con setserial per la massima velocità e inserendo come valore 115200 la connessione avveniva a 9600...

  4. Video On Line usa il protocollo PAP per controllare gli accessi, pertanto si deve scrivere il file pap-secrets che va messo nella /etc/ppp/
    # /etc/ppp/pap-secrets
    # username   remotehost   secret
    #
    VOSTRO_ID    www.vol.it   VOSTRA_PASSWORD
    
  5. Il file /etc/resolv.conf deve essere così:
    # /etc/resolv.conf
    domain vol.it
    nameserver 194.20.32.1
    
  6. Il file /etc/sendmail.cf deve essere così cambiato nella sezione - "Smart" relay host - nella linea che inizia con DS:

    DSmbox.vol.it

    Questo serve per scaricare velocemente la nostra posta in uscita verso il mail server di V.O.L.

  7. Lanciate lo script e dopo qualche secondo siete in rete (per conferma il ping a www.vol.it deve funzionare). Tenete presente che i messaggi che si scambiano pppd, chat e il modem sono loggati nel file /var/adm/messages. Nel mio script di connessione al server (pppstart) ho aggiunto la linea

    tail -f /var/adm/messages

    proprio per vedere lo scambio delle informazioni tra pppd e server. Quando si ottiene l'IP number si è in rete.

  8. Per scaricare la posta dal mail server nella propria mailbox usare il comando popclient. Questo è un esempio delle opzioni da utilizzare:

    popclient -3 -u VOSTRO_ID -p VOSTRA_PASSWD -o /var/spool/mail/LINUX_LOGIN mbox.vol.it

  9. Per terminare l'esecuzione di pppd e il collegamento si deve uccidere il processo, il cui PID compare facendo 'ps -a'. Un modo automatico è leggere il PID di pppd che è scritto nel file /var/run/ppp0.pid Nell'HOW-TO ho trovato uno script che fa l'operazione automaticamente:
    #!/bin/sh
    # pppkill
    # Script to kill pppd
    DEVICE=ppp0
    if [ -r /var/run/$DEVICE.pid ]; then
      kill -INT `cat /var/run/$DEVICE.pid`
      if [ ! "$?" =	"0" ]; then
        rm -f /var/run/$DEVICE.pid
        echo "ERROR: Removed stale pid file"
        exit 1
      fi
      echo "PPP link to $DEVICE terminated."
      exit 0
    fi
    echo "ERROR: PPP link	is not active on $DEVICE"
    exit 1
    

Nota 1:
Il mio modem all'accensione non richiede particolari settaggi, pertanto nello script il comando chat gli manda solo la stringa per il dialing.

Nota 2:
Anche chi non è abbonato a V.O.L. può provare a collegarsi al loro server al numero verde 1670/12837. In questo caso il file pap-secrets non serve e nello script va tolto l'opzione 'user VOSTRO_ID' (si entra anonimi). Da quel server potete solo girare in locale (e non usare il mailserver) ma è pur sempre un test :)


USARE LINUX COME SERVER PPP (1)

Primo caso: connessione via cavo seriale tra una stazione Linux e un PC con le trumpet winsocket.
  1. Vedi sopra

  2. Si deve permettere il login tramite porta seriale: si può fare o in modo temporaneo lanciando il comando da shell

    /sbin/agetty -L 38400 ttyS1

    oppure in modo fisso modificando analogamente il file /etc/inittab nella sezione

    # Serial lines

    L'opzione -L forza comando agetty a non notare il Carrier Detect.

  3. Si deve aggiungere la seguente linea al file /etc/passwd

    ppp:*:504:100:PPP Public Account:/tmp:/etc/ppp/ppplogin

    Poi da root fissare la passwd (anche nulla) dando 'passwd ppp'.
    I valori 504 e 100 corrispondono allo user e group ID che ho fissato nel mio sistema (da cambiare in base alle vostre esigenze). Questa operazione crea l'utente ppp che ha come shell lo script ppplogin.

  4. Si deve scrivere il file ppplogin che va messo in /etc/ppp
    #!/bin/sh 
    # ppplogin - script to fire up pppd on login 
    mesg n 
    stty -echo 
    exec /usr/lib/ppp/pppd netmask 255.255.255.0 -detach silent 192.1.1.1:152.1.1.1
    
    192.1.1.1 è l'indirizzo del mio server PPP; non avendo una connessione Internet ho dato un indirizzo qualunque diverso dal loopback, altrimenti si dovrebbe inserire l'IP del proprio sistema.
    152.1.1.1 è l'indirizzo che viene dato al client PPP che si collega a noi (nel caso specifico le trumpet winsocket).

  5. Si deve scrivere il file options che va messo in /etc/ppp
    # /etc/ppp/options
    # File for Linux as PPP server 
    38400
    lock
    asyncmap 0
    
  6. Da parte delle trumpet winsocket si deve selezionare la stessa velocità della seriale che abbiamo scelto nei file di Linux.


USARE LINUX COME SERVER PPP (2)

Secondo caso: connessione via modem tra una stazione Linux e un PC con le trumpet winsocket.
  1. Vedi sopra

  2. Si deve permettere il login tramite porta seriale e modem: si può fare o in modo temporaneo lanciando il comando da shell

    /sbin/agetty -mt60 38400,19200,9600,2400,1200 ttyS1

    oppure in modo fisso modificando analogamente il file /etc/inittab nella sezione

    # Dialup lines

  3. Vedi sopra

  4. Vedi sopra

  5. Si deve scrivere il file options che va messo in /etc/ppp
    # /etc/ppp/options
    # File for Linux as PPP server 
    38400
    lock
    crtscts
    modem
    asyncmap 0
    
  6. Le trumpet winsocket non devono avere il protocollo PAP attivato