domenica 28 marzo 2010

Ubuntu, Linux, Alice Gate Wifi: come risolvere i problemi di navigazione

Dopo aver installato la vostra copia di Ubuntu o di qualunque altro sistema operativo basato su GNU Linux vi siete resi conto che il pc non naviga e presenta diversi problemi di navigazione. Soprattuto è capace che avete passato pomeriggi interi a cercare di capire cosa non andasse, dove avevate sbagliato, magari avete anche riformattato più volte. Io dopo una settimana di tentativi grazie ad un santo ho risolto il problema. Qualcuno dirà perchè uso ancora il modem di Alice? Purtroppo come molti usufruisco della linea Voip, per cui sono costretto a casusa delle regole anti-concorrenza di Alice che non fanno funzionare il Voip Aladino con altri router.

Veniamo al punto, il modem Alice gate con Ubuntu (ed il mondo Gnu/Linux in genere) funziona correttamente solo come modem, ovvero connettendo manualmente il pc con una connessione 'pppoe' ("Point-to-Point Protocol over Ethernet") usando username e password del vostro abbonamento Alice. In connessione automatica, cioè usando il modem come un normale router, le pagine web non vengono caricate o al massimo vengono caricate in parte, mentre programmi come Skype o Amsn funzionano tranquilamente.

Perchè il pc si comporta così?

Tutto ciò avviene perchè Alice gate non sa gestire l'opzione TCP "window scaling" ("receive window auto-tuning"), usata dal kernel di Linux ed introdotta da Microsoft da Vista in poi.
Il window scaling è un’opzione introdotta nel protocollo TCP che migliora le prestazioni incrementando le dimensioni massime del TCP Recieve windows sopra il minimo valore di 65,535 bytes. Alice gate non porta a termine i trasferimenti dati TCP che usano questa opzione.

Inoltre Alice gate presenta anche altre malfunzionamenti riguardo il TCP_ECN ed il TCP_SYNCOOKIES.
Il TCP_ECN (Explicit Congestion Notification) è un’estensione che permette di gestire in modo intelligente la perdita di un pacchetto dalle code dei router. Attraverso il TCP_ECN il pc non perde il pacchetto ed evita la congestione della rete. Mentre l'opzione TCP_SYNCOOKIES offre protezione da un attacco SYN-flood, il quale può ridurre e congstionare la rete di un sistema Linux.


Come risolvere il problema?

Per prima cosa aprite il terminale e fate il log in come root (amministratore di sistema) digitando il comando su ed inserendo la relativa password di amministratore :

francesco@francesco-laptop:~$ su
Password:
root@francesco-laptop:

Se non vi riconosce nessuna password di amministratore vuol dire che dovete ancora settare la password di root.


Dopo essere loggati come root dovrete eseguire le seguenti stringhe:

echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo 0 > /proc/sys/net/ipv4/tcp_window_scaling
echo 0 > /proc/sys/net/ipv4/tcp_ecn

Questa è una soluzione temporanea, da applicare ogni volta che riavviate il pc. E' utile seguire questo metodo per pc (ad esempio un laptop) che si connettono anche da altri router, in modo da disabilitare permanentemente il window scaling.

Se invece si tratta di un desktop che utilizza sempre il modem Alice Gate potete procedere con una soluzione permanente da ripetere ad ogni avvio:

Sempre dal terminale, dopo esservi loggati come root aprite il file /etc/sysctl.conf con il comando:

gedit /etc/sysctl.conf

inserite nel file se non sono presenti le seguenti stringhe:

net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_window_scaling = 0
net.ipv4.tcp_ecn= 0

se le stringhe sono presenti nel file e sono precedute da un cancelletto (#), basta ch eliminiate questo

Spero sia chiaro. Per eventuali correzioni e suggerimenti mi raccomando commentate!!!