0 votos

¿Por qué mi Galaxy S8 no aparece en la página de acceso de mi Portal Cautivo?

Estoy tratando con un Pi 3 de Frambuesa que está usando hostapd para crear su propia red inalámbrica.

Cuando un cliente Android se conecta por primera vez a la red, trata de agarrar la página http://connectivitycheck.gstatic.com/generate_204 para ver si está detrás de un portal de clientes. Mi Pi de Frambuesa redirige esta petición a una instancia de nginx que está ejecutando, y devuelve una redirección 302 a mi página de acceso.

Como Android no obtuvo la respuesta que buscaba (un HTTP 204), sino que obtuvo un 302, por lo que entiendo, se supone que aparecerá mi página de inicio de sesión. He visto esto en acción usando otro hardware de portal cautivo.

En mi caso, sin embargo, Android sólo muestra un popup que dice "Internet puede no estar disponible": Conéctese a otra red o encienda el interruptor de datos del móvil".

¿Estoy haciendo algo malo? ¿Hay algo específico que Android esté buscando en la página de acceso antes de que aparezca?

La mayoría de mis pruebas son en mi Galaxy S8. Lo probé en el S9 de un amigo, y eso tampoco funciona. Sin embargo, al usar un portátil con Windows 10, la página de inicio de sesión aparece.

0voto

Tal Puntos 51

Después de algunas excavaciones, parece que está funcionando ahora.

Cuando un cliente intenta acceder http://connectivitycheck.gstatic.com/generate_204 necesita usar el DNS para resolver primero connectivitycheck.gstatic.com. Tenía mi configuración de dnsmasq para que se viera así:

interface=wlan0
dhcp-range=192.168.30.20,192.168.30.60,255.255.255.0,24h
address=/#/10.45.12.1

Donde 10.45.12.1 es sólo una IP aleatoria que elegí. Realmente no importaba cual era esa IP, porque tan pronto como el cliente la resolviera en esa IP, e intentara obtener /generar_204 de ella, las reglas de mi firewall iptables redirigirían todas las peticiones a nginx ejecutándose en el Pi.

La única limitación que conocía era que la IP no podía estar en la misma LAN (192.168.30.0/24), o que los Pi intentarían usar ARP para averiguar su dirección MAC, y fallarían, sin hacer la solicitud HTTP real.

Resultó que si la IP a la que estás resolviendo todo (en mi caso 10.45.12.1) es una IP de LAN, Android no aparecerá en la página de inicio de sesión. Ni idea de por qué.

El arreglo era cambiar de:

address=/#/10.45.12.1

a

address=/#/1.2.3.4

donde 1.2.3.4 es cualquier IP de LAN PÚBLICA (una IP fuera del rango '10.0.0.0/8, 172.16.0.0/12, o 192.168.0.0/16'). Esto solucionó mi problema. Esperemos que también arregle el de alguien más.

NOTA: Mi configuración NO requiere que el cliente tenga internet. Se conectan a los Pi, y obtienen una página emergente para la configuración. Si necesitas que el dispositivo tenga internet, lo cual sería un caso de uso más común, probablemente no puedes resolver TODO a 1.2.3.4 como lo hago yo.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X