Sophie

Sophie

distrib > Mandriva > 9.1 > i586 > by-pkgid > f1098342ec4a2b28475e34123ce17201 > files > 825

howto-html-it-9.1-0.5mdk.noarch.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
 <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
 <TITLE>Linux PPP HOWTO: Configurare un server PPP</TITLE>
 <LINK HREF="PPP-HOWTO-27.html" REL=next>
 <LINK HREF="PPP-HOWTO-25.html" REL=previous>
 <LINK HREF="PPP-HOWTO.html#toc26" REL=contents>
</HEAD>
<BODY>
<A HREF="PPP-HOWTO-27.html">Avanti</A>
<A HREF="PPP-HOWTO-25.html">Indietro</A>
<A HREF="PPP-HOWTO.html#toc26">Indice</A>
<HR>
<H2><A NAME="ppp-server"></A> <A NAME="s26">26. Configurare un server PPP</A></H2>

<P>Come gi&agrave; detto, ci sono molti modi per farlo. Quel che presento &egrave; il
modo nel quale io lo faccio (usando una scheda seriale multiporta
della Cyclades) e un insieme di linee telefoniche a selezione
rotativa.
<P>
<P>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!
<P>
<P>Si noti, che questa sezione tratta solamente la configurazione di
Linux come server PPP. Non ho intenzione di includere (mai)
informazioni sulla configurazione di terminal servers speciali
o altro.
<P>
<P>Inoltre, devo ancora fare esperimenti con le shadow password (ma lo
far&ograve; prima o poi). Le informazioni qui presentate quindi NON
comprendono tutti gli ammenicoli che sono richiesti dalla shadow
suite.
<P>
<H2><A NAME="ss26.1">26.1 Compilazione del kernel</A>
</H2>

<P>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&agrave; lette le
sezioni precedenti di questo documento!
<P>
<P>Per un server PPP, si <B>DEVE</B> includere l'IP forwarding nel proprio
kernel. Si possono voler includere anche altre caratteristiche (come
IP firewall, accounting ecc ecc).
<P>
<P>Se si usa una scheda seriale multiporta, ovviamente si devono anche
includere nel kernel i driver necessari!
<P>
<H2><A NAME="ss26.2">26.2 Panoramica del sistema server</A>
</H2>

