In questa sezione viene spiegato come connettersi a Internet da shell, senza l'uso di tool grafici, usando l'autenticazione PAP, ormai fornita da tutti i provider. Con i computer moderni, veloci e stabili anche sotto X-window, può sembrare un controsenso, ma se vi abituerete a fare alcune cose da shell vedrete che sarete molto più produttivi e veloci che sotto X. E poi, per leggere e inviare mail e news, che sono puro testo, è inutile caricare pesanti tool grafici, che spesso crashano sul più bello. Oppure potreste avere problemi col server X, rimanendo tagliati fuori (se postate un messaggio sul perché X non parte, e lo fate da shell, avrete la risposta e potrete configurarvelo a puntino!). Insomma, le ragioni per avere internet ANCHE da shell sono molteplici, quindi procediamo nella configurazione.
Nota: Io sono un'anomalia: Linux è bello perché si possono fare le stesse cose in svariati modi. Parto sempre da shell, ma uno dei primi comandi che do è startx, perché il mio Celeron 450 con 256Mb regge bene e mi piace il desktop di KDE. Per avviare la connessione uso kppp perché mi ci trovo bene, ma ero partito da Kmail e Knode per approdare spero DEFINITIVAMENTE a Mutt ed Slrn, veloci ed efficienti come nessun altro programma, e di cui trovate le configurazioni nelle ultime pagine del Quick&Easy Configuration HOWTO.
Aggiornamento (31/7/2001): nel mio cammino verso il Nirvana Pinguino, ormai uso solo tool testuali per cose nate testuali e che continuano ad essere ancor'oggi prevalentemente testuali. Ormai uso solo Slrn, Mutt, e le connessioni da console con Pon e Poff. Per Irc e Icq uso Xchat e Licq, ma in caso di emergenza ho sempre sottomano le loro versioni da console ;-).
Naturalmente dovete avere il supporto per il protocollo PPP nel kernel (scrivete pppd e se vi escono caratteri strani siete a posto). Vi servono anche i programmi pppd e chat. I parametri per la connessione dovete chiederli al vostro provider, e protestate se vi dicono che Linux non è supportato, con i parametri si può configurare anche una caffettiera! In particolare dovete chiedere gli indirizzi IP dei DNS, che in Windows vengono settati in automatico.
Nota: Per conoscere in Windows gli IP dei DNS (in caso vengano assegnati in automatico), per poterli inserire in Linux, che invece li richiede obbligatoriamente, eseguite (tramite la voce Esegui... del Menu d'Avvio o Start) il comando winipcfg DOPO esservi collegati a internet, poi cliccate su Dettagli >> e guardate la seconda voce (DNS) della schermata che vi trovate davanti: quello che vedete è l'IP del DNS primario del provider che state usando, mentre premendo il tasto con i 2 punti ".." avrete l'IP del DNS secondario.
Per prima cosa configurate il modem, creando se non già presente un link tra il dispositivo seriale e il modem. Ricordate che in Linux le seriali corrispondono a /dev/ttySX, dove X vale 0 per COM1, 1 per COM2 e così via (NON usate più le vecchie /dev/cuaX, ormai cadute in disuso e deprecate). Nel mio sistema il modem è connesso a COM2, quindi il collegamento sarà:
ln -sf /dev/ttyS1 /dev/modem |
Prima di continuare una nota: esistono in giro dei FALSI modem, non perché contengano mattoni, alla napoletana ;-), ma perché hanno una parte della logica di controllo implementata via software. E qual è il software più diffuso, purtroppo? Quello di zio Bill! Per questo sono anche chiamati softmodem o winmodem. La quasi totalità di quelli interni PCI sono winmodem (scrivo quasi perché non sono a conoscenza di modem interni PCI non soft, quindi non posso escluderlo a priori). Anche alcuni esterni sono winmodem. Se il vostro modem è un Cosexant, o un Motorola SM56, o un Soft56k e compagnia, solo per citare quelli che più si trovano in giro, mettetevi l'anima in pace e non cominciate nemmeno a configurare internet con Linux. Qualche speranza la potreste avere con i Lucent, integrati anche in vari PC portatili, in quanto esiste un driver binario sperimentale che sembra funzionare. Niente da fare invece per gli USB: per ora non c'è alcun supporto, speriamo che qualcosa si muova dopo l'uscita dei kernel 2.4.x, che incominceranno a supportare anche l'USB.
Nota: Aggiornamento: pare che ultimamente le cose si siano smosse e finalmente alcuni Winmodem inizino a funzionare anche con Linux. Pare che ora i modem Conexant e altri funzionino, ma non so quanto bene. Forse funziona anche qualche modem USB, ma per maggiori dettagli riferitevi a http://www.linmodems.org.
Continuiamo. Lanciate minicom da utente root, se tutto procede bene dovreste ottenere un output come il seguente:
AT S7=45 S0=0 L1 V1 X4 &C1 E1 Q0 OK |
Uscite da minicom con CTRL-A X Invio. Create o modificate tutti i file seguenti, cambiando i parametri di DNS, dominio, numero di telefono, nome utente e password.
=== file: /etc/resolv.conf ===
# cambiate dominio e DNS (se avete impostato un DNS locale, sostituite # a libero.it il vostro dominio, e a nameserver il valore 127.0.0.1) domain libero.it nameserver 195.210.91.1 nameserver 195.210.91.2 |
=== file: /etc/ppp/pon ===
#!/bin/sh # NON lasciate spazi dopo la \ alla fine delle righe seguenti # e sostituite il vostro nome utente alla fine dell'ultima riga /usr/sbin/pppd connect "/usr/sbin/chat -v -f /etc/ppp/ppp-chat" noauth \ /dev/modem 57600 deflate 12,12 crtscts debug lock modem nodetach \ defaultroute noipdefault login noproxyarp asyncmap 0 hide-password \ ipcp-accept-remote lcp-echo-interval 30 lcp-echo-failure 8 user mionomeutente & # aggiungete le 2 opzioni seguenti alla riga precedente per avviare in automatico # la connessione non appena pppd riscontra traffico sulla seriale # demand idle 30 # i messaggi d'errore sono inviati dal pppd verso il syslog, da dove potrete # leggerli da root con il comando: tail -n 25 -f /var/log/messages |
=== file: /etc/ppp/poff ===
#!/bin/sh kill -INT `cat /var/run/ppp0.pid` |
=== file: /etc/ppp/pap-secrets ===
#inserite qui il vostro nome utente e la vostra password mionomeutente * miapassword |
=== file: /etc/ppp/ppp-chat ===
# Cambiate la stringa di init e il numero del vostro ISP alla fine TIMEOUT 30 ABORT BUSY ABORT ERROR ABORT 'NO CARRIER' ABORT 'NO DIALTONE' ABORT 'Invalid Login' ABORT 'Login incorrect' '' '+++AT&FB40&K44X3S2=128' OK 'ATDT096851010' CONNECT '' |
Ora date tutti i seguenti comandi, per consentire anche ad un utente comune di avviare e chiudere la connessione.
chmod 750 /etc/ppp/pon chmod 750 /etc/ppp/poff chmod 600 /etc/ppp/pap-secrets ln -sf /etc/ppp/pon /usr/bin ln -sf /etc/ppp/poff /usr/bin |
Ora verificate che esista un gruppo degli utenti che possono usare il ppp. Controllate che in /etc/group ci sia una riga simile alla seguente, altrimenti inseritela, magari usando il comando addgroup:
pppusers:x:230: |
e modificatela come la seguente, inserendo alla fine separati da virgole i nome degli utenti che possono collegarsi:
pppusers:x:230:VostroNomeDiLogin,AltroUtentePpp |
Continuate a dare i comandi seguenti:
chown root.pppusers /dev/ttyS1 chmod 664 /dev/ttyS1 chown root.pppusers /etc/ppp/pon chown root.pppusers /etc/ppp/poff chown root.pppusers /usr/bin/pon chown root.pppusers /usr/bin/poff chmod a+s /usr/sbin/pppd chmod a+s /usr/sbin/chat ln -sf /usr/sbin/pppd /usr/bin ln -sf /usr/sbin/chat /usr/bin |
Per un minimo di sicurezza, modificate i file /etc/hosts.allow e /etc/hosts.deny come segue (ed eliminate da /etc/inetd.conf i servizi che non vi servono, cioè tutti tranne auth, commentandoli con #; se avete configurato un news server locale lasciate attivo anche nntp):
=== file: /etc/hosts.allow ===
ALL:127.0.0.1 |
=== file: /etc/hosts.deny ===
ALL:ALL |
Potete avviare ed arrestare automaticamente dei programmi insieme alla connessione, tramite i file script /etc/ppp/ip-up e /etc/ppp/ip-down, che vengono richiamati dal pppd in automatico appena la connessione è attiva e quando non è più presente. ecco alcuni esempi:
=== file: /etc/ppp/ip-up ===
#!/bin/sh # inserite le righe alla fine di quanto eventualmente # già presente e prima di un eventuale exit 0 # avvia il proxy server in modalità online wwwoffle -online # attiva il firewall /usr/sbin/firewall start # invia la posta in giacenza sendmail -q # scarica le news usenet fetchnews # scarica la posta dell'utente mrshark ricontrollando ogni 300 secondi su mrshark -c "fetchmail -d 300" |
=== file: /etc/ppp/ip-down ===
#!/bin/sh #interrompe lo scaricamento della posta su mrshark -c "fetchmail -q" # abbatte il firewall /usr/sbin/firewall stop # pone il proxy server in modalità offline wwwoffle -offline |
Dovreste essere a posto, ora potrete avviare la connessione con pon e abbatterla con poff. E invece NO! Il pon funziona anche da utente, mentre il poff no, perché non è permesso ad un utente che non sia root di abbattere la connessione ppp. Il PPP-Howto suggerisce, se non volete loggarvi come root, di spegnere il modem o staccare il cavo della linea telefonica, oppure usare il programma sudo per concedere questo diritto anche agli utenti.