2 votes

Pourquoi le proxy défini sur Android ne fonctionne pas lorsqu'il est utilisé comme hotspot ?

Je configure le proxy dans les paramètres APN de mon réseau mobile dans la capture d'écran ci-dessous :

Cela fonctionne bien. J'ai vérifié via whatismyip. Cependant, lorsque j'active le hotspot sur l'appareil et que j'utilise ce hotspot sur un autre appareil et que je vérifie l'IP de celui-ci, il affiche l'IP de mon fournisseur de services mobiles d'origine et non l'IP du proxy.

Pourquoi un tel comportement si le hotspot est censé utiliser le réseau mobile et que le proxy est défini dans l'APN pour celui-ci ? Comment puis-je faire fonctionner le proxy sur un appareil utilisant le hotspot également ?

Note : Je ne veux pas définir le proxy dans les paramètres avancés de l'option wifi de l'autre appareil en choisissant ce hotspot. L'application que j'essaie d'utiliser détecte le proxy sous l'option wifi et c'est donc ma seule option.

4voto

Irfan Latif Points 16863

Votre question porte sur la compréhension de Modèle OSI . Les proxies utilisent http / https o socks protocole, je suppose que vous parlez de http qui est un protocole de la couche application (L7) du modèle OSI. Lorsqu'une application génère http le message, il est transmis à la couche inférieure. En cas de https Le message est crypté par SSL/TLS, qui sont des protocoles L6. Au niveau L4, le message reçoit un en-tête TCP, puis au niveau L3, il est converti en un paquet IP. Ce paquet passe par le NAT et le filtrage des pare-feu au niveau L3, et enfin par RRM/PDCP/RLC (si vous utilisez Mobile Data), MAC et le routage du noyau au niveau L2. À L1, il est transmis par Wi-Fi en tant que 802.11 ou des signaux CDMA/TDMA/FDMA sur les données mobiles.

Hotspot, quant à lui, est principalement basé sur deux outils de l'espace utilisateur ; hostapd - qui crée un point d'accès Wi-Fi au niveau de l'OSI L2 - et dnsmasq (jusqu'à Android 9) - qui fonctionne comme un serveur DHCP/DNS à OSI L7. Si l'hôte connecté utilise le téléphone comme serveur DNS (tel que configuré par DHCP), le téléphone reçoit les requêtes DNS et les transmet de manière récursive sous forme de paquets UDP/IP au serveur DNS en amont sur Internet (quel que soit le type de serveur DNS). dnsmasq est configuré pour être utilisé). Le reste du trafic provenant du réseau hotspot est NATé et routé à L3/L2.

Donc vous voyez qu'aucun des (paquets IP) du trafic provenant des hôtes connectés ne passe par http sur le téléphone Android, qui n'est donc pas transmis au serveur proxy. C'est la responsabilité des applications comme les navigateurs web de faire http(s) les connexions au serveur proxy, et non directement à l'hôte distant comme le serveur web. Il n'est pas possible de créer un hotspot qui peut être configuré pour utiliser des serveurs proxy. http proxy à OSI L7. Les paramètres de proxy (hôte/port) que nous définissons pour le Wi-Fi ou l'APN ou globalement sont simplement transmis aux applications, chaque application doit créer une connexion proxy de son côté, ou simplement ignorer les informations du proxy. Vous devez fournir ces informations de proxy aux applications sur chaque hôte connecté par hotspot. Voir la question ci-dessous pour plus de détails.

Cependant, il est possible de rediriger de force l'ensemble du trafic vers un serveur proxy en utilisant les NAT/REDIRECT/TPROXY du noyau Linux/Android (au niveau L3) et la table de routage (au niveau L2). C'est ainsi que fonctionnent les proxifieurs, mais il y a limitations . Les clients de messagerie électronique utilisent les protocoles IMAP/POP3/SMTP (L6/7) qui ne fonctionnent pas avec http GET au lieu de demander http CONNECT proxies. Ces derniers ne peuvent transférer que le trafic TCP, pour UDP, il faut au moins un proxy SOCKS5 qui fonctionne à L5. Le DNS et la plupart des jeux et des applications d'appels vocaux génèrent du trafic UDP, ils ne fonctionneront donc pas avec le proxy http proxies du tout. ping utility - par exemple - utilise ICMP (à L3) qui ne peut pas être encapsulé dans TCP ou UDP, il ne fonctionnera donc pas non plus avec SOCKS5.

Il n'est donc pas possible, dans le vrai sens du terme, de rediriger tout le trafic vers un serveur distant (proxy) sans utiliser une solution L2/3 comme le VPN. Pour plus de détails, voir Comment configurer le proxy HTTPS du Wi-Fi, et non HTTP, via le shell adb ?


Pourquoi un tel comportement si le hotspot est censé utiliser le réseau mobile et que le proxy est défini dans l'APN pour celui-ci ?

Le hotspot est censé utiliser le réseau mobile, les applications sont censées utiliser le proxy. Le proxy que vous avez configuré dans APN n'est pas appliqué à l'ensemble du système.

Je ne veux pas définir le proxy dans les paramètres avancés de l'option WiFi de l'autre appareil lorsque je choisis ce hotspot.

Malheureusement, il s'agit de la méthode la plus simple. Les autres méthodes nécessitent l'enracinement et/ou l'utilisation d'applications tierces (pour créer un VPN). Voir la question liée ci-dessus sur la façon d'appliquer le proxy de manière transparente.

1voto

nuzz Points 206

La raison pour laquelle vous voyez les symptômes est que lorsque vous activez votre hotspot, pensez que c'est comme transformer votre téléphone en routeur. Ainsi, tout paramètre réseau sur le hotspot ne changera pas l'adresse IP individuelle de l'appareil. Lorsque vous vous connectez à votre hotspot, il se connecte en fonction de l'adresse IP de l'appareil et non en fonction de la modification des paramètres réseau, car les paramètres réseau modifiés sont les derniers dans la hiérarchie des choses. Je crois que si vous faites une recherche sur Google, il y a des applications qui vont usurper l'adresse IP de votre appareil, essentiellement le même concept qu'un proxy, mais indétectable.

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