Una delle funzionalità più comode ed utili quando si possiede più di un dispositivo è sicuramente la possibilità di poter condividere la connessione ad Internet dal proprio smartphone. È possibile fare questo sia tramite la funzione tethering (via Bluetooth o via USB) sia tramite la funzione hotspot. Nel primo caso abbiamo una condivisione con un singolo dispositivo tramite Bluetooth o USB; nel secondo caso il telefono si trasforma in un hotspot (o punto di accesso) che può far connettere fino a 5 terminali tramite WiFi. Ma come funzionano su Android tethering e hotspot?
In buona sostanza, il dispositivo Android si trasforma in un router NAT che raccoglie le richieste dei client e le inoltra ai vari server utilizzando il proprio indirizzo IP. In questo senso, dunque, il servizio è opaco per l’operatore telefonico perché non ci sono i mezzi tecnici per capire se ad usufruire della connessione sia direttamente lo smartphone (o il tablet) oppure se sia un dispositivo connesso in tethering o con hotspot. Fino ad Android 4.1 il sistema non comunicava alcunché all’operatore ed era possibile utilizzare il tethering sempre e comunque, anche quando il contratto non prevedeva esplicitamente questa possibilità.
A partire da Android 4.1.2, invece, il sistema utilizza un meccanismo che permette all’operatore di sapere che avete attivato l’opzione hotspot/tethering e che, quindi, state usufruendo della connessione anche su altri dispositivi. La maggior parte degli operatori non prevede malus per questo (esempi: TIM, H3G/Tre, Wind), ma alcuni fanno invece pagare per usufruire dell’opzione (Vodafone). Andiamo a vedere come si comporta quindi il dispositivo per informare l’operatore dell’utilizzo della condivisione della connessione.
Come ben spiegato da Daniel Pocock, Android ha due dispositivi di rete, rmnet_usb0 e rmnet_usb1:
shell@android:/ # ip route 0.0.0.0/1 dev tun0 scope link default via 100.66.150.89 dev rmnet_usb0 83.224.66.138 via 100.87.31.214 dev rmnet_usb1 83.224.70.94 via 100.87.31.214 dev rmnet_usb1 100.66.150.88/30 dev rmnet_usb0 proto kernel scope link src 100.66.150.90 100.66.150.89 dev rmnet_usb0 scope link 100.87.31.212/30 dev rmnet_usb1 proto kernel scope link src 100.87.31.213 100.87.31.214 dev rmnet_usb1 scope link 128.0.0.0/1 dev tun0 scope link 192.168.42.0/24 dev rndis0 proto kernel scope link src 192.168.42.129
Controllando la tabella degli indirizzi del telefono, si scopre che esiste una tabella apposita per il tehering:
shell@android:/ # ip rule show 0: from all lookup local 32765: from 192.168.42.0/24 lookup 60 32766: from all lookup main 32767: from all lookup default
Guardando questa tabella, ci si accorge che tutto il traffico di tethering e hotspot viene reindirizzato verso il dispositivo di rete rmnet_usb1.
shell@android:/ # ip route show table 60 default via 100.87.51.57 dev rmnet_usb1 100.87.51.57 dev rmnet_usb1 192.168.42.0/24 dev rndis0 scope link
È proprio questo l’inghippo che permette agli operatori di sapere che sì, state condividendo la connessione con altri dispositivi.
Per Google questa è una funzionalità, perché rende Android più controllabile dagli operatori e meno indigesto. Di fatto, per gli utenti è un bug. Il vecchio adagio it’s not a bug, it’s a feature ben si applica a questo caso.
Essendo, però, una funzionalità che non tutti vogliono sul proprio smartphone, qualcuno ha trovato il modo per disattivarla.
Disclaimer: i contenuti qui esposti sono a solo scopo informativo e divulgativo. TuttoAndroid declina ogni e qualunque responsabilità per un eventuale utilizzo da parte dell’utenza di questo materiale per aggirare clausole del proprio contratto telefonico che impediscono la condivisione della connessione dal proprio terminale mobile.
Oltre a vari metodi che richiedono l’accesso con root, esiste un modo piuttosto pratico e veloce per modificare il comportamento di Android con il tethering. Richiede che abbiate abilitato il debug USB, configurato ADB sul vostro computer e un cavo USB. Trovate tutte le informazioni sul metodo seguendo il link qui sotto.