Pppoeconf

Debian-swirl.png Versioni Compatibili

Debian 7 "wheezy"
Debian 8 "jessie"
Debian 9 "stretch"
Gateway-Router

Sommario


Introduzione

Questo strumento permette di configurare facilmente ed in maniera guidata pppd al fine di creare una connessione ADSL direttamente gestita dalla macchina debian su cui è installato pppoeconf. Questa possibilità risulta utile in due scenari:

  • si ha a disposizione un modem ADSL ethernet puro, ovvero che non offra anche funzionalità di router/gateway;
  • 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.

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

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.

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). 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 pppoe e pppoa. 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".

  ATTENZIONE
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


Installazione e configurazione del software

Contrariamente al solito si descriverà prima la procedura di configurazione invece che presentare subito il comando di installazione, poichè al termine della procedura d'installazione viene immediatamente avviata la procedura di configurazione guidata e quindi è utile prepararsi in anticipo alcuni dati che saranno richiesti. Tale procedura in primis esamina tutte le interfacce di rete presenti per rilevare tutti i concentratori d'accesso presenti (cioè i modem, che in un ambito soho sarà ragionevolmente solo uno), dopo di che pone le seguenti domande all'utente:

  • confermare l'interfaccia di rete usata per il collegamento col modem;
  • indicare il nome utente da usare per la procedura di autenticazione col proprio ISP;
  • indicare la password da usare per la procedura di autenticazione col proprio ISP;
  • indicare una serie di parametri di cui si può in genere accettare il valore predefinito. Si richiama l'attenzione solo sulla richiesta dell'uso dei peer DNS: se l'utente ha già un suo server dns nella LAN ragionevolmente risponderà no a tale domanda, viceversa sì.

Si noti che verranno apportate modifiche al file /etc/network/interfaces, quindi l'utente è invitato a farsi una copia di tale file prima dell'installazione.

  ATTENZIONE
pppoeconf non configura nessun tipo di firewall! L'utente è quindi invitato a navigare il minimo indispensabile al fine di testare la propria connessione ADSL.


Premesso quanto sopra si proceda all'installazione di pppoeconf digitando:

# aptitude install pppoeconf

Tutte le informazioni fornite sono state salvate nei seguenti due file:

  • credenziali di accesso del proprio ISP in /etc/ppp/chap-secrets.
  • parametri di configurazione della linea adsl in /etc/ppp/peers/dsl-provider, posto naturalmente di aver accettato il nome suggerito da pppoeconf.
  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:

# 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

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

auto dsl-provider
iface dsl-provider inet ppp
        pre-up /bin/ip link set eth1 up # line maintained by pppoeconf
        provider dsl-provider

auto eth1
iface eth1 inet manual

Dovrebbe essere inoltre già possibile navigare in internet, in caso contrario si veda la prossima sezione per i comandi manuali da usare per avviare e fermare la connessione ADSL.

Comandi manuali

È sempre possibile avviare manualmente la propria connessione col comando:

$ pon dsl-provider

mentre per terminarla:

$ poff dsl-provider

Chiaramente il lettore dovrà sostituire dsl-provider col nome della propria connessione se ne è stato indicato uno differente in fase di installazione.

Impostazioni aggiuntive

Al termine della procedura qui descritta la connessione sarà utilizzabile solo dalla macchina su cui è stato installato pppoeconf. Per permettere anche agli altri dispositivi della LAN di accedere a internet ci sono quattro condizioni da soddisfare:

  1. attivare l'ip forwarding a livello kernel;
  2. avere una seconda interfaccia di rete per il collegamento della macchina al resto della LAN;
  3. attivare il masquerading per le connessioni in uscita;
  4. 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 pppoeconf.

IP forwarding

Digitare:

# echo 1 > /proc/sys/net/ipv4/ip_forward

che equivale ad editare il file /etc/sysctl.conf e impostare a 1 la seguente variabile:

net.ipv4.ip_forward = 1

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) personalizzato.
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 iptables (si tratta comunque di un singolo comando).

  ATTENZIONE
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:

# iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

SNAT

Si usa quando il proprio ISP mette a disposizione un indirizzo pubblico statico:

# iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source IP_PUBBLICO

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:

ping www.google.com -c5 -s1456
  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:

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

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:

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

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 ping www.google.com -c5 -s1464 resituisce nel caso PPPoE:

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

Cioè successo. Il comando ping www.google.com -c5 -s1465 resituisce invece:

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

Cioè fallimento.

Approfondimenti

Manpages

  • man pppoeconf

Sitografia




Guida scritta da: Wtf 22:40, 15 set 2015 (CEST)   Debianized 20%
Estesa da:
Verificata da:

Verificare ed estendere la guida | Cos'è una guida Debianized