Qu'est-ce qu'un proxy SOCKS5 : nous y présentions le concept. Ici, nous regardons à l'intérieur du protocole : quels octets circulent entre le client et le serveur, comment l'adresse est indiquée et pourquoi cette conception produit un outil plus polyvalent qu'un proxy HTTP ?
SOCKS5 est un protocole assez simple, défini dans la RFC 1928. Sa simplicité fait sa force : il n'interprète jamais les données de la couche applicative, il se contente de transporter le trafic TCP (et, en option, UDP).
Un handshake en trois phases
Si aucune authentification n'est requise, les trois allers-retours se réduisent à deux. Cela demande un peu plus d'allers-retours que la méthode CONNECT d'un proxy HTTP, mais les octets échangés sont bien plus petits.
Phase 1 — La salutation
Dans son premier paquet, le client annonce la version du protocole et les méthodes d'authentification qu'il prend en charge :
Le serveur annonce son choix par une réponse d'un seul octet : 0x00 (aucune authentification requise), 0x02 (utilisateur/mot de passe) ou 0xFF (aucune méthode acceptable).
Le serveur 0xFF S'il renvoie et ferme la connexion, cela signifie que votre client ne propose pas la méthode d'authentification attendue par le serveur. C'est la cause la plus fréquente de la plainte « la connexion s'est fermée silencieusement ».
Phase 2 — L'authentification
Si la méthode 0x02 est sélectionnée, la sous-négociation définie dans la RFC 1929 est effectuée : octet de version, longueur du nom d'utilisateur et nom d'utilisateur, longueur du mot de passe et mot de passe. Le serveur renvoie un octet unique de succès ou d'échec.
Pour une comparaison détaillée et une configuration pratique notre article sur l'authentification SOCKS5 vous pouvez le consulter.
Phase 3 — La requête CONNECT
Une fois l'authentification passée, le client annonce la cible. C'est ici qu'intervient la décision de conception la plus importante de SOCKS5 : l'adresse peut être fournie sous trois formes différentes.
ATYP=0x03 signifie nom de domaine ; dans ce cas, la résolution DNS est effectuée par le proxy. Cet octet unique est la clé pour éviter les fuites DNS.
Pourquoi plus polyvalent qu'un proxy HTTP ?
Un proxy HTTP lit et interprète la requête ; SOCKS5 se contente de la transporter. C'est pourquoi e-mail, jeu, transfert de fichiers et trafic de navigateur peuvent passer simultanément par SOCKS5.
| Fonction | Paramètre | SOCKS5 |
|---|---|---|
| Couche de fonctionnement | Application (7) | Session (5) |
| Prise en charge des protocoles | HTTP(S) uniquement | N'importe quel TCP, UDP en option |
| Interprétation du contenu | Oui | Non |
| Ajout d'en-têtes | Possible | Impossible |
| Mise en cache | Possible | Impossible |
| Résolution DNS | Côté proxy | Sélectionnable (ATYP) |
| Allers-retours du handshake | 1 (CONNECT) | 2–3 |
Pour une comparaison détaillée la différence entre proxy HTTP et SOCKS5 .
SOCKS5 assure-t-il un chiffrement ?
Non. C'est le malentendu le plus répandu. SOCKS5 est un protocole de transport ; il n'offre aucun chiffrement. La sécurité de votre trafic dépend du chiffrement propre au contenu transporté :
- Si cela passe par HTTPS : TLS protège de bout en bout ; le proxy ne peut pas voir le contenu.
- S'il s'agit de HTTP en clair : L'opérateur du proxy peut lire le contenu.
- Identifiants : Le nom d'utilisateur et le mot de passe SOCKS5 sont envoyés en clair.
Les identifiants SOCKS5 sont transmis sans chiffrement. Si vous utilisez un proxy SOCKS5 sur un réseau non fiable, vos identifiants peuvent être lus par un observateur intermédiaire. Dans ce scénario, utiliser SOCKS5 via un tunnel SSH est plus sûr — la méthode un article distinct .
Utilisation pratique
socks5h Dans le schéma h , il signifie « hostname » et fait effectuer la résolution DNS côté proxy. Préférez-le toujours afin d'éviter les fuites.
Quand choisir SOCKS5 ?
Préférez SOCKS5
- Si vous devez transporter des protocoles autres que HTTP (e-mail, FTP, jeu).
- Si vous souhaitez que la résolution DNS soit effectuée côté proxy.
- Si vous avez besoin de trafic UDP.
- Si vous ne voulez pas que le proxy touche à vos en-têtes.
- Si l'application ne prend en charge que SOCKS.
Un proxy HTTP suffit
- Si vous ne transportez que du trafic web.
- Si vous souhaitez de la mise en cache.
- Si votre outil ne prend en charge que le proxy HTTP.
- Si le nombre minimal d'allers-retours du handshake est déterminant.
- Si vous avez besoin de règles de filtrage d'entreprise.
Résumé
SOCKS5 est un protocole de couche session simple, qui transporte le trafic TCP et UDP sans jamais regarder les données applicatives. Grâce à son handshake en trois phases, à la prise en charge de trois types d'adresses et à l'option du nom de domaine, il permet d'éviter les fuites DNS. Il n'assure aucun chiffrement ; la sécurité dépend du chiffrement propre au contenu transporté. Si vous devez transporter du trafic non web, c'est le bon outil. Pour le détail des produits rendez-vous sur notre page proxy SOCKS5, et pour tester notre outil de vérification de proxy vous pouvez le consulter.