0 votes

L'appareil Galaxy S5 ne reçoit pas le paquet ip

J'ai la configuration suivante :

Android Galaxy S5 Mini. Version Android 5.1.1.

J'ai 2 interfaces réseau :

  1. Interface1 avec ip : 192.168.5.1
  2. Interface2 avec ip : 192.168.5.10

Je crée un DatagramSocket en utilisant Android SDK et le lie à l'adresse : 192.168.5.10(Interface 2), port 2525. Je mets cette socket en réception et j'attends les paquets. J'utilise un autre appareil pour envoyer les paquets.

Paquets provenant de l'adresse IP : 192.168.5.4 est reçu.

Paquets provenant d'une adresse IP (appareil différent) : 192.168.5.1 (identique à l'ip de l'interface 1 de l'appareil) n'est jamais reçu.

Il semble que la pile réseau rejette les paquets dont l'adresse IP source existe dans l'appareil, quelle que soit l'interface par laquelle ils ont été reçus.

Si je modifie l'adresse IP de l'interface 1 pour qu'elle soit différente de 192.168.5.1, tout fonctionne bien.

Dispositifs sur lesquels il n'a pas se produire :

  1. Samsung tablet T113 Android 4.4.4 (Stock rom)
  2. LG G4 Android 6.0 (Stock rom)
  3. LG Nexus 5X Android 7.1.2 (Stock rom)

Dispositifs sur lesquels il a fait se produire :

  1. Galaxy S5 Mini Android 5.1.1 (Stock rom)
  2. Galaxy Note 3 Android 6.0.1 (CyanogenMod)
  3. One+1 Android 6.0.1 (CyanogenMod)

Quel est le mécanisme qui rejette le paquet avec l'IP source 192.168.5.1 (identique à l'ip de l'interface 1 du périphérique) ?

enter image description here

1voto

evuez Points 163

J'ai trouvé pourquoi cela se produit, mais je ne suis pas sûr de pouvoir y remédier sans Root. Il existe une configuration système par interface réseau appelée accepter_local . Par exemple : net.ipv4.conf.wlan0.accept_local . Lorsqu'il est réglé sur 0 elle ne peut pas recevoir de paquets d'une autre interface locale. Probablement que lorsqu'il fonctionne sur d'autres appareils, cette configuration est réglée sur 1 . Sur le Galaxy Note 3, il était réglé sur 0 . Une fois que j'ai fait cela, tout a commencé à fonctionner, mais Root était nécessaire.

更新情報

J'ai trouvé un site qui liste les valeurs des variables du système : https://census.tsyrklevich.net/

Plus précisément :

  1. https://census.tsyrklevich.net/sysctls/net.ipv4.conf.wlan0.accept_local
  2. https://census.tsyrklevich.net/sysctls/net.ipv4.conf.wlan0.rp_filter

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