2 votes

Impossible de communiquer avec un réseau WiFi local lorsque les données mobiles sont activées

Je développe une application qui doit fonctionner sur un réseau WiFi privé sans accès à Internet. Il s'agit d'un contrôleur pour une sculpture numérique interactive. L'adresse IP du serveur auquel il doit s'adresser sur le réseau privé est câblée dans l'application.

J'ai constaté que l'application n'est pas en mesure de communiquer avec le serveur sur le WiFi tant que les données mobiles sont activées. Dès que je les désactive, tout fonctionne comme prévu. Je suppose que pour une raison ou une autre, l'application essaie toujours de contacter le serveur sur l'interface de données mobiles.

Voici la table de routage IP du noyau lorsque le WiFi et les données mobiles sont connectés et que l'application ne fonctionne pas :

10.229.237.220/30 dev rmnet_data0 proto kernel scope link src 10.229.237.221 
192.168.26.0/24 dev wlan0 proto kernel scope link src 192.168.26.102 

Avec les données mobiles désactivées et l'application fonctionnant correctement :

192.168.26.0/24 dev wlan0 proto kernel scope link src 192.168.26.102 

Tout cela me semble correct.

Y a-t-il des paramètres particuliers (passerelle par défaut, serveur de noms, etc.) que je dois ajouter à la configuration de mon réseau pour que le trafic de l'application soit acheminé vers l'interface WiFi ? Y a-t-il d'autres raisons pour lesquelles l'application ne communique pas avec le serveur ?

1voto

Costin Gușă Points 111

Android dispose d'une option permettant de basculer vers les données cellulaires si la connexion wifi est à faible vitesse/signal. Je soupçonne que le même mécanisme se déclenche lorsque le réseau WiFi n'a pas de passerelle par défaut définie, de sorte que toutes les connexions sortantes choisissent par défaut l'IP source correspondant à l'interface cellulaire.

Pour vous assurer de pouvoir parler à des hôtes WiFi lorsqu'il n'y a pas de connectivité internet, demandez d'abord l'adresse IP WiFi, puis utilisez-la explicitement comme IP source dans l'application.

Si vous laissez ce paramètre par défaut, les connexions sortantes se feront avec l'adresse IP cellulaire, puis avec la passerelle cellulaire.

Alternativement, si vous pouvez Rooter l'appareil, vous pouvez alors copier le binaire tcpdump et capturer le trafic sur l'interface WiFi et cellulaire pour confirmer l'IP source des paquets envoyés par votre application. Les instructions à ce sujet n'entrent pas dans le champ d'application de cette question, mais voici un bon mode d'emploi : https://www.andreafortuna.org/2018/05/28/how-to-install-and-run-tcpdump-on-Android-devices/

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