1 votes

Android ne peut pas transmettre les paquets

Cible :

Effectuer le transfert d'IP pour les appareils du même réseau local. (La cible réelle est le proxy transparent mais le transfert d'IP est une condition préalable).

Configuration du réseau :

Tous les appareils sont dans le même réseau local 192.168.0.0/16 .

  • routeur principal 192.168.1.1
  • Téléphone Android 192.168.2.1 (interface de réseau wlan0 )
  • ordinateur 192.168.2.10 passerelle définie comme 192.168.2.1
  • d'autres comme Raspberry Pi à 192.168.1.11

Configuration Android :

  • Données désactivées, seul le WiFi se connecte.
  • Android 10 enraciné (Pixel 2 XL)
  • pour activer le transfert d'ip par sysctl -w net.ipv4.ip_forward=1
  • netfilter : sur toutes les tables de nat, mangle, filter et raw, exécutez iptables -F -t <table_name> y iptables -X -t <table_name>
  • rp_filter : Désactiver par sysctl -w net.ipv4.conf.all.rp_filter=0 y sysctl -w net.ipv4.conf.wlan0.rp_filter=0

Résultat :

  • l'ordinateur ne peut pas accéder à l'Internet, ping , dig Dans le navigateur, rien ne fonctionne.
  • l'ordinateur se connecte aux périphériques locaux sans problème (comme le ping du routeur). 192.168.1.1 Vous pouvez aussi utiliser FireFox en passant par le proxy SOCK5 hébergé sur le Pi).
  • Le téléphone Android se connecte parfaitement à l'Internet.

Débogage :

  • en utilisant iptables -t <table_name> -L -v pour montrer le nombre de paquets, toutes les chaînes ont des paquets, *sauf la chaîne FORWARD chaîne des deux raw , mangle Les tableaux montrent Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) . Après quelques recherches sur Internet, rp_filter est le suspect mais je suis sûr qu'il est désactivé.

0 votes

NetFilter ( iptables ) fonctionne au niveau supérieur de la couche OSI. Qu'en est-il du routage IP ( ip rule y ip route ) ? Sont-ils configurés correctement ? Android n'utilise pas main par défaut, contrairement aux distros Linux normales. En rapport avec cela : Comment envoyer tout le trafic internet vers un serveur proxy SOCKS5 dans un réseau local ? y Comment transférer l'internet à l'aide d'un Hotspot Android vers un PC ?

0voto

Myles Points 111

Merci à @Irfan Latif J'ai trouvé la solution moi-même. Il est vrai que les paquets sont envoyés au dernier unreachable règle de ip rule parce qu'ils ne correspondent à aucune des règles précédentes :

# result of `ip rule`
... (no rules match)
22000:  from all fwmark 0x0/0xffff iif lo lookup wlan0 
32000:  from all unreachable

J'ai donc ajouté une règle pour router le trafic entrant du réseau local vers la table de route wlan0 par :
ip rule add from 192.168.0.0/16 iif wlan0 table wlan0

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