PDA

View Full Version : [Linux][TCP/IP] Usare macchina linux per fare un "proxy trasparente" per Android


zulutown
27-11-2012, 10:03
Ciao a tutti.
Android purtroppo non supporta in modo decente il proxy ma vorrei sfruttare la rete su cui mi collego con il mio portatile anche per Android (il mio tablet).

In pratica...

Ho il portatile (ubuntu 12.04) collegato alla rete ipotizziamo con IP=10.1.2.3
Ho il tablet (android 4.2) collegato alla rete

Da questa rete su internet ci si arriva solo via PROXY (e ovviamente il mio portatile riesce ad andarci)

Android per la maggior parte delle sue APP non supporta il proxy.

Quello che vorrei fare è configurare sul mio tablet la rete dicendo che IP=10.1.2.3 è sia gateway che DNS.

Cioè se il tablet volesse andare su "play.google.com" immagino che serva che il DNS (che dovrebbe gestire il mio pc) non fornisca il vero IP di "play.google.com" ma dovrebbe dare come IP lo stesso 10.1.2.3 in modo tale che poi sia il mio pc a fingere di essere "play.google.com" e far tutte le operazioni del caso per far uscire android dal proxy... senza che Android sappia dell'esistenza del proxy.


PS: conosco CNTLM che però in questo caso credo non serve a nulla, con CNTLM si riesce a trasformare un proxy MIcrosoft in un proxy non autenticato, il problema è che molte App di android non prevedono per nulla l'uso di proxy.

Idee?

_DavideDG_
23-12-2012, 18:26
Ciao, transparent proxy interception?

dnsmasq per risolvere i nomi per l'android (bind è eccessivo...)

poi abilita ip forwarding per funzionare da gateway

installi un proxy (squid3) e gli imposti come cache_peer il Proxy attraverso il quale hai l'accesso ad Internet.

sull'android, imposti come dns e gateway l'IP del tuo laptop.

e poi con iptables intercetti le chiamate verso l'esterno e le redirigi verso lo squid installato in locale sul laptop.

in questo modo puoi utilizzare anche proxy autenticati in maniera trasparente (perchè l'autenticazione la fa squid, con parametro LOGIN=... in cache_peer).

Non ho provato, ma concettualmente dovrebbe funzionare.

Fammi sapere!
Ciao.

eaman
23-12-2012, 20:37
Basta che il portatile faccia IP masquerading (NAT) per far navigare il droide, non c'e' bisogno di proxy e dhcp.

_DavideDG_
23-12-2012, 20:51
Boh non mi convince molto...
Se il laptop avesse connessione Internet diretta (e probabilmente ce l'avrebbe anche android), posso capire.
Ma ha detto che deve passare il proxy (che non specifica se è autenticato o meno) per uscire su Internet.
Se facesse solo source-nat, i pacchetti proverebbero ad uscire come se non avesse configurato il proxy sul laptop, ovvero cercando di sfruttare le rotte IP impostate (la default 0/0 per Internet, ammesso che ci sia, visto che usano proxy).
Cmq se risponde zulutown vediamo di capire cosa gli serve :D

Ciao!

eaman
23-12-2012, 21:56
Chissa' se il parent e' ancora ineteressato...

Comunque come giustamente fatto notare lo sNAT andreabbe bene solo per condividere la connessione ad internet di un portatile.

Invece il parent non ha un accesso a internet completo, ma suppongo solo una condivione web http/https (chissa' cos'altro) via proxy. E lamenta che android / app non siano fluenti a trattare con un proxy.

Fin tanto che le sue app vogliano tirare su delle porte 80 / 443 potrebbe provare a tirare su un server proxy trasparente sul portatile e far uare quello come gateway:

iptables per porta 80:
iptables -t nat -A PREROUTING -i lan -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128

se il proxy e' uno squid 3 dovrebbe avere una direttiva tipo:
http_port 192.168.0.254:3128 transparent

...poi se necessarie le bazze varie per l'autenticazione e cache dns.

Magari se gfli serve qualcosa piu' competo potrebbe provare con una VPN:
- http://openvpn.net/index.php/open-source/documentation/howto.html#http