Je configure le proxy dans les paramètres APN de mon réseau mobile dans la capture décran ci-dessous:
Cela fonctionne bien. Jai vérifié via whatismyip. Cependant, lorsque jactive le hotspot sur lappareil et que jutilise ce hotspot sur un autre appareil et que jen vérifie lIP, il affiche lIP de mon fournisseur de services mobiles dorigine et non lIP du proxy.
Pourquoi un tel comportement si le hotspot est censé utiliser le réseau mobile et le proxy est défini dans APN pour cela? Comment puis-je faire fonctionner le proxy sur un appareil utilisant également un point daccès?
Remarque: je ne souhaite pas définir de proxy sous les paramètres avancés sur loption Wi-Fi dun autre appareil lors du choix de ce point daccès. Lapplication que jessaie dutiliser détecte le proxy défini sous wifi, cest donc ma seule option.
Réponse
Votre question est lié à la compréhension du modèle OSI . Les proxy utilisent le protocole http
/ https
ou socks
, je suppose que vous parlez de http
qui est un protocole de couche dapplication (L7) dans le modèle OSI. Lorsquune application génère un message http
, il est transféré à la couche inférieure. En cas de https
, le message est chiffré par SSL / TLS qui sont des protocoles L6. En L4, le message reçoit un en-tête TCP, puis en L3 il est converti en un paquet IP. Ce paquet passe par le filtrage NAT et pare-feu en L3, et enfin par RRM / PDCP / RLC (si vous utilisez des données mobiles), MAC et le routage du noyau en L2. À L1, il est transmis via Wi-Fi sous forme de 802.11
trames ou de signaux CDMA / TDMA / FDMA sur Mobile Data.
Hotspot, en revanche, est principalement basé sur 2 outils de lespace utilisateur; hostapd
– qui crée un point daccès Wi-Fi à OSI L2 – et dnsmasq
(jusquà Android 9) – qui fonctionne comme serveur DHCP / DNS sur OSI L7. Si lhôte connecté utilise le téléphone comme serveur DNS (tel que configuré par DHCP), le téléphone reçoit des 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 dnsmasq
est configuré pour utiliser). Le reste du trafic provenant du réseau hotspot est NAT et acheminé à L3 / L2.
Donc, vous ne voyez aucun des (paquets IP) le trafic provenant des hôtes connectés passe par la pile http
sur le téléphone Android et nest donc pas redirigé vers le serveur proxy. Il est de la responsabilité dapplications comme les navigateurs Web de rendre http(s)
connexions au serveur proxy, pas directes ly à lhôte distant comme le serveur Web. Il « nest pas possible de créer un hotspot qui peut être configuré pour utiliser le proxy http
sur OSI L7. Les paramètres du proxy (hôte / port) que nous avons définis pour le Wi-Fi ou lAPN ou globalement sont juste transféré aux applications, chaque application doit créer une connexion proxy seule ou simplement ignorer les informations du proxy. Vous devez fournir ces détails de proxy aux applications sur chaque hôte connecté via un hotspot. Voir la question ci-dessous pour plus de détails.
Cependant, il est possible de rediriger de force tout le trafic vers un serveur proxy en utilisant NAT / REDIRECT / TPROXY (en L3) et la table de routage (en L2) du noyau Linux / Android. Cest ainsi que fonctionnent les proxificateurs , mais il existe des limitations . Les clients de messagerie utilisent les protocoles IMAP / POP3 / SMTP (L6 / 7) qui ne fonctionnent pas avec la méthode http GET
, mais nécessitent à la place des proxys http CONNECT
. Ce dernier ne peut transférer que le trafic TCP, pour UDP au moins un proxy SOCKS5 est nécessaire, qui fonctionne à L5. DNS et principalement les jeux et les applications dappel vocal génèrent du trafic UDP, ils ne fonctionneront donc pas avec http
procurations du tout. Lutilitaire ping
– par exemple – utilise ICMP (en L3) qui ne peut « pas être encapsulé dans TCP ou UDP, donc il ne fonctionnera pas avec SOCKS5 aussi.
Il nest donc pas possible dans le vrai sens de rediriger tout le trafic vers un serveur distant (proxy ) sans utiliser de solution L2 / 3 telle que VPN. Pour plus de détails, voir Comment configurer le proxy HTTPS Wi-Fi, et non HTTP, via adb shell?
Pourquoi un tel comportement si le hotspot est censé utiliser le réseau mobile et que le proxy est défini dans APN pour cela?
Le point daccès est censé utiliser le réseau mobile, les applications sont censées utiliser le proxy. Le proxy que vous avez configuré dans APN nest pas appliqué à léchelle du système.
Je ne souhaite pas définir de proxy sous les paramètres avancés sur loption WiFi dun autre appareil en choisissant ce point daccès.
Malheureusement, cest le plus simple De manière générale, dautres méthodes nécessitent un enracinement et / ou lutilisation dapplications tierces (pour créer un VPN). Voir la question liée ci-dessus sur la façon dappliquer le proxy de manière transparente.
Réponse
La raison étant que vous voyez les symptômes, cest que lorsque vous activez votre hotspot, pensez-y comme si vous allumez votre téléphone dans un routeur. Ainsi, tous les paramètres réseau du hot spot ne changeront pas ladresse IP individuelle des appareils. Lorsque vous vous connectez à votre hotspot, il se connecte par lIP de cet appareil et non lorsque est modifié dans les 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 recherchez sur Google, ce sont des applications qui usurperont ladresse IP de vos appareils essentiellement le même concept quun proxy juste indétectable.
Commentaires
- mais finalement la demande envoyée via ma connexion mobile doit passer par cet APN et doit suivre ce proxy, nest-ce pas? cest le cas lorsque je lutilise sur le même appareil, même lorsque le hotspot est activé. Comme vous lavez dit, cest la dernière hiérarchie des choses, donc une fois la connexion établie via un point daccès, il devrait passer par ce proxy dans les paramètres de connexion mobile après cela