<P>Noi offriamo account in PPP (e SLIP) e account shell usando la stessa
coppia nome utente/password. Ci&ograve; ha il vantaggio (per noi) che gli
utenti necessitano solo di un account e lo possono usare per tutti i
tipi di connettivit&agrave;.
<P>
<P>Poich&eacute; 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).
<P>
<P>Abbiamo un firewall tra il nostro sito ed Internet, e ci&ograve; 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).
<P>
<P>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) &egrave;:
<UL>
<LI>chiamare il dialer rotativo (ovvero un unico numero telefonico
connesso ad un banco di modem, dei quali verr&agrave; usato il primo libero);</LI>
<LI>fare il login usando un nome utente e password validi;</LI>
<LI>al prompt della shell, lanciare il comando <CODE>ppp</CODE> per avviare
il PPP sul server;</LI>
<LI>avviare il PPP sul proprio PC (il fatto che questi funzioni in
Windows, DOS, Linux MAC OS o quant'altro &egrave; un suo problema).</LI>
</UL>
<P>
<P>Il server usa un file <CODE>/etc/ppp/options.ttyXX</CODE> 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&ograve; ovvia la
necessit&agrave; di far girare routed o gated.
<P>
<P>Quando gli utenti riappendono dalla loro parte, il pppd se ne accorge
e dice al modem di riattaccare, portando gi&ugrave;, nello stesso tempo, la
connessione PPP.
<P>
<H2><A NAME="ss26.3">26.3 Procurarsi il software che serve</A>
</H2>

<P>Sar&agrave; necessario il software seguente:
<UL>
<LI>Linux, propriamente compilato per includere le opzioni necessarie;</LI>
<LI>la giusta versione di pppd per il proprio kernel;</LI>
<LI>un programma 'getty' che gestisca in modo intelligente le
comunicazioni via modem.<BR>
Noi usiamo getty_ps2.0.7h, ma anche mgetty &egrave; altamente considerato. Da
quel che ho capito mgetty riesce a riconoscere una chiamata che sta
usando pap/chap (pap &egrave; lo standard per Windows95) e a chiamare
automaticamente pppd, ma non ho ancora avuto il tempo di provarlo;</LI>
<LI>un domain name server (DNS) funzionante ed accessibile agli
utenti in dial up.<BR>
Si dovrebbe veramente far girare un proprio DNS se possibile...</LI>
</UL>
<P>
<H2><A NAME="ss26.4">26.4 Configurare un accesso standard (accesso shell)</A>
</H2>

<P>Prima di poter configurare il proprio server PPP, la propria macchina
Linux dev'essere in grado di gestire accessi standard di dial up.
<P>
<P><B>Questo HOWTO NON tratta la configurazione di questo. Si veda la
documentazione del getty scelto e il Serial HOWTO per informazioni in
proposito.</B>
<P>
<H2><A NAME="ss26.5">26.5 Impostare i file delle opzioni di PPP</A>
</H2>

<P>Bisogner&agrave; impostare un <CODE>/etc/ppp/options</CODE> generico con le
opzioni comuni per tutte le porte di dial up. Le opzioni da noi usate
sono:
<P>
<HR>
<PRE>
asyncmap 0
netmask 255.255.254.0
proxyarp
lock
crtscts
modem
</PRE>
<HR>
<P>
<P>Nota: noi NON usiamo nessun instradamento (ovvio) ed in particolare
non c'&egrave; l'opzione defaultroute. La ragione di ci&ograve; &egrave; che tutto quello
che &egrave; richiesto di fare (come server PPP) &egrave; di instradare i pacchetti
<B>dal</B> client PPP verso la propria LAN/Internet e di instradare i
pacchetti dalla propria LAN ed oltre <B>verso</B> il client.
<P>
<P>Tutto ci&ograve; che serve per far questo &egrave; un instradamento di tipo host
verso la macchina client e l'uso dell'opzione 'proxyarp' di pppd.
<P>
<P>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 &egrave; il modo pi&ugrave; semplice per
impostare un instradamento ad un unico client PPP, ma non la si pu&ograve;
usare se si fa l'instradamento tra due LAN: si devono usare gli
appositi instradamenti di rete i quali non possono usare proxy ARP.
<P>
<P>Quasi certamente si vorr&agrave; fornire un'allocazione dinamica di numeri IP
agli utenti in dial up. Ci&ograve; lo si pu&ograve; fare allocando un numero IP per
ognuna delle porte di dial up. Ora si crei un
<CODE>/etc/ppp/options.ttyXX</CODE> per ognuna delle porte.
<P>
<P>In questo si metta semplicemente il numero IP locale (server) ed il
numero IP che viene usato per quella porta. Per esempio:
<P>
<HR>
<PRE>
kepler:slip01
</PRE>
<HR>
<P>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&ugrave;
significativi!).
<P>
<H2><A NAME="ss26.6">26.6 Impostare pppd per permettere agli utenti di eseguirlo (con successo)</A>
</H2>

<P>Poich&eacute; 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.
<P>
<P>Fortunatamente, pppd &egrave; stato progettato per essere eseguito in modo
sicuro in setuid a root. Quindi bisogner&agrave; fare
<HR>
<PRE>
chmod u+s /usr/sbin/pppd
</PRE>
<HR>
<P>
<P>Se si vanno a vedere i permessi del file, dovrebbero apparire come
<HR>
<PRE>
-rwsr-xr-x   1 root     root        74224 Apr 28 07:17 /usr/sbin/pppd
</PRE>
<HR>
<P>
<P>Se non lo si fa, gli utenti non saranno in grado di attivare la loro
connessione ppp.
<P>
<H2><A NAME="ss26.7">26.7 Impostare un alias globale per pppd</A>
</H2>

<P>Per poter semplificare le cose ai nostri utenti PPP, abbiamo creato un
alias globale (in /etc/bashrc) cosicch&eacute; con un semplice comando
possano lanciare ppp sul server una volta fatto il login.
<P>
<P>Questi pu&ograve; essere una cosa del tipo
<HR>
<PRE>
alias ppp="exec /usr/sbin/pppd -detach"
</PRE>
<HR>
<P>
<P>Quello che fa &egrave;:
<UL>
<LI>exec : questo implica il rimpiazzo del programma in esecuzione
(in questo caso la shell) con il programma che &egrave; eseguito;</LI>
<LI>pppd -detach : avvia pppd e NON fa il fork in background. Ci&ograve;
assicura che quando il pppd esce non ci sono ancora processi in giro.</LI>
</UL>
<P>Quando un utente fa il login in questo modo, apparir&agrave; nell'output del
comando 'w' come
<HR>
<PRE>
  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                -
</PRE>
<HR>
<P>
<P>E questo &egrave; quanto...vi avevo detto che questo era un semplice sistema
server PPP!
<P>
<HR>
<A HREF="PPP-HOWTO-27.html">Avanti</A>
<A HREF="PPP-HOWTO-25.html">Indietro</A>
<A HREF="PPP-HOWTO.html#toc26">Indice</A>
</BODY>
</HTML>