0 votos

"El Wi-Fi se desactivó ya que la conexión a Internet no estaba disponible en <SSID>"

Tengo una red inalámbrica local en mi casa que no me proporciona acceso a Internet. Si conecto mi dispositivo Android (AT&T NEC Terrain con Ice Cream Sandwhich v4.0.4) a esa red WiFi, en cuanto recibe una dirección IP, vuelve a desactivar el WiFi y me indica el mensaje anterior donde <SSID> es el SSID de mi red wifi.

¿Alguna idea de cómo puedo desactivar este comportamiento?

Tengo un servidor linux conectado a ese WiFi y tengo control total sobre su DHCP y DNS, así que si puedo proporcionar algún host falso en la red para que mi teléfono se mantenga conectado, también es una solución perfectamente válida.

0voto

Markus A. Puntos 101

Esto fue doloroso, pero lo resolví:

Cuando Android se conecta a una nueva red, intenta autodetectar si realmente puede llegar a Internet a través de esta red. Si no es así, mostrará una ventana del navegador y abrirá una dirección http aleatoria con la esperanza de que aparezca el portal cautivo de la red (es decir, la página de acceso al wifi de su hotel, etc.).

La detección se realiza solicitando http://clients3.google.com/generate_204 (o similar) y esperando una respuesta determinada. (Deliberadamente no he convertido esta dirección en un enlace, porque si intentas abrirlo, no pasa nada ya que devuelve HTTP Status 204: No Content que la mayoría de los navegadores ignoran).

Ahora, mi confusión vino del hecho de que tenía un servidor HTTP funcionando para servir esta respuesta y tenía un servidor DNS configurado para dirigir la petición a ese servidor. Pero el servidor no estaba recibiendo ninguna solicitud de este teléfono en particular (otros teléfonos Android funcionaban).

Resulta que este teléfono en particular hace dos cosas diferentes:

  1. Simplemente desactiva el WiFi en lugar de abrir la página del portal cautivo si no se detecta ninguna red, lo que hace que sea realmente difícil incluso entender lo que está pasando.
  2. No utilizó una búsqueda de DNS para clients3.google.com pero, en cambio, utilizó una IP codificada para ello.

Así que, finalmente, pude resolver el problema estableciendo un iptables -regla que simplemente reenvía todas las peticiones HTTP a mi servidor HTTP, independientemente de la IP a la que vayan dirigidas. Después de eso, el teléfono obtuvo su generate_204 -respondió y todo funcionó como estaba previsto...

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