Come già detto, ci sono molti modi per farlo. Quel che presento è il modo nel quale io lo faccio (usando una scheda seriale multiporta della Cyclades) e un insieme di linee telefoniche a selezione rotativa.
Se non vi piace il metodo qui presentato, sentitevi liberi di farlo a modo vostro. Avrei comunque piacere di includere altri metodi nelle versioni future di questo HOWTO. Quindi, vi invito ad inviarmi i vostri commenti e metodi!
Si noti, che questa sezione tratta solamente la configurazione di Linux come server PPP. Non ho intenzione di includere (mai) informazioni sulla configurazione di speciali terminal servers o altro.
Inoltre, devo ancora fare esperimenti con le shadow password (ma lo farò prima o poi). Le informazioni qui presentate quindi NON comprendono tutti gli ammenicoli che sono richiesti dalla shadow suite.
Si applicano ancora tutte le considerazioni precedenti sulla compilazione del kernel e sulla relazione tra la versione del kernel e quella di pppd. Questa sezione assume che si siano già lette le sezioni precedenti di questo documento!
Per un server PPP, si DEVE includere l'IP forwarding nel proprio kernel. Si possono voler includere anche altre caratteristiche (come IP firewall, accounting ecc ecc).
Se si usa una scheda seriale multiporta, ovviamente si devono anche includere nel kernel i driver necessari!
Noi offriamo account in PPP (e SLIP) e account shell usando la stessa coppia nome utente/password. Ciò ha il vantaggio (per noi) che gli utenti necessitano solo di un account e lo possono usare per tutti i tipi di connettività.
Poiché siamo un'organizzazione educativa, non facciamo pagare il nostro staff e gli studenti per l'accesso, e quindi non dobbiamo preoccuparci di problematiche di accredito e messa in conto (accounting e charging).
Abbiamo un firewall tra il nostro sito ed Internet, e ciò restringe alcuni accessi agli utenti in quanto le linee di dial up sono dentro il nostro firewall (di Internet) (per ragioni abbastanza ovvie, i dettagli degli altri firewall interni non sono qui presentati, e sono comunque irrilevanti).
Il processo che un utente deve seguire per stabilire una connessione PPP nel nostro sito (una volta che sia in possesso di un account valido naturalmente) è:
ppp
per avviare
il PPP sul server.
Il server usa un file /etc/ppp/options.ttyXX
per ognuna delle
porte d'ingresso che imposta il numero IP remoto per l'allocazione
degli IP dinamici. Il server usa instradamenti proxyarp per i client
remoti (impostati tramite l'apposita opzione di pppd). Ciò ovvia la
necessità di far girare routed o gated.
Quando gli utenti riappendono dalla loro parte, il pppd se ne accorge e dice al modem di riattaccare, portando giù, nello stesso tempo, la connessione PPP.
Sarà necessario il software seguente:
Prima di poter configurare il proprio server PPP, la propria macchina Linux dev'essere in grado di gestire accessi standard di dial up.
Questo howto NON tratta la configurazione di questo. Si veda la documentazione del getty scelto e il Serial HOWTO per informazioni in proposito.
Bisognerà impostare un /etc/ppp/options
generico con le
opzioni comuni per tutte le porte di dial up. Le opzioni da noi usate
sono:
asyncmap 0 netmask 255.255.254.0 proxyarp lock crtscts modem
Nota: noi NON usiamo nessun instradamento (ovvio) ed in particolare non c'è l'opzione defaultroute. La ragione di ciò è che tutto quello che è richiesto di fare (come server PPP) è di instradare i pacchetti dal client PPP verso la propria LAN/Internet e di instradare i pacchetti dalla propria LAN ed oltre verso il client.
Tutto ciò che serve per far questo è un instradamento di tipo host verso la macchina client e l'uso dell'opzione 'proxyarp' di pppd.
L'opzione 'proxyarp' imposta (sorpresa) una voce di proxy ARP nelle tabella ARP del server PPP che in pratica dice 'spedisci a me tutti i pacchetti destinati al client PPP'. Questo è il modo più semplice per impostare un instradamento ad un unico client PPP, ma non la si può usare se si fa l'instradamento tra due LAN: si devono usare gli appositi instradamenti di rete i quali non possono usare proxy ARP.
Quasi certamente si vorrà fornire un'allocazione dinamica di numeri IP
agli utenti in dial up. Ciò lo si può fare allocando un numero IP per
ognuna delle porte di dial up. Ora si crei un
/etc/ppp/options.ttyXX
per ognuna delle porte.
In questo si metta semplicemente il numero IP locale (server) ed il numero IP che viene usato per quella porta. Per esempio
kepler:slip01
In particolare, si noti che si possono usare nomi host validi in questo file (ho scoperto che ricordo solamente i numeri IP delle macchine e dei dispositivi critici nella mia rete - i nomi sono molto più significativi!).
Poiché l'avvio di una connessione PPP implica la configurazione di un dispositivo del kernel (un'interfaccia di rete) e la manipolazione della tabella di instradamento del kernel, sono richiesti privilegi particolari, in pratica i pieni privilegi di root.
Fortunatamente, pppd è stato progettato per essere eseguito in modo sicuro in setuid a root. Quindi bisognerà fare
chmod u+s /usr/sbin/pppd
Se si vanno a vedere i permessi del file, dovrebbero apparire come
-rwsr-xr-x 1 root root 74224 Apr 28 07:17 /usr/sbin/pppd
Se non lo si fa, gli utenti non saranno in grado di attivare la loro connessione ppp.
Per poter semplificare le cose ai nostri utenti PPP, abbiamo creato un alias globale (in /etc/bashrc) cosicché con un semplice comando possano lanciare ppp sul server una volta fatto il login.
Questi può essere una cosa del tipo
alias ppp="exec /usr/sbin/pppd -detach"
Quello che fa è
Quando un utente fa il login in questo modo, apparirà nell'output del comando 'w' come
6:24pm up 3 days, 7:00, 4 users, load average: 0.05, 0.03, 0.00 User tty login@ idle JCPU PCPU what hartr ttyC0 3:05am 9:14 -
E questo è quanto...vi avevo detto che questo era un semplice sistema server PPP!