5 votes

Détection du portail captif provoquant des déconnexions des téléphones du Wi-Fi dans un environnement intranet

Bonjour aux passionnés d'Android!

Je suis le responsable d'un cybercafé sur un navire de croisière, et nous sommes confrontés à un problème persistant que je n'arrive pas à résoudre.

Nous disposons d'un réseau sans fil dans tout le navire qui peut être utilisé pour accéder à Internet, mais qui inclut également un intranet local permettant aux clients de consulter le programme quotidien des événements, de vérifier leur compte et d'utiliser un service de messagerie interne gratuit.

Le problème auquel nous sommes confrontés semble être lié à la détection du portail captif, et d'après mes observations, il semble affecter uniquement les téléphones Samsung (peut-être à partir du S4), et a été observé sur tous les systèmes d'exploitation à partir de la version 4.2.2. Ce qui se passe, c'est qu'ils se connectent au réseau sans fil, puis on leur indique que la connexion est requise. Une fenêtre de portail captif s'ouvre, qui affiche notre page d'accueil. S'ils se connectent ensuite à Internet, aucun problème. Mais s'ils veulent simplement utiliser l'intranet, ou si cela leur prend trop de temps pour remplir le formulaire d'inscription, ils reçoivent un message disant que la connexion au réseau a été interrompue et nous devons recommencer à partir de "connexion requise".

J'ai fait beaucoup de recherches en ligne pour trouver des réponses, et l'une d'entre elles est que l'utilisateur doit sélectionner "utiliser le réseau tel quel" parmi les options du portail captif, mais je vois cette option sur très peu d'appareils. D'autres options ont nécessité de rooter le téléphone et d'exécuter certaines commandes en mode terminal, ce que je ne peux évidemment pas demander aux clients de faire.

Nous avons posé le problème à notre équipe de réseau à terre, et ils sont revenus en disant qu'ils avaient ajouté les URL suivantes à la liste blanche et que cela devrait résoudre le problème:

clients3.google.com/

apple.com/library/test/

captive.apple.com

connectivitycheck.android.com

connectivitycheck.gstatic.com

connectivitycheck.android.com/generate_204

clients3.google.com/generate_204

android.clients.google.com

Cela n'a pas fonctionné, les téléphones sont toujours déconnectés après environ une minute si aucune connexion Internet n'est établie.

Y a-t-il autre chose que nous pouvons essayer? Nous cherchons finalement une solution qui ne nécessitera pas que nos utilisateurs fassent quelque chose de spécial.

0 votes

Il semble que vous devrez supprimer le portail captif et les laisser se connecter librement si vous ne voulez pas qu'ils aient à faire quoi que ce soit. Sinon, les solutions ici pourraient être pertinentes: android.stackexchange.com/a/100659/1465

0 votes

Salut Matthew, merci pour la réponse. Je ne pense pas que nous ayons réellement un portail captif. Ou du moins, aucune fenêtre de portail captif ne s'ouvre sur tout autre appareil Android non-Samsung ou Apple. Peut-être ai-je mal utilisé le terme, mais je ne pense pas que nous ayons consciemment activé quelque chose pour provoquer ce comportement.

0 votes

C'est encore un problème en 2020... Je viens d'acheter un drone et mon téléphone (Samsung s8) ne reste pas connecté car le réseau du drone ne fournit pas internet ou les requêtes DNS le téléphone considère le Wi-Fi comme une connexion non internet et après environ une minute ou deux le Wi-Fi se déconnecte. J'ai essayé toutes les autres solutions sauf rooter mon téléphone ce qui semble nécessaire pour désactiver la détection du portail captif intégré à Samsung........ android.stackexchange.com/questions/130265/…

1voto

Martin Points 111

Nous avons eu un problème similaire mais je pense que ce n'est pas exactement le même problème.

Nous avions un Galaxy S5 mini avec Android 5.5.1 installé. Nous avons également un "filtre pour les sites web" pour refuser l'accès à certains sites web. Le problème ici était qu'après le démarrage du téléphone, il se connectait puis se déconnectait immédiatement du réseau. Nous avons découvert que le problème était lié à la vérification de la connectivité du réseau. Les premiers tests montrent:

  • Lorsqu'il y a un accès Internet illimité, cela fonctionne.
  • Lorsqu'il n'y a pas d'accès Internet, la connexion au réseau reste active. "Pas de connexion Internet" signifie que nous avons bloqué tout le trafic sur le pare-feu et que toutes les demandes aboutissent à une erreur de temps écoulé.

En analysant plus profondément et en examinant le code source d'Android, nous avons pu identifier le code de retour HTTP comme étant le problème. L'appareil lance une requête HTTP vers connectivitycheck.android.com. Cela a donné un code 302 HTTP (redirection temporaire) de notre filtre web. Ayant découvert cela, nous avons effectué d'autres tests:

  • le filtre web redirige l'accès à connectivitycheck.android.com via HTTP/302 et tous les autres sites Internet sont directement autorisés : ici la connexion réseau a été coupée à nouveau.
  • refuser l'accès à connectivitycheck.android.com via le pare-feu (donc un temps écoulé pour la vérification de la connectivité) et tous les autres sites Internet sont directement autorisés : ici la connexion réseau reste active.

Par conséquent, à la fin, nous avions deux façons de résoudre la situation:

  • autoriser l'accès à connectivitycheck.android.com sans filtre web (donc pas de HTTP 302)
  • refuser l'accès à connectivitycheck.android.com sur le pare-feu

Mais qu'en est-il des autres versions d'Android? J'ai effectué les mêmes tests avec un Galaxy S7 sous Android 6.0.1. Ici, nous n'avons jamais rencontré de problème. Dans Android 6, la vérification de la connectivité a légèrement changé et ne souffre pas du problème mentionné ci-dessus.

0voto

sMyles Points 101

J'ai également été confronté à ce problème sur l'une de mes bibliothèques de portail captif open source.

Il semble que cela soit dû au fait que Samsung a décidé de mettre en œuvre son propre code qui ne déclenchera pas la connexion au portail captif comme il se doit lorsqu'une redirection 302 est envoyée (et que le wifi n'a pas internet).

Il semble que vous devez fournir le fichier du portail captif avec un code 200 lorsqu'ils essaient d'accéder au point de terminaison generate_204, au lieu de simplement envoyer une redirection 302 - ce qui fonctionne sur tous les autres appareils - sauf Samsung.

Détection de portail captif Samsung

Merci Samsung - pourquoi ne pouvez-vous pas simplement suivre les normes normales des portails captifs !?

Cela dit, j'ai obtenu des résultats mitigés sur différents appareils Samsung Sx ... certains ne semblent même pas interroger le /generate_204 lors de la connexion au wifi

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