Configurazione Linux ADSL (PPPoE)

Introduzione
ADSL è l'acronimo di Asymmetric Digital Subscriber Line, in pratica è una "linea digitale asimmetrica" che consente la connessione ad Internet attraverso le normali linee telefoniche (il cosiddetto "doppino"). In pratica la normale linea analogica viene trasformata  in linea digitale ad alta velocità, molto più prestante in termini di velocità rispetto allo stessa  linea digitale ISDN.
Viene definita  "asimmetrica" per via del fatto che la velocità non è identica in entrambe le direzioni, ma è molto più elevata in ricezione (dalla Rete verso l'utente) che in trasmissione (dall'utente verso la Rete) e questo  consente  una connessione a Internet molto veloce, con prestazioni particolarmente elevate soprattutto nello scaricamento (download) di informazioni.
I vantaggi del servizio ADSL si possono riassumere così:
- Ottimizzazione della velocità in funzione delle esigenze;
- Connessione sempre attiva;
- Larghezza di Banda massima superiore a quella delle normali linnee PSTN/ISDN

In pratica l'ADSL rende permanente il collegamento a Internet. In questo modo vengono eliminate le operazioni di connessione e disconnessione alla Rete attraverso i normali modem.
La linea non è più di tipo on-demand (PSTN/ISDN) ma una vera e propria linea dedicata a tutti gli effetti.

Linux e ADSL
Usare Linux con linee ADSL non è complesso specie se ci viene fornito un Router ADSL che ci occupa dell’autenticazione, in questo caso è sufficiente utilizzare linux come proxy/firewall  dirottando il traffico sul gateway della nostra rete che sarà il router ADSL e potrà comunicare con la nostra Linux box tramite un normale collegamente di rete ethernet.
Ma se invece disponiamo di un semplice modem ADSL, le cose si complicando perché dovremmo gestire con il sistema operativo la procedura di autenticazione secondo due modalità:
PPPoA: ppp over ATM è il protocollo implementabile per modem ADSL interni o USB. La possibilità di utilizzarlo sotto Linux non mi è nota ed è ovviamente basata sul riconoscimento del modem USB. Per chi fosse interessato conviene fare una bella ricerca su Google.
PPPoE: questo sistema (Point-to-Point Protocol over Ethernet)  che utilizza il ppp su ethernet è perfettamente supportato da Linux, ed di questo metodo largamente diffuso che parleremo.

In questo secondo caso occorre configurare il sistema Linux per gestire l’autenticazione un po’ come si faceva per gli accesso PPP. Il dispositivo nel caso in cui sia un modem esterno può prevedere la connessione via porta USB o via ethernet.
Prenderemo in esame solo il secondo caso per cui occorre avere un server con una scheda di rete da destinare alla connessione con il modem (tipicamente con un cavo cross). Ovviamente se si vuole usare il server linux come router/NAT o firewall occorrerà avere un’altra scheda di rete da dedicare alla connessione sulla LAN interna.

Requirements
E’ basilare prelevare il software rp-ppoe da http://www.roaringpenguin.com/pppoe/ o verificare se è già installato o previsto fra i pacchetti della propria distribuzione. Esistono altri client PPPoE in circolazione e un supporto anche a livello di modulo del kernel, ma rp-pppoe resta la soluzione più diffusa e semplice.
Una volta scompattato occorre eseguire la procedura di compilazione che prosegue con la configurazione dei parametri necessari a stabilire la connessione:
./go
Rispondere alle domande:

>>> Enter your PPPoE user name: pippo
>>>  (default eth1): eth1
>>> Enter the demand value (default yes): no Vogliamo una linea sempre attiva
>>> Enter the DNS information here: dns.libero.it
>>> Enter the secondary DNS server address here: dns2.libero.it
>>> Please enter your PPPoE password:    ***
>>> Please re-enter your PPPoE password: ***
The firewall choices are:
0 - NONE: This script will not set any firewall rules.  You are responsible
          for ensuring the security of your machine.  You are STRONGLY
          recommended to use some kind of firewall rules.
1 - STANDALONE: Appropriate for a basic stand-alone web-surfing workstation
2 - MASQUERADE: Appropriate for a machine acting as an Internet gateway
                for a LAN
>>> Choose a type of firewall (0-2):2

Ethernet Interface: eth1
User name:          pippo
Activate-on-demand: No
Primary DNS:        dns.libero.it
Secondary DNS:      dns2.libero.it
Firewalling:        MASQUERADE

>>> Accept these settings and adjust configuration files (y/n)? y

Type 'adsl-start' to bring up your ADSL link and 'adsl-stop' to bring
it down.  Type 'adsl-status' to see the link status.


Come si può notare i dati richiesti sono semplici:
- user e password di accesso
- dns server
- interfaccia di connessione verso il modem
- impostazione eventuale di un firewall

Prima di attivare la connessione occorre notare come sia necessario attivare il supporto per dhcp, poiché in genere i modem ADSL assegnano un IP via DHCP al sistema a cui sono collegati via ethernet, quindi prima di attivare l'adsl conviene eseguire il dhcp sul sistema (dhcpd) per far si che questo vi assegni un IP per poter dialogare con il modem.
A questo punto con il comando adsl-start il sistema attiva la linea sull’interfaccia ppp0 che sarà quella a cui verrà assegnato l’IP internet statico, mentre assegna un indirizzo IP arbitrario all’eth1 a cui è collegato fisicamente il modem da un normale cavo di rete.

Per gestire l’adsl usare i comandi:
adsl-start: attiva la connessione
adsl-stop: ferma la connessione
adsl-status: verifica lo stato della connessione

Note
E' importante che la scheda di rete connessa al modem non abbia assegnato alcun indirizzo IP per evitare problemi. Quindi se ne ha uno, sarà necessario modificare i file di configurazione del sistema (direttamente o tramite un tool grafico con cui si gestisce il network) ed eliminare l'IP della scheda in questione.
Sarà il modem via dhcp ad assegnarne uno.

- Prerequisiti a livello di kernel
Se non già previsto dalla propria distribuzione come modulo, compilare il supporto per ppp.

- Note per la rete
Si possono incontrare difficoltà relative alla dimensione dei pacchetti e del settaggio dell'MTU. I sintomi più evidenti sono:
- impossibilità di inviare mail con attachment
- difficoltà nel fare l'upload tramite ftp, anche in passive transfer
- mancata risposta da parte di alcuni url

Il problema si risolve settando l'MTU delle schede di rete ad un valore inferiore a quello di default 1500. Nel mio caso un valore di 1472 riesce a risolvere in modo affidabile la situazione, tuttavia il valore ottimale varia da rete a rete quindi sarà necessario fare delle prove (ping del gateway con opzione -f). Per settare l'MTU il comando è:
ifconfig eth0 mtu xxxx
dove xxxx è un valore comunque inferiore a 1500.

Configurazione
Sotto /etc/ppp si trovano i file di configurazione coinvolti, in particolare il file ppoe.conf in cui è possibile andare a modificare manualmente le opzioni inserite all’atto dell’installazione del programma:
# Ethernet card connected to ADSL modem
ETH=eth1

# ADSL user name.  You may have to supply "@provider.com"  Sympatico
# users in Canada do need to include "@sympatico.ca"
# Sympatico uses PAP authentication.  Make sure /etc/ppp/pap-secrets
# contains the right username/password combination.
# For Magma, use xxyyzz@magma.ca
USER=pippo

# Bring link up on demand?  Default is to leave link up all the time.
# If you want the link to come up on demand, set DEMAND to a number indicating
# the idle time after which the link is brought down.
DEMAND=no
#DEMAND=300

# DNS type: SERVER=obtain from server; SPECIFY=use DNS1 and DNS2;
# NOCHANGE=do not adjust.
DNSTYPE=SERVER

# Obtain DNS server addresses from the peer (recent versions of pppd only)
# In old config files, this used to be called USEPEERDNS.  Changed to
# PEERDNS for better Red Hat compatibility
PEERDNS=yes

DNS1=dns1
DNS2=dns2

Nel caso in cui utilizziate un 3Com HomeConnect ADSL Modem DualLink abilitate la stringa seguente al fondo del ppoe.conf:

# Rumour has it that "Citizen's Communications" with a 3Com
# HomeConnect ADSL Modem DualLink requires these extra options:
PPPOE_EXTRA="-f 3c12:3c13 -S ISP"


Hardware utilizzato
Il test è stato effettuato con modem ADSL 3Com Home Connect Dual Link e provider Tiscalinet.