Goedkoper internet in het buitenland: Omzeil tetheringblokkade

Door RadioAir op zondag 17 mei 2015 12:54 - Reacties (16)
Categorie: -, Views: 5.781

Internet in het buitenland wordt, zeker door Tweakers, steeds vaker gedaan met behulp van een prepaid simkaartje met een hoop tegoed. We hebben daar inmiddels een prachtig topic voor in het subforum Telecomproviders waarin we zoveel mogelijk goedkope dataplannen met elkaar delen, sommige zelfs pan-Europees. Er zijn zelfs providers die je voor een euro of dertig gewoon 25GB geven in een land. Prima, maar steeds vaker heb je te maken met een blokkade van tethering, waardoor je maar van één device gebruik kan maken. Ik ben hier eens ingedoken en kwam tot de conclusie dat zowel Android telefoons als iPhones een aparte DUN verbinding opzetten naar de carrier toe, en dat onder andere hiermee gezien wordt dat er tethering wordt toegepast.

Tethering kan op een aantal manieren worden gedetecteerd:

1. Extra DUN verbinding richting de carrier
2. Deep Packet Inspection met URL fingerprinting (ze zien dat je bijvoorbeeld naar Windowsupdate.microsoft.com surft en dat zal een telefoon, ook een Windows Phone, nooit doen).
3. Ze kijken naar de TTL van de pakketjes die je verstuurt (normaal is dit bijvoorbeeld 128 en bij elke hop wordt dit minder, je kan dus zo zien dat er meerdere devices van één lijn gebruik maken).
4. IMEI/MAC inspection: Ze zien hieraan dat je een MiFi gebruikt
5. User Agent: Ze zien dat je een non-mobile browser gebruikt om te tetheren

Puntje 1 kan je Mifi omzeilen, want er is maar één DUN verbinding. Bij puntje 2, 3 en 4 valt je Mifi door de mand. Puntje 5 kan je omzeilen door op je laptop een andere User Agent in te stellen.

Het is dus de vraag waarmee tethering geblokkeerd wordt. Meestal is dit punt 2 en punt 3. Punt 2 is eigenlijk dé methode, omdat dit het enige is wat grootschalig opgepikt kan worden.

Met een Mifi en een VPN op al je aangesloten devices val je alsnog door de mand op punt 4. DPI en SPI zijn de meest bekende methoden, aangevuld met punt 4.

Nu is het zo dat je dit op een Android device ongedaan kan maken. Benodigdheden: Een Android toestel met root capabilities én daarnaast een VPN server thuis. (Fritzbox/Raspberry Pi will do)

Je moet hiervoor het volgende doen:
-Installeer SQLite Debugger
-Navigeer naar het volgende bestand in SQLite: /data/data/com.android.providers.settings/databases/settings.db
-Open de database global
-Verander de waarde bij tether_dun_required naar 0.

Dan ben je er echter nog niet, want je moet nog een VPN instellen. Mijn voorkeur gaat uit naar een UDP OpenVPN verbinding, omdat er in UDP pakketjes minder data zit waaruit af te leiden is wat voor verkeer het eigenlijk is zodat de provider niet ziet dat je ze aan het foppen bent. Bouw middels OpenVPN Connect of de ingebouwde VPN Client je VPN-verbinding op en start daarna de Personal Hotspot functionaliteit. Doe hierna het volgende:

Download en installeer de Android Terminal Emulator. Typ su in en accepteer het feit dat je root wordt.

Geef vervolgens het commando netcfg. Met dit commando worden alle actieve netwerk interfaces getoond. Je hebt er drie nodig:

rmnet0 of iets wat er op lijkt: Dit is de data verbinding van de telefoon
wlan0,ath0/ath1 of eth0/eth1: Dit is de WLAN verbinding waarover je al het internetverkeer wilt laten lopen
tun0/ppp0: Afhankelijk van het soort VPN wat je gebruikt (tun0 is OpenVPN, ppp0 is de ingebouwde VPN Client van Android) is dit de tunnel die je feitelijk gezien wilt bridgen met je WLAN verbinding

Kopieer en plak vervolgens de volgende gegevens (en verander de interfacenamen waar nodig):

iptables -t filter -F FORWARD
iptables -t nat -F POSTROUTING
iptables -t filter -I FORWARD -j ACCEPT
iptables -t nat -I POSTROUTING -j MASQUERADE
ip rule add from 192.168.43.0/24 lookup 61
ip route add default dev tun0 scope link table 61
ip route add 192.168.43.0/24 dev wlan0 scope link table 61
ip route add broadcast 255.255.255.255 dev wlan0 scope link table 61

That's it! Als je wilt dat deze instelling bij elke telefoon reset wordt herhaald kan je in /data/local een bestand aanmaken met de naam userinit.sh en de bovenstaande commando's hierin copy/pasten.

Op je Clients wil DHCP niet altijd goed werken. Het kan zijn dat je even manueel een lokaal adres (dus dat in je VPN) moet instellen op je clients, voornamelijk voor de DNS server.

Hiermee kan je zonder grote investeringen toch gebruik maken van de goedkopere en grotere databundels, zonder dat je tethering gedetecteerd kan worden. Bijkomend voordeel: Je hebt een lokaal IP-adres van je eigen netwerk dus je kan bij je eigen shares én kan bij alle zaken (zoals de NPO streams) die normaal gesloten zijn voor het buitenland!