0 votes

"Le Wi-Fi a été désactivé car la connexion Internet n'était pas disponible sur <SSID>".

J'ai un réseau local sans fil à mon domicile qui ne me donne pas accès à l'internet. Si je connecte mon appareil Android (AT&T NEC Terrain fonctionnant sous Ice Cream Sandwhich v4.0.4) à ce réseau WiFi, dès qu'il reçoit une adresse IP, il désactive à nouveau le WiFi et m'affiche le message ci-dessus où <SSID> est le SSID de mon réseau wifi.

Avez-vous une idée de la façon dont je peux désactiver ce comportement ?

J'ai un serveur linux connecté à ce WiFi et j'ai un contrôle total sur son DHCP et son DNS, donc si je peux fournir un faux hôte sur le réseau pour que mon téléphone reste connecté, c'est une solution parfaitement acceptable, aussi.

0voto

Markus A. Points 101

C'était douloureux, mais j'ai trouvé la solution :

Lorsqu'Android se connecte à un nouveau réseau, il essaie de détecter automatiquement s'il peut effectivement atteindre l'internet via ce réseau. Si ce n'est pas le cas, il affiche une fenêtre de navigateur et ouvre une adresse http aléatoire dans l'espoir de faire apparaître le portail captif du réseau (par exemple, la page de connexion wifi de votre hôtel, etc.)

La détection se fait en demandant http://clients3.google.com/generate_204 (ou similaire) et s'attendre à une certaine réponse. (Je n'ai délibérément pas transformé cette adresse en lien, parce que si vous essayez de l'ouvrir, rien ne se passe comme il retourne HTTP Status 204: No Content que la plupart des navigateurs ignorent).

Ma confusion venait du fait que j'avais un serveur HTTP en cours d'exécution pour servir cette réponse et que j'avais un serveur DNS configuré pour diriger la demande vers ce serveur. Mais le serveur ne recevait aucune requête de ce téléphone particulier (les autres téléphones Android fonctionnaient).

Il s'avère que ce téléphone particulier fait deux choses différentes :

  1. Il désactive simplement le WiFi au lieu de faire apparaître la page du portail captif si aucun réseau n'est détecté, ce qui rendait vraiment difficile de comprendre ce qui se passait.
  2. Il n'a pas utilisé de recherche DNS pour clients3.google.com mais il a utilisé une adresse IP codée en dur !

Donc, j'ai finalement pu résoudre le problème en mettant en place un fichier de type iptables -qui transmet simplement toutes les requêtes HTTP à mon serveur HTTP, quelle que soit l'IP à laquelle elles sont destinées. Après cela, le téléphone a obtenu son generate_204 -réponse et tout a fonctionné comme prévu...

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X