Pppoeconf: differenze tra le versioni

Vai alla navigazione Vai alla ricerca
 
(25 versioni intermedie di 2 utenti non mostrate)
Riga 1: Riga 1:
{{Versioni compatibili}}
{{Versioni compatibili|Wheezy|Jessie|Stretch}}{{Gateway-Router}}


== Introduzione ==
== Introduzione ==
Riga 8: Riga 8:
* si ha a disposizione un modem ADSL/router/gateway ethernet, ma lo si vuole usare solo come modem ADSL per poter dedicare una propria installazione debian al ruolo di router/gateway (e quant'altro si voglia).
* si ha a disposizione un modem ADSL/router/gateway ethernet, ma lo si vuole usare solo come modem ADSL per poter dedicare una propria installazione debian al ruolo di router/gateway (e quant'altro si voglia).
Ora, il primo scenario è ormai puramente teorico, visto che ormai da diversi anni tutti i modem in commercio sono in realtà dispositivi integrati che forniscono numerose funzionalità, tra cui appunto anche quella di router/gateway. Rimane dunque il solo secondo scenario, cui questa guida farà riferimento.
Ora, il primo scenario è ormai puramente teorico, visto che ormai da diversi anni tutti i modem in commercio sono in realtà dispositivi integrati che forniscono numerose funzionalità, tra cui appunto anche quella di router/gateway. Rimane dunque il solo secondo scenario, cui questa guida farà riferimento.
Prima di proseguire si rammenta che l'utente deve '''già avere in essere un contratto di fornitura ADSL''' con un qualche internet service provider.


== Requisiti hardware della macchina debian ==
== Requisiti hardware della macchina debian ==
Riga 13: Riga 15:
Almeno due interfacce di rete, di cui una da collegare al modem/router/gateway e l'altra da usare per la connessione con tutti i dispositivi della lan. L'interfaccia verso la LAN può essere a filo o wireless, ma quella verso il modem deve necessariamente essere a filo, almeno per quanto concerne la presente guida.
Almeno due interfacce di rete, di cui una da collegare al modem/router/gateway e l'altra da usare per la connessione con tutti i dispositivi della lan. L'interfaccia verso la LAN può essere a filo o wireless, ma quella verso il modem deve necessariamente essere a filo, almeno per quanto concerne la presente guida.


== Configurazione del modem/router/gateway ==
== Requisiti del modem/router/gateway ==


Prima di passare all'installazione e configurazione del software sulla macchina debian è necessario configurare correttamente la modalità di funzionamento del modem/router/gateway. L'unico modo infatti che un tale dispositivo ha di funzionare come semplice modem è di essere impostato come full bridge, ovvero secondo quanto definito dalla specifica '''RFC 2684 (ex RFC 1483)'''.
Prima di passare all'installazione e configurazione del software sulla macchina debian è necessario configurare correttamente la modalità di funzionamento del modem/router/gateway. L'unico modo infatti che un tale dispositivo ha di funzionare come semplice modem è di essere impostato come '''full bridge''', ovvero secondo quanto definito dalla specifica '''RFC 2684 (ex RFC 1483)'''.
Poiché ogni produttore fa storia a se non è possibile dare delle istruzioni precise su come configurare il proprio modem/router/gateway, tuttavia in linea generale questa modalità di funzionamento sarà identificabile per esclusione, visto che di norma i suddetti dispositivi offrono tre modalità, di cui due sono sempre <code>pppoe</code> e <code>pppoa</code>.
Poiché ogni produttore fa storia a se non è possibile dare delle istruzioni precise su come configurare il proprio modem/router/gateway, tuttavia in linea generale questa modalità di funzionamento sarà identificabile per esclusione, visto che di norma i suddetti dispositivi offrono tre modalità, di cui due sono sempre <code>pppoe</code> e <code>pppoa</code>. Alternativamente è anche possibile che tale opzione sia da tutt'altra parte, per esempio potrebbe essere possibile scegliere tra una modalità "Router+Modem" e una "Modem only".


{{Warningbox|La specifica RFC 2684 presuppone l'utilizzo di pppoe da parte del proprio ISP, quindi se così non fosse l'utente deve necessariamente usare un dispositivo autonomamente in grado di "trasformare" i pacchetti pppoe in pppoa. Poiché tali dispositivi non sono molto comuni si cita a titolo puramente d'esempio il Draytek vigor120}}
{{Warningbox|La specifica RFC 2684 presuppone l'utilizzo di pppoe da parte del proprio ISP, quindi se così non fosse l'utente deve necessariamente usare un dispositivo autonomamente in grado di "trasformare" i pacchetti pppoe in pppoa. Poiché tali dispositivi non sono molto comuni si cita a titolo puramente d'esempio il Draytek vigor120}}
Riga 38: Riga 40:
* credenziali di accesso del proprio ISP in '''<code>/etc/ppp/chap-secrets</code>'''.
* credenziali di accesso del proprio ISP in '''<code>/etc/ppp/chap-secrets</code>'''.
* parametri di configurazione della linea adsl in '''<code>/etc/ppp/peers/dsl-provider</code>''', posto naturalmente di aver accettato il nome suggerito da <code>pppoeconf</code>.
* parametri di configurazione della linea adsl in '''<code>/etc/ppp/peers/dsl-provider</code>''', posto naturalmente di aver accettato il nome suggerito da <code>pppoeconf</code>.
{{Box|Nota|È molto importante indicare un valore di MTU corretto, poiché è probabile che quello ideale del caso PPPoE non vada bene per la modalità RFC148. Si veda a titolo d'esempio la sezione relativa ai possibili problemi.}}
Di seguito un esempio di file di configurazione minimale:
<pre>
# Minimalistic default options file for DSL/PPPoE connections
noipdefault
defaultroute
replacedefaultroute
hide-password
#lcp-echo-interval 30
#lcp-echo-failure 4
noauth
persist
mtu 1456
#persist
#maxfail 0
#holdoff 20
plugin rp-pppoe.so eth1
user "vostro_nome_utente"
#usepeerdns
</pre>


Se si è accettato di attivare la connessione ADSL direttamente all'avvio del computer il file <code>/etc/network/interfaces</code> dovrebbe risultare modificato come segue, almeno limitatamente all'interfaccia usata per il collegamento col modem, cioè <code>eth1</code> nel seguente esempio:
Se si è accettato di attivare la connessione ADSL direttamente all'avvio del computer il file <code>/etc/network/interfaces</code> dovrebbe risultare modificato come segue, almeno limitatamente all'interfaccia usata per il collegamento col modem, cioè <code>eth1</code> nel seguente esempio:
Riga 61: Riga 85:


Al termine della procedura qui descritta la connessione sarà utilizzabile solo dalla macchina su cui è stato installato <code>pppoeconf</code>. Per permettere anche agli altri dispositivi della LAN di accedere a internet ci sono quattro condizioni da soddisfare:
Al termine della procedura qui descritta la connessione sarà utilizzabile solo dalla macchina su cui è stato installato <code>pppoeconf</code>. Per permettere anche agli altri dispositivi della LAN di accedere a internet ci sono quattro condizioni da soddisfare:
# attivare l'ip forwarding a livello kernel;
# avere una seconda interfaccia di rete per il collegamento della macchina al resto della LAN;
# avere una seconda interfaccia di rete per il collegamento della macchina al resto della LAN;
# attivare l'ip forwarding a livello kernel;
# attivare il masquerading per le connessioni in uscita;
# attivare il masquerading per le connessioni in uscita;
# cambiare su ogni macchina (o nel server dhcp qualora se ne abbia uno) l'ip del gateway in modo che coincida con quello del computer su cui si è installato <code>pppoeconf</code>.
# cambiare su ogni macchina (o nel server dhcp qualora se ne abbia uno) l'ip del gateway in modo che coincida con quello del computer su cui si è installato <code>pppoeconf</code>.
=== Interfaccia di rete per la LAN ===
Lo scenario più semplice è costituito da un interfaccia a filo, nel qual caso sarà sufficiente configurare come di norma un indirizzo IP statico o dinamico.
Anche un interfaccia senza fili è adatta allo scopo, tuttavia la faccenda si complica poiché diviene necessario impostare tale interfaccia in modalità master (cioé access point) e tipicamente configurare la crittografia per gestire le connessioni wireless. Si veda ad esempio la guida [[Wireless Access Point (WAP) con Debian]].


=== IP forwarding ===
=== IP forwarding ===
Riga 77: Riga 96:
<pre>net.ipv4.ip_forward = 1</pre>
<pre>net.ipv4.ip_forward = 1</pre>


=== Masquerading ===
=== Interfaccia di rete per la LAN ===


È possibile impostarlo usando <code>iptables</code> (o altro software):
Lo scenario più semplice è costituito da un interfaccia a filo, nel qual caso sarà sufficiente configurare come di norma un indirizzo IP statico o dinamico.<br/>
Anche un interfaccia senza fili è adatta allo scopo, tuttavia la faccenda si complica poiché diviene necessario impostare tale interfaccia in modalità master (cioé access point) e tipicamente configurare la crittografia per gestire le connessioni wireless. Si veda ad esempio la guida [[Wireless Access Point (WAP) personalizzato]].<br/>
Nel caso poi si possiedano sia un interfaccia a filo aggiuntiva che un'interfaccia senza fili è possibile creare un bridge di rete che includa entrambe in modo da garantire simultaneamente l'accesso a internet a dispositivi collegati tramite cavo e via wifi. Si veda la guida [[Ethernet Bridging]] per maggiori informazioni sull'argomento.
 
=== Masquerading e SNAT ===
 
Poiché in genere il proprio ISP mette a disposizione un solo indirizzo pubblico è evidente che questo dovrà essere utilizzato per tutti i dispositivi della propria LAN.
Tale condizione può essere soddisfatta ricorrendo a ''masquerading'' o ''SNAT'', ovvero due diverse impostazioni per permettere il NAT degli indirizzi della LAN. In entrambi i casi è richiesto l'uso di <code>iptables</code> (si tratta comunque di un singolo comando).
{{Warningbox|Impostare masquerading o SNAT non implica in alcun modo l'aver configurato un firewall, cioè la macchina continuerà ad essere completamente senza alcun tipo di protezione verso l'esterno se l'utente non ha già configurato un firewall (sulla stessa macchina o su altro dispositivo)}}
 
==== Masquerading ====
Si usa quando il proprio ISP mette a disposizione un indirizzo pubblico dinamico:
<pre># iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE</pre>
<pre># iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE</pre>
Si noti che questo comando, pur essendo basato su <code>iptables</code>, non imposta alcun tipo di firewall, ma solo il nat dei pacchetti in uscita verso internet.
 
==== SNAT ====
Si usa quando il proprio ISP mette a disposizione un indirizzo pubblico statico:
<pre># iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source IP_PUBBLICO</pre>
 
== Possibili problemi ==
 
=== Navigazione irregolare ===
 
È possibile che alcune pagine, all'apparenza del tutto casuali, risultino inaccessibili, mentre la stragrande maggioranza sia visualizzabile normalmente. In tale situazione è molto probabile che il nodo del problema sia da ricercarsi in un'errata indicazione del valore di MTU.
Provare in primis a riconfigurare il proprio modem-router in modalità "modem-router", ovvero disabilitare la modalità RFC 1483/2684 e ritornare a quella PPPoE. Se il problema sparisce è molto probabile che la causa risieda proprio nell'aver indicato un valore di MTU errato.
Per i client PPPoE è molto comune l'indicazione di un MTU pari a 1492 (per esempio questo è il valore ottimale indicato da telecom per i suoi abbonamenti adsl), tuttavia in modalità RFC 1483/2684 questo valore dovrà essere probabilmente più basso.
La determinazione del parametro MTU avviene per tentativi, tuttavia è probabile che il valore corretto sia pari a quello ideale del caso PPPoE diminuito di otto, ad esempio se MTU PPPoE vale 1492 quello relativo a RFC 1483/2684 sarà probabilmente pari a 1484.
In ogni caso la procedura per la determinazione dell'MTU corretto è semplice e non richiede molto tempo. Da terminale digitare:
<pre>ping www.google.com -c5 -s1456</pre>
{{Box|Nota|Indicare una dimensione di 1456 significa specificare un MTU di 1484, poiché al valore indicato "il sistema aggiunge sempre 28".}}
Se come output si ottiene quanto segue:
<pre>
PING www.google.com (216.58.212.68) 1456(1484) bytes of data.
72 bytes from mil01s24-in-f68.1e100.net (216.58.212.68): icmp_seq=1 ttl=55 (truncated)
72 bytes from mil01s24-in-f68.1e100.net (216.58.212.68): icmp_seq=2 ttl=55 (truncated)
72 bytes from mil01s24-in-f68.1e100.net (216.58.212.68): icmp_seq=3 ttl=55 (truncated)
72 bytes from mil01s24-in-f68.1e100.net (216.58.212.68): icmp_seq=4 ttl=55 (truncated)
72 bytes from mil01s24-in-f68.1e100.net (216.58.212.68): icmp_seq=5 ttl=55 (truncated)
 
--- www.google.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4005ms
rtt min/avg/max/mdev = 35.481/36.157/36.713/0.451 ms
</pre>
Il valore indicato di 1456, cioè un MTU di 1484, va bene, ma ancora non si sa se è il massimo valore ammissibile.
Per verificarlo basta incrementare il valore della dimensione del pacchetto, fino a che non si ottiene un output di questo tipo:
<pre>
PING www.google.com (216.58.212.68) 1457(1485) bytes of data.
 
--- www.google.com ping statistics ---
5 packets transmitted, 0 received, 100% packet loss, time 4030ms
</pre>
A questo punto si è certi che l'ultimo valore che non ha prodotto errori e anche il valore massimo ammissibile (nel succitato esempio è 1456, visto che 1457 è il primo valore che produce un errore).
 
Come ultima nota si evidenzia il fatto che l'output del comando ping cambia leggermente tra il caso in cui il modem-router sia in modalità PPPoE o RFC 1483/2684, in particolare cambia quello relativo al caso di insuccesso.
Il comando <code>ping www.google.com -c5 -s1464</code> resituisce nel caso PPPoE:
<pre>
PING www.google.com (149.3.176.53) 1464(1492) bytes of data.
1472 bytes from 149.3.176.53 (149.3.176.53): icmp_seq=1 ttl=57 time=36.8 ms
1472 bytes from 149.3.176.53 (149.3.176.53): icmp_seq=2 ttl=57 time=36.3 ms
1472 bytes from 149.3.176.53 (149.3.176.53): icmp_seq=3 ttl=57 time=35.6 ms
1472 bytes from 149.3.176.53 (149.3.176.53): icmp_seq=4 ttl=57 time=36.2 ms
1472 bytes from 149.3.176.53 (149.3.176.53): icmp_seq=5 ttl=57 time=38.8 ms
 
--- www.google.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4005ms
rtt min/avg/max/mdev = 35.699/36.792/38.893/1.115 ms
</pre>
Cioè successo.
Il comando <code>ping www.google.com -c5 -s1465</code> resituisce invece:
<pre>
PING www.google.com (149.3.176.22) 1465(1493) bytes of data.
From gateway (192.168.1.254) icmp_seq=1 Frag needed and DF set (mtu = 1492)
1473 bytes from 149.3.176.22 (149.3.176.22): icmp_seq=2 ttl=57 time=36.7 ms
1473 bytes from 149.3.176.22 (149.3.176.22): icmp_seq=3 ttl=57 time=39.9 ms
1473 bytes from 149.3.176.22 (149.3.176.22): icmp_seq=4 ttl=57 time=36.2 ms
1473 bytes from 149.3.176.22 (149.3.176.22): icmp_seq=5 ttl=57 time=36.1 ms
 
--- www.google.com ping statistics ---
5 packets transmitted, 4 received, +1 errors, 20% packet loss, time 4003ms
rtt min/avg/max/mdev = 36.189/37.285/39.947/1.569 ms
</pre>
Cioè fallimento.
 
== Approfondimenti ==
 
=== Manpages ===
* <code>man pppoeconf</code>
 
=== Sitografia ===
* [https://help.ubuntu.com/community/ADSLPPPoE ADSLPPPoE] su help.ubuntu.com
* [https://wiki.debian.org/PPPoE PPPoE] su wiki.debian.org
* [http://www.andreabeggi.net/2008/01/16/mtu-discovery-prova-pratica/ MTU discovery] su andreabeggi.net
* [http://pflog.net/dsl_overhead/ ADSL overhead] spiegato.
 
{{Autori
|Autore = [[Utente:Wtf|Wtf]] 22:40, 15 set 2015 (CEST)
}}
 
[[Categoria:Modem]][[Categoria:Configurazione ethernet]]
2 853

contributi

Menu di navigazione