Cómo hacer que mi Ubuntu sea una puerta de enlace de Internet para mi teléfono Android

1

Quiero usar Internet de mi escuela en mi Android, el problema es que tienen un proxy Squid y muchas aplicaciones en mi teléfono no usan el proxy en absoluto.

La solución obvia es instalar un proxy transparente en mi Android para forzar a todas las aplicaciones a conectarse a través de él. El problema es que necesito rootear el teléfono para que funcione, y no quiero hacerlo porque no es realmente mi teléfono y rootear es un poco arriesgado.

Otra solución, que es más segura, es hacer que mi computadora funcione como una puerta de enlace, por lo que puse mi IP de Ubuntu en el parámetro de puerta de enlace del teléfono.

Estoy ejecutando un pequeño proxy en mi ubuntu (cntlm), así que redirijo el tráfico de Android a él. Lo hice con "iptables" de la siguiente manera:

iptables -t nat -A PREROUTING -s 10.0.1.118 -p tcp -j REDIRECT --to-ports 8888
iptables -t nat -A PREROUTING -s 10.0.1.118 -p udp -j REDIRECT --to-ports 8888

10.0.1.118 es la IP del teléfono, 8888 es el puerto de cntlm (proxy en mi PC).

Ahora, en el teléfono: cuando entro www.google.comen el navegador no obtengo nada (sitio web no encontrado, mensaje de error de Firefox).

Pero cuando ingreso http://74.125.143.101(IP de Google) recibo un mensaje de error del proxy de la escuela (por lo que funcionó de alguna manera: mi PC redirigió el tráfico del teléfono al proxy Squid).

El mensaje de error es:

La URL solicitada no se pudo recuperar
al intentar procesar la solicitud
get / http / 1.1
host 74.125.143.101
user-Agent ...
...

Creo que el problema está en el encabezado "GET", debería estarlo GET 74.125.143.101 HTTP/1.1. Pero no entiendo lo que está sucediendo, y soy un CCNA certificado.

yacine
fuente
Si hiciste esto usando NAT, ¿no se enviaría la dirección MAC del teléfono sin modificaciones? Supongo que el proxy se autentica con un dispositivo en particular y, por lo tanto, rechaza los paquetes de su teléfono.
Avance el

Respuestas:

0

puedes usar esto

en el teléfono, configure el mismo puerto proxy que usa en ubuntu y configure la IP proxy como IP del servidor ubuntu.

haz esto en tu ubuntu

iptables -t nat -A POSTROUTING -s 1.1.1.1  -j SNAT --to 1.2.3.4
iptables -t nat -A PREROUTING -s 1.1.1.1 -d  1.2.3.4   -j DNAT --to 5.6.7.8

1.1.1.1 es IP del teléfono

1.2.3.4 es ubuntu IP

5.6.7.8 es IP del servidor proxy

y habilitar el reenvío de IP

echo 1 > /proc/sys/net/ipv4/ip_forward
daya
fuente
No quiero en absoluto ingresar el proxy en el teléfono, porque la mayoría de las aplicaciones no son compatibles con el proxy para skype: incluso si ingreso el proxy de la escuela, no funciona, e ingreso un proxy en mi Windows que desarrollé para depurar la aplicación, veo que Skype no utiliza el proxy en absoluto
yacine
OK ... en ese caso, puede usar la puerta de enlace como está usando ahora y usar esto ... iptables -t nat -A PREROUTING -s 1.1.1.1 -d 1.2.3.4 -p tcp --destination-port 80 -j DNAT - -to 5.6.7.8
daya
Y para Skype, compruebe si está tratando de usar UPnP
daya
El proxy squid requiere una autenticación NTLM, es por eso que estoy usando CNTLM en mi ubuntu. Entonces, ¿cómo debe ser el comando iptables? muchas gracias por sus respuestas
yacine
la solicitud GET se ve bien, excepto. Debe tener el Hostnme y no la IP (seguramente no funcionará con hosts compartidos, es decir, múltiples sitios alojados en una sola IP). cuando no esté configurando el proxy en el teléfono, intentará enviar una solicitud de DNS y esperará una respuesta antes de que pueda iniciar una conexión HTTP.
daya
0

Estás redirigiendo absolutamente todo. Incluyendo el tráfico DNS. Esto no funciona; CNTLM no proxy DNS.

Intente explícitamente permitir el puerto 53 sin molestar:

iptables -t nat -I PREROUTING -s 10.0.1.118 -p tcp --dport 53 -j ACCEPT iptables -t nat -I PREROUTING -s 10.0.1.118 -p udp --dport 53 -j ACCEPT

Matthias Urlichs
fuente
sí es cierto. No obtengo nada cuando ingreso el nombre del sitio web. Agregué un servidor DNS y el comando iptables apropiado. Me sale el mismo error
yacine
0

La solución es el complemento:

1- Un servidor DNS: y redirige el tráfico DNS hacia él y el resto del tráfico udp a CNTLM

Esto no resuelve el problema por completo, obtengo el mismo error si ingreso el nombre del sitio web o es IP (antes de instalar el servidor DNS recibo el error justo cuando ingreso la IP del sitio web, por lo que la resolución DNS funcionó)

2- Después de analizar el tráfico del teléfono en los casos con / sin proxy, obtengo esto:

sin el proxy

obtener / http / 1.1

host 74.125.143.101

agente de usuario ...

..

con el proxy

obtener 74.125.143.101/ http / 1.1

host 74.125.143.101

agente de usuario ...

así que la solución es agregar el nombre de host para obtener el encabezado, escribiré una aplicación que sí

Estoy seguro de que funcionará: D

yacine
fuente