J'ai trouvé des articles sur la façon de mettre en place un http-proxy . Mais je ne trouve aucune information sur la façon de configurer un proxy socks5. Mon objectif est d'acheminer tout le trafic provenant des applications, etc. à travers ce proxy. Est-ce possible ? Comment fonctionnent alors des programmes comme Drony ?
Réponse
Trop de publicités?Android a HTTP(S)
support de proxy intégré qui peut être défini par Settings
l'interface utilisateur et/ou la ligne de commande, mais il n'est pas global, donc considéré par proxy-aware uniquement. Cependant, il n'y a pas de support intégré pour SOCKS
. Ainsi, si une application - contrairement aux navigateurs web - ne peut pas être configurée pour utiliser le proxy SOCKS, il n'y a aucun moyen de configurer le proxy SOCKS5 à partir de l'application. adb shell
ou un émulateur de terminal sans utiliser d'outil ou d'application tiers. Voir les détails dans Comment configurer le proxy HTTPS du Wi-Fi, et non HTTP, via le shell adb ?
COMMENT FONCTIONNE LE PROXY ?
Voir 本答 pour le proxy HTTP(S).
Le proxy SOCKS - un protocole de poignée de main complet - crée un tunnel à un niveau inférieur à celui de l'accès à l'Internet. proxies d'application ( http/s
) en Modèle OSI Le trafic UDP peut donc également être transporté. Cependant, la connexion n'est pas sécurisée comme https
et la sécurité dépend de l'authentification initiale pendant la poignée de main. socks
peut être utilisé par des clients individuels ou peut être configuré pour l'ensemble du système, c'est-à-dire pour transférer tout le trafic de manière transparente. Une application courante de ce dernier cas est celle des tunnels SOCKS cryptés comme le transfert dynamique SSH, Tor, shadowsocks
, stunnel
, ssf
, sshuttle
, obfsproxy
et ainsi de suite. Un VPN est également un tunnel crypté, mais il fonctionne même en dessous de SOCKS, et est donc capable de transporter tout le trafic IP et de transférer tous les ports.
COMMENT FAIRE DE LA CHAUSSETTE :
Les applications forcent tout le trafic vers un proxy SOCKS en deux parties :
-
Établir une connexion entre le dispositif client et le serveur proxy
Le proxy peut être un serveur autonome ou un tunnel sécurisé. Dans ce dernier cas, le proxy est généralement exécuté sur le dispositif client lui-même ou sur le réseau local. Par exemple Ki4a dispose d'une interface intégrée pour la connexion SSH afin de créer un système de gestion de la sécurité.
Dynamic Forwarding
qui agit comme un proxy SOCKS local. Shadowsocks y Orbot (Tor) sont deux autres exemples de tunnels cryptés. Tous deux écoutent les ports SOCKS5 ainsi que les ports proxy transparents. Drony y Postern peut également créershadowsocks
les tunnels. Et la liste est longue. -
Rediriger le trafic de l'ensemble de l'appareil ou d'applications spécifiques vers le proxy.
Toutes les applications ne disposent pas d'un support intégré pour utiliser le proxy SOCKS, seules quelques applications comme les navigateurs web en disposent. Nous avons donc besoin d'applications tierces / d'outils natifs qui utilisent différentes approches.
Deux méthodes courantes sont
redsocks
+iptables
ytun2socks
+ VPN/routage. ProxyDroid utilise la première approche. Dans ce dernier cas, Root n'est pas nécessaire car les applications (comme ChaussettesDroid , Orbot , Shadowsocks et de nombreux autres pare-feu/renifleurs) utilisent la technologie Java d'Android.VPN API
. Drony y Postern utiliser des méthodes similaires basées sur Java. Ki4a offre les deux options.
Voir 本答 pour les autres méthodes de proxification.
Juste à titre de référence, Intercepteur de bibliothèque partagée est un hack populaire dans le monde Linux (utilisé par socksify , tsocks , bas de contention , chaînes par procuration etc.). Lorsqu'un binaire dynamique est exécuté pour une communication réseau, LD_PRELOAD
est utilisée pour forcer le chargement d'une bibliothèque dynamique spécifique en mémoire avant toute autre bibliothèque partagée. L'éditeur de liens dynamiques recherche d'abord les symboles requis dans cette bibliothèque. Cette bibliothèque est modifiée pour offrir les mêmes fonctions que la couche socket du système d'exploitation, mais en traduisant de manière transparente les connexions simples en connexions proxiées en prenant effectivement le contrôle des fonctions/appels système liés au réseau ( prise de courant , connecter en particulier). Proxifier y ProxyCap faire quelque chose de similaire sous Windows.
Bien que cette approche concerne davantage les bibliothèques natives et non la pile Java d'Android (où s'exécutent les applications), les applications peuvent être piraté pour commencer avec des LD_PRELOAD
valeurs. Le système Android linker fait soutien LD_PRELOAD
voir Termux-exec par exemple. Mais je n'ai pas vu d'exemple pratique de cette approche pour le proxy sur Android.
CONFIGURATION DU PROXY SOCKS AVEC CLI :
Bien que l'exécution des deux étapes susmentionnées en ligne de commande ne soit pas impossible, elle est trop compliquée pour être réalisable par un utilisateur ordinaire. chaussettes rouges peut être configuré avec iptables
tandis que tun2socks nécessite la création d'un tun
l'interface réseau ainsi que la configuration de la RPDB / table de routage (c'est ce qu'on appelle la VPN API
fait à l'arrière). SSHuttle est également un projet similaire qui est basé sur SSH et qui utilise iptables
NAT, TPROXY ou routage. ss-redir ( shadowsocks
) utilise également iptables
NAT/TPROXY. Plus, toutes les méthodes nécessitent un accès Root .
Pour un redsocks
+ iptables
Exemple de travail, voir Comment envoyer tout le trafic Internet vers un serveur proxy SOCKS5 dans un réseau local ?
CONCLUSION :
La meilleure façon d'utiliser le proxy SOCKS sur Android est donc d'utiliser une application. ChaussettesDroid est simple, gratuit, open source et sans publicité. Ou vous pouvez utiliser une application spécifique à un protocole, par exemple Tor ou Shadowsocks (je n'ai aucune affiliation avec les applications mentionnées dans cette réponse). Mais le choix dépend de multiples facteurs comme les protocoles / méthodes et l'un des plus importants étant l'adresse IP. UDP
(notamment DNS
).
SOURCE :