Su pregunta está relacionada con la comprensión de Modelo OSI . Los proxies utilizan http
/ https
o socks
protocolo, supongo que se refiere a http
que es un protocolo de la capa de aplicación (L7) en el modelo OSI. Cuando una aplicación genera http
mensaje, se entrega a la capa inferior. En caso de https
El mensaje es encriptado por SSL/TLS que son protocolos L6. En L4 el mensaje recibe una cabecera TCP y luego en L3 se convierte en un paquete IP. Este paquete pasa a través de NAT y del filtrado de los cortafuegos en L3, y finalmente a través de RRM/PDCP/RLC (si se utilizan datos móviles), MAC y enrutamiento del núcleo en L2. En L1 se transmite por Wi-Fi como 802.11
tramas o señales CDMA/TDMA/FDMA sobre datos móviles.
Por otro lado, Hotspot se basa principalmente en dos herramientas del espacio del usuario; hostapd
- que crea el punto de acceso Wi-Fi en OSI L2 - y dnsmasq
(hasta Android 9) - que funciona como servidor DHCP/DNS en OSI L7. Si el host conectado está usando el teléfono como servidor DNS (según lo configurado por DHCP), el teléfono recibe las consultas DNS y las reenvía recursivamente como paquetes UDP/IP al servidor DNS ascendente en Internet (cualquiera que sea dnsmasq
está configurado para usar). El resto del tráfico proveniente de la red del hotspot es NATed y enrutado en L3/L2.
Así que usted ve que ninguno de los (paquetes IP) el tráfico procedente de los hosts conectados va a través de http
en el teléfono Android, por lo que no se reenvía al servidor proxy. Es la responsabilidad de aplicaciones como los navegadores web para hacer http(s)
conexiones al servidor proxy, no directamente al host remoto como el servidor web. No es posible crear un hotspot que pueda ser configurado para usar http
proxy en OSI L7. Las configuraciones de proxy (host/puerto) que establecemos para Wi-Fi o APN o globalmente sólo se reenvían a las aplicaciones, cada aplicación tiene que crear una conexión proxy por sí misma, o simplemente ignorar la información del proxy. Tienes que proporcionar estos detalles de proxy a las aplicaciones en cada host conectado a través de hotspot. Vea la pregunta enlazada abajo para más detalles.
Sin embargo, es posible redirigir a la fuerza todo el tráfico hacia un servidor proxy utilizando el NAT/REDIRECT/TPROXY del kernel de Linux/Android (en L3) y la tabla de enrutamiento (en L2). Así es como funcionan los proxys, pero hay limitaciones . Los clientes de correo electrónico utilizan protocolos IMAP/POP3/SMTP (L6/7) que no funcionan con http GET
en lugar de requerir http CONNECT
apoderados. Estos últimos sólo pueden reenviar el tráfico TCP, para el UDP se necesita al menos un proxy SOCKS5 que funciona a L5. Los DNS y la mayoría de los juegos y aplicaciones de llamadas de voz generan tráfico UDP, por lo que no funcionarán con http
de los proxies en absoluto. ping
por ejemplo, utiliza ICMP (en L3) que no puede encapsularse en TCP o UDP, por lo que tampoco funcionará con SOCKS5.
Así que no es posible en verdadero sentido redirigir todo el tráfico hacia un servidor remoto (proxy) sin utilizar una solución L2/3 como la VPN. Para más detalles, consulte ¿Cómo configurar el proxy HTTPS de Wi-Fi, no HTTP, a través de adb shell?
¿Por qué este comportamiento si el hotspot se supone que utiliza la red móvil y el proxy se establece en APN para ello?
Se supone que el Hotspot utiliza la red móvil, las aplicaciones se supone que utilizan el proxy. El proxy que has configurado en APN no se aplica en todo el sistema.
No quiero establecer el proxy en la configuración avanzada de la opción WiFi de otro dispositivo al elegir este punto de acceso.
Desgraciadamente esta es la forma más sencilla, otros métodos requieren o bien rootear y/o utilizar aplicaciones de terceros (para crear VPN). Vea la pregunta enlazada arriba sobre cómo aplicar el proxy de forma transparente.