Avanti Indietro Indice

12. Impostare i file di connessione PPP

Adesso è necessario essere loggati come root per creare le directory e modificare i file necessari per impostare il PPP, anche se poi si vuole che il PPP sia accessibile a tutti gli utenti e non solo a root.

Il PPP usa un certo numero di file per connettersi e impostare la connessione PPP. Questi differiscono per nome e locazione in PPP 2.1.2 e 2.2.

Per il PPP 2.1.2 i file sono:


/usr/sbin/pppd          # l'eseguibile PPP
/usr/sbin/ppp-on        # lo script di composizione del numero e connessione
/usr/sbin/ppp-off       # lo script di disconnessione
/etc/ppp/options        # le opzioni che pppd usa per tutte le connessioni
/etc/ppp/options.ttyXX  # le opzioni specifiche per una connessione su
                        # questa porta

Per il PPP 2.2 i file sono:


/usr/sbin/pppd                  # l'eseguibile PPP
/etc/ppp/scripts/ppp-on # lo script di composizione del numero e connessione
/etc/ppp/scripts/ppp-on-dialer  # parte 1 dello script di composizione
                                # del numero
/etc/ppp/scripts/ppp-off        # il vero script di chat
/etc/ppp/options            # le opzioni che pppd usa per tutte le connessioni
/etc/ppp/options.ttyXX      # le opzioni specifiche per una connessione su
                            # questa porta

Gli utenti di Red Hat Linux dovrebbero notare che l'installazione predefinita di Red Hat 4.X mette questi script in /usr/doc/ppp-2.2.0f-2/scripts.

Nella propria directory /etc ci dovrebbe essere una directory ppp:

drwxrwxr-x   2 root     root         1024 Oct  9 11:01 ppp

Se non esiste, la si crei con questo proprietario e permessi.

Se la directory già esiste, dovrebbe contenere un file di opzioni tipo, chiamato options.tpl. Questo file è incluso qui sotto nel caso che non ci sia.

Lo si stampi in quanto contiene una spiegazione di praticamente tutte le opzioni per PPP (utile da leggere assieme alle pagine man di pppd). Sebbene si possa usare questo file come punto di partenza del proprio file /etc/ppp/options file, è probabilmente meglio creare un proprio file di opzioni che non contenga tutti i commenti, il quale sarà così molto più breve e più facile da leggere e mantenere.

Se si posseggono più linee seriali o modem (caso tipico di un server PPP), si crei un file /etc/ppp/options generale contenente le opzioni comuni a tutte le porte seriali sulle quali si vuole supportare il dial in/out e poi si crei un file di opzioni individuali per ognuna delle line seriali sulle quali si voglia poter stabilire una connessione PPP con le impostazioni specifiche richieste per ogni porta.

Questi file specifici per le porte si chiamano options.ttyx1, options.ttyx2 e così via (dove x è la lettera appropriata per le proprie porte seriali).

Comunque, per una connessione PPP singola, si può semplicemente usare il file /etc/ppp/options. In alternativa si possono mettere tutte le opzioni come argomenti per il comando pppd stesso.

È più semplice mantenere una configurazione che usa i file /etc/ppp/options.ttySx. Se si usa PPP per connettersi ad un certo numero di siti diversi, si possono creare file di opzioni per ogni sito in /etc/ppp/options.site e poi specificare il file di opzioni come un parametro del comando PPP quando ci si connette (usando l'opzione file file_opzioni nella riga di comando di pppd).

12.1 Il file di opzioni tipo options.tpl

Alcune distribuzioni sembrano aver perso il file options.tpl, e quindi eccone qui una versione completa. Suggerisco di NON modificare questo file per creare il proprio (o i propri) file /etc/ppp/options. Piuttosto, lo si copi su un nuovo file e poi si modifichi quello. Se si fa casino con le modifiche è sempre possibile tornare a quello originale e ricominciare.


# /etc/ppp/options -*- sh -*- opzioni generali per pppd
# created 13-Jul-1995 jmk
# autodate: 01-Aug-1995
# autotime: 19:45

# Usa l'eseguibile o il comando shell specificato per impostare la
# linea seriale. Questo script solitamente userebbe il programma
# "chat" per dialogare con il modem ed avviare la sessione ppp
# remota. 
#connect "echo Bisogna installare un comando connect."

# Avvia l'eseguibile o il comando shell specificato dopo che pppd ha
# concluso la connessione, Questo script potrebbe, ad esempio, inviare
# comandi al modem per fargli riagganciare se non sono disponibili i
# segnali si controllo hardware del modem. 
#disconnect "chat -- \d+++\d\c OK ath0 OK"

# mappa di caratteri asincrona -- esadecimale a 32-bit; ogni bit è un
# carattere del quale è necessario fare l'escape quando pppd lo
# riceve. 0x00000001 rappresenta '\x01', e 0x80000000 rappresenta
# '\x1f'. 
#asyncmap 0

# Richiede che il peer si autentifichi da solo prima di permettere la
# trasmissione o la ricezione di pacchetti di rete. 
#auth

# Usa il controllo di flusso hardware (i.e. RTS/CTS) per controllare
# il flusso di dati sulla porta seriale.
#crtscts

# Usa il controllo di flusso software (i.e. XON/XOFF) per controllare
# il flusso di dati sulla porta seriale. 
#xonxoff

# Aggiunge, quando la negoziazione IPCP è completata con successo, un
# instradamento predefinito nella tabella di instradamento di sistema,
# usando il peer come gateway. Questa voce viene automaticamente
# rimossa quando la connessione PPP è interrotta.  
#defaultroute

# Specifica che di certi caratteri dovrebbe essere fatto l'escape in
# trasmissione (indipendentemente dal fatto il peer richieda tale
# operazione con la sua mappa di caratteri di controllo
# asincrona). Questi caratteri di cui dev'essere fatto l'escape sono
# specificati come una lista di numeri esadecimali separati da
# virgole. Si noti che può essere specificato praticamente qualsiasi
# carattere, mentre l'opzione asyncmap permette di specificare solo
# caratteri di controllo. I caratteri dei quali non è possibile fare
# l'escape sono quelli con valore esadecimale 0x20 - 0x3f o 0x5e.
#escape 11,13,ff

# Non usa le linee di controllo del modem.
#local

# Specifica che pppd dovrebbe usare un lock in stile UUCP sul
# dispositivo seriale per assicurare l'accesso esclusivo al
# dispositivo. 
#lock

# Usa le linee di controllo del modem.  In Ultrix, questa opzione
# implica il controllo hardware del flusso come l'opzione
# crtscts. (Questa opzione non è completamente implementata.)
#modem

# Imposta il valore di MRU [Maximum Receive Unit - Unità Massima di
# Ricezione] a <n> per la negoziazione. pppd chiederà al peer di
# inviare pacchetti di non più di <n> byte. Il minimo valore di MRU è
# 128. Il valore predefinito è 1500. Un valore di 296 è raccomandato
# per connessioni lente (40 byte per l'header TCP/IP + 256 byte di
# dati).  
#mru 542

# Imposta la netmask per l'interfaccia a <n>, una netmask a 32 bit in
# notazione "decimal dot" (p.es. 255.255.255.0).
#netmask 255.255.255.0

# Disabilita il comportamento predefinito quando non è specificato
# nessun indirizzo IP locale, che è di determinare (se possibile)
# l'indirizzo IP locale dal nome dell'host.  Con questa opzione, il
# peer deve fornire un indirizzo IP locale durante le negoziazione
# IPCP (a meno che non sia specificato esplicitamente nella riga di
# comando o nel file delle opzioni). 
#noipdefault

# Abilita le opzioni "passive" nell'LCP. Con questa opzione, pppd
# proverà ad iniziare la connessione; se non riceve risposta dal peer,
# allora pppd attenderà passivamente un pacchetto LCP valido da parte
# del peer (invece di uscire, come farebbe senza questa opzione). 
#passive

# Con questa opzione, pppd non trasmetterà pacchetti LCP per iniziare
# una connessione finché non riceve un pacchetto LCP valido dal peer
# (come per l'opzione "passive" per le vecchie versioni di pppd).
#silent

# Non richiede o permette la negoziazione di qualsiasi opzione per LCP
# o IPCP (usa i valori predefiniti). 
#-all

# Disabilita la negoziazione di compressione Indirizzo/Controllo (usa
# quanto predefinito, ovvero campi address/control disabilitati).
#-ac

# Disabilita la negoziazione asyncmap (usa la asyncmap predefinita,
# i.e. fa l'escape di tutti i caratteri di controllo).
#-am

# Non fa il fork per diventare un processo in background (altrimenti
# pppd lo farebbe se è specificato un dispositivo seriale).
#-detach

# Disabilita la negoziazione dell'indirizzo IP (con questa opzione
# l'indirizzo IP remoto deve essere specificato con un'opzione nella
# riga di comando o nel file delle opzioni).
#-ip

# Disabilita la negoziazione magic number. Con questa opzione pppd non
# può rilevare una linea cortocircuitata (looped-back).
#-mn

# Disabilita la negoziazione MRU [Maximum Receive Unit] (usa il valore
# predefinito, i.e. 1500).
#-mru

# Disabilita la negoziazione della compressione del campo protocollo
# ("protocol field compression") (usa quanto predefinito,
# i.e. compressione del campo protocollo disabilitata).
#-pc

# Richiede che il peer si autentifichi da solo usando il PAP. Questo
# richiede un'autentificazione a DUE VIE - NON usare per una
# connessione standard con autentificazione PAP ad un ISP, in quanto
# richiede che anche la macchina dell'ISP si autentifichi da sola
# nella propria macchina (e non sarà in grado di farlo). 
#+pap

# Non accetta di autentificare usando PAP.
#-pap

# Richiede che il peer di autentifichi da solo usando
# l'autentificazione CHAP [Cryptographic Handshake Authentication
# Protocol]. Questo richiede un'autentificazione a DUE VIE - NON
# usare per una connessione standard con autentificazione CHAP ad un
# ISP, in quanto richiede che anche la macchina dell'ISP si
# autentifichi da sola nella propria macchina (e non sarà in grado di
# farlo). 
#+chap

# Non accetta di autentificare usando CHAP.
#-chap

# Disabilita la negoziazione della compressione dell'header IP in
# stile Van Jacobson (usa quanto predefinito, i.e. nessuna compressione).
#-vj

# Incrementa il livello di debug (analoga -d).  Se è data questa
# opzione, pppd registrerà il contenuto di tutti i pacchetti spediti e
# ricevuti in un formato leggibile.  I pacchetti sono registrati
# usando syslog con funzionalità daemon e debug. Queste informazioni
# possono essere redirette ad un file impostando opportunamente il
# file /etc/syslog.conf (vedere syslog.conf(5)) (se pppd è compilato
# abilitando l'extra debugging, registrerà i messaggi usando le
# funzionalità local2 invece di daemon).
#debug

# Aggiunge il nome del dominio <d> al nome dell'host locali per scopi
# di autentificazione.  Per esempio, se gethostname() ritorna il nome
# porsche, ma il FQDN (Fully Qualified Domain Name) è
# porsche.Quotron.COM, si dovrebbe usare l'opzione domain per
# impostare il nome dominio a Quotron.COM. 
#domain <d>

# Abilita il codice di debug nel driver del PPP a livello kernel.
# L'argomento n è un numero che è la somma dei seguenti valori: 1 per
# abilitare i messaggi di debug generici, 2 per richiedere la
# visualizzazione del contenuto dei pacchetti ricevuti, e 4 per
# visualizzare quello dei pacchetti trasmessi.
#kdebug n

# Imposta il valore di MTU [Maximum Transmit Unit - Unità Massima di
# Trasferimento] a <n>. A meno che il peer non richieda un valore
# minore tramite la negoziazione MRU, pppd chiederà al codice di
# gestione della rete del kernel di inviare attraverso l'interfaccia
# di rete del PPP pacchetti di dati di non più di n byte. 
#mtu <n>

# Imposta il nome del sistema locale ad <n> per scopi di
# autentificazione. Se si sta usando PAP/CHAP probabilmente dev'essere
# impostato al nome utente del proprio ISP.
#name <n>

# Imposta a <n> il nome utente da usare per autentificare questa
# macchina con il peer usando il PAP. 
# NON usare questa opzione se si sta usando l'opzione 'name'
# suddetta. 
#user <u>

# Obbliga l'uso del nome dell'host come nome del sistema locale per
# scopi di autentificazione (ha priorità sull'opzione name). 
#usehostname

# Imposta a <n> il nome assunto del sistema remoto per scopi di 
# autentificazione. 
#remotename <n>

# Aggiunge una voce nella tabella ARP [Address Resolution Protocol -
# Protocollo di Risoluzione Indirizzi] di sistema con l'indirizzo IP
# del peer e l'indirizzo Ethernet di questo sistema. 
#proxyarp

# Usa la base di dati di password di sistema per autentificare con il
# peer usando PAP.
#login

# Se è specificata questa opzione, pppd invierà un frame echo-request
# LCP al peer ogni n secondi.  Sotto Linux, echo-request è inviata
# quando per n secondi non si sono ricevuti pacchetti dal
# peer. Normalmente il peer dovrebbe rispondere a echo-request
# inviando un echo-reply. Questa opzione può essere usata con
# l'opzione lcp-echo-failure per rilevare che il peer non è più 
# connesso. 
#lcp-echo-interval <n>

# Se è specificata questa opzione, pppd presumerà che il peer è morto
# se sono inviati n echo-request LCP senza ricevere un echo-reply LCP
# valido. Se questo accade, pppd terminerà la connessione. L'uso di
# questa opzione richiede un valore non nullo come parametro a
# lcp-echo-interval. Questa opzione può essere usata per abilitare pppd
# a terminare dopo l'interruzione della connessione fisica (p.es. il
# modem ha messo giù la linea) nelle situazioni nella quali non sia
# disponibile il controllo hardware delle linee da parte del modem. 
#lcp-echo-failure <n>

# Imposta l'intervallo di riavvio LCP (timeout nella ritrasmissione) a
# <n> secondi (valore predefinito 3). 
#lcp-restart <n>

# Imposta il massimo numero di trasmissioni di terminate-request LCP a
# <n> (valore predefinito 3).
#lcp-max-terminate <n>

# Imposta il numero massimo di trasmissioni di configure-request LCP a
# <n> (valore predefinito 10).
# Alcuni server PPP non lenti nell'avviarsi. Si può dover incrementare
# questo valore se si ottengono errori tipo 'serial line looped back'
# e si è SICURI di aver fatto correttamente il login e che il il PPP
# dovrebbe essere già avviato sul server.
#lcp-max-configure <n>

# Imposta il numero massimo di configure-NAK LCP ricevuti prima di
# inviare configure-Rejects <n> (valore predefinito 10).
#lcp-max-failure <n>

# Imposta l'intervallo di riavvio di IPCP (timeout in ritrasmissione)
# a <n> secondi (valore predefinito 3).
#ipcp-restart <n>

# Imposta il numero massimo di trasmissioni di terminate-request IPCP
# a <n> (valore predefinito 3).
#ipcp-max-terminate <n>

# Imposta il numero massimo di trasmissioni di configure-request IPCP
# a <n> (valore predefinito 10). 
#ipcp-max-configure <n>

# Imposta il numero massimo di configure-NAK IPCP ricevuti prima di
# inviare configure-Rejects <n> (valore predefinito 10). 
#ipcp-max-failure <n>

# Imposta l'intervallo di riavvio PAP (timeout in ritrasmissione)
# a <n> secondi (valore predefinito 3). 
#pap-restart <n>

# Imposta il numero massimo di trasmissioni di authenticate-request
# PAP a <n> (valore predefinito 10).
# <n> (default 10).
#pap-max-authreq <n>

# Imposta l'intervallo di riavvio CHAP (timeout in ritrasmissione per
# challenge) a <n> secondi (valore predefinito 3).
#chap-restart <n>

# Imposta il numero massimo di trasmissioni challenge CHAP a <n>
# (valore predefinito 10). 
#chap-max-challenge

# Con questa opzione, pppd reinterrogherà il peer ogni <n> secondi.
#chap-interval <n>

# Con questa opzione, pppd accetterà il suggerimento del peer per il
# proprio indirizzo IP locale, anche se l'indirizzo IP locale è stato
# specificato in un'opzione.
#ipcp-accept-local

# Con questa opzione, pppd accetterà il suggerimento del peer per il
# suo indirizzo IP (remoto), anche l'indirizzo IP remoto è stato
# specificato in un'opzione.
#ipcp-accept-remote

12.2 Quali opzioni dovrei usare? (No PAP/CHAP)

Beh, come in tutte le cose...dipende. Le opzioni qui specificate dovrebbero funzionare con la maggior parte dei server.

Comunque, se NON funzionassero, SI LEGGA IL FILE DI OPZIONI TIPO (/etc/ppp/options.tpl) e la pagina man di pppd e si parli con l'amministratore o il supporto clienti del server a cui ci si connette.

Si dovrebbe inoltre notare che gli script di connessione qui presentati usano alcune opzioni in riga di comando di pppd per rendere il tutto un poco più semplice da modificare.


# /etc/ppp/options (NIENTE PAP/CHAP)
#
# Previene pppd da fare il fork e passare in background
-detach
#
# usa le linee di controllo del modem
modem
# usa il lock in stile uucp per assicurare l'accesso esclusivo al
# dispositivo seriale.
lock
# usa il controllo di flusso hardware
crtscts
# crea un instradamento predefinito per questa connessione nella
# tabella di instradamento 
defaultroute
# NON imposta l'"escape" di nessuna sequenza di controllo
asyncmap 0
# usa la dimensione massima dei pacchetti in trasmissione di 552 byte
mtu 552
# usa la dimensione massima dei pacchetti in ricezione di 552 byte
mru 552
#
#-------FILE DEL FILE ESEMPIO /etc/ppp/options (niente PAP/CHAP)


Avanti Indietro Indice