PPP è diventato il protocollo standard per collegarsi ad internet tramite connessione dialup. Il demone associato "pppd" comprende una utility molto primitiva per il collegamento, che gestisce bene solamente configurazioni molto semplici.
Questo mini-HOWTO descrive una soluzione alternativa basata su "minicom".
"minicom" è un programma molto complicato per collegarsi ad altri computer (ISP o BBS). Ha un menù colorato, un database delle connessioni dialup e un potente linguaggio di scripting. Così viene idealmente adattato per l'uso in congiunzione con "pppd".
Sono solamente interessato a commenti e critiche che possano migliorare questo mini-HOWTO. Non risponderò a domande generali su Linux, PPP, SLIP o networking.
Al tempo della scrittura, sembrava che ci fossero alcuni bug in "minicom", "runscript" e il metodo descritto sotto:
print "blah"
! sleep 10
print "blup"
Questo script esce immediatamente (ma non quando lo si analizza
tramite strace...)
Molte guide su PPP raccomandano di lasciare minicom dopo che è stato usato per collegarsi. Ma non c'è in realtà alcuna ragione per lasciare questo confortevole programma...
Eseguite "minicom -s" e scegliete dal menù la voce "Serial port setup". La prima voce dovrebbe essere "Serial Device". Questa è l'opzione più importante: il dispositivo seriale a cui è collegato il vostro modem. (Qualche volontario per fare in modo che minicom gestisca più dispositivi seriali alla volta?)
Per avere il nome del file del dispositivo, al quale è collegato il vostro modem, digitate i seguenti commandi:
for i in 0 1 2 3
do
if (chat -v -t 5 "" ATZ "" \\d "" ATZ OK "" > /dev/ttyS$i < /dev/ttyS$i)
then
echo "Modem in /dev/ttyS$i (= COM$[$i+1] sotto DOS)"
else
echo "Nessun Modem trovato in ttyS$i."
fi
done
Il codice sopra assicura che il modem sia configurato correttamente. Alcune persone hanno problemi con i modem plug-and-play, il che dimostra che "plug-and-play" è più che una "lite" di mercato.
Adesso provate a comporre un numero col comando "atdt5" (dt sta per "componi usando il metodo a toni"). Se non sentite un dialtone, controllate i cablaggi. Il vostro modem protesterà con il messaggio "no dialtone" e annullerà il comando. Se il vostro sistema telefonico non ha un dialtone, potete voler dirlo al vostro modem con "x3", perciò il comando da provare è "atx3dt5".
Se ottenete il dialtone, ma la composizione non ha effetto, allora potete riprovare con il metodo "pulse dialing" (usate "dp" invece del "dt" di prima). In ogni caso, premete la barra spazio per interrompere l'ultimo comando.
Prendete nota del comando che ha successo. Infine andate su "Modem and dialing parameter setup" in minicom e modificate "Dialing prefix" per adattarvi ai vostri bisogni. Potete inserire "l0m0" direttamente dopo AT per spegnere lo speaker prima di prendere la linea telefonica.
Può darsi che abbiate già provato a comporre il numero telefonico del vostro ISP invece di "5". Avete visto caratteri divertenti sullo schermo dopo il login (altrimenti, digitate "ppp")? Risultano dal "pppd" (o equivalente) fatto partire all'altra parte della linea. Se è così, potete provare a far partire il pppd daemon sul vostro sistema e poi valutare i file di log.
Per far partire "pppd" dentro minicom, potete definire un nuovo metodo di upload (capite da soli come) o ridefinire l'opzione "kermit program" dal menù di configurazione "Filename and paths":
A - Download directory :
B - Upload directory :
C - Script directory :
D - Script program : /usr/bin/runscript
E - Kermit program : /usr/sbin/pppd file /etc/ppp/mini_options
Adesso se vedete quei caratteri divertenti la prossima volta che vi collegate al vostro ISP potete premere <Alt-K> per far partire "pppd".
Il resto di questo mini-HOWTO si occupa di automatizzare il processo di login e di partenza di "pppd".
Sebbene io non voglia spiegare come PPP deve essere configurato, do un breve consiglio su come leggere il file di log. Per estrarre le informazioni essenziali dal file di log "/var/log/debug" (o l'altervativo "/var/log/daemon.log") eseguite i comandi
tail -n 40 /var/log/debug |\
grep -E " pppd\[[0-9]*\]:" |\
sed -e "s/^.*pppd\[/[/"
Dovreste vedere messaggi del tipo
sent [LCP ConfReq id=0x1 <mru 296>]
rcvd [LCP ConfRej id=0x1 <mru 296>]
che indicano che abbiamo spedito una config-request per configurare la "maximum receive unit" a 296. L'altro lato rifiuta questa opzione ("configuration rejected"). In questo caso ho solamente rimosso l'opzione "mru" da "/etc/ppp/options" (vedete sotto).
Se ciò che abbiamo visto sopra ha avuto successo, potete voler immagazzinare un numero telefonico nel database di minicom. Premete <Alt-D> per vedere il menù di composizione e usate i tasti cursore per selezionare "Edit":
A - Name : Xeno
B - Number : 022039697303
C - Dial string # : 1
D - Local echo : No
E - Script : /etc/ppp/login.script
F - Username : ppp-382
G - Password : top-secret
H - Terminal Emulation : VT102
I - Backspace key sends : Delete
J - Linewrap : Off
K - Line Settings : Curr 8N1
Questa è una entry di esempio per collegarmi a uno dei miei ISP. Lo script "/etc/ppp/login.script" viene mostrato sotto. Due variabili speciali sono passate a questo script: $(LOGIN) e $(PASS) che sono impostate ai valori scelti per username (F) e password (G). Questa caratteristica rende minicom piuttosto flessibile perché avete bisogno di un solo script per automatizzare il vostro login a molti ISP.
"minicom" fa partire lo script di login dopo che riceve la stringa "CONNECT". Ad essere precisi, "minicom" non esegue lo script da solo ma chiama l'utility "runscript" come sottoprocesso.
Sotto c'è un esempio, è quello che uso per i miei ISP.
# v1.0, 20.08.96 Winfried Trümper <winni@xpilot.org>
print ""
print "Automatic login via /etc/ppp/login.script"
## uncomment if you need to press enter to get the prompt
#send ""
expect {
"ogin:"
"ogin>"
"sername:"
"sername>"
"NO CARRIER" exit 1
}
send "$(LOGIN)"
expect {
"assword:"
"assword>"
timeout 20
}
send "$(PASS)"
expect {
"port" send "ppp"
"Start your PPP now"
"}!}!}"
timeout 10
}
print ""
print "Now switching into ppp-mode ..."
print ""
! /usr/sbin/pppd file /etc/ppp/mini_options
print ""
print "the command killall -TERM pppd terminates pppd"
La capacità di "runscript" di chiamare programmi esterni è usata per far partire "pppd". Copiate il vostro file di opzioni per ppp in "/etc/ppp/options.ttyS1" (dove dovete sostituire "ttyS1" col dispositivo a cui il vostro modem è connesso) e cancellate tutte le linee da /etc/ppp/options che sono specifiche per il vostro modem (come "connect", "crtscts" o "modem"). Mettete le opzioni che dovrebbero essere specifiche alla connessione ppp con minicom in "/etc/ppp/mini_options". Una di queste opzioni dovrebbe essere
disconnect "chat '' '\d\d+++\d\dATH\r\c'"
Questo è un must perché "pppd" è alimentato dallo standard input e non può scollegare il modem con "crtscts". Ecco il mio /etc/ppp/mini_options:
debug
-detach
defaultroute
netmask 255.255.255.0
mru 1500
mtu 1500
asyncmap 00000000
disconnect "chat '' '\d\d+++\d\dATH\r\c'"
Usate l'opzione "-d" per comporre un certo numero telefonico all'avvio di minicom. Potete anche provare
open -sl -- minicom -d 1
Per mettere minicom su un'altra console (consultate il Consoles-Many mini-HOWTO per i dettagli).
Poiché "pppd" è un demone non è stato designato per interagire con l'utente o essere osservato. In questo modo è ok. Dopo tutto, stiamo usando un sistema operativo unix-like...
La soluzione canonica è un backend. C'è qualche volontario per lavorare a questo per minicom? Delle estensioni carine potrebbero essere:
Fine del PPP-over-minicom mini-HOWTO
Traduzione italiana a cura di Nicola Girardi ( girardi@keycomm.it)