Capitolo 4. Internet

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.