Configurateur SOCKS5 sous Linux : router les applications via un proxy SOCKS5 avec Proxychains
Linux ne dispose pas d’une application unique de configuration SOCKS5, ce guide met donc en place proxychains-ng et redsocks pour un routage SOCKS5 par commande et à l’échelle du système, vérifie que votre IP a réellement changé et explique quand un tunnel WireGuard est plus adapté.
Vue d'ensemble
Les utilisateurs de Windows et macOS disposent d’une fenêtre graphique « configurateur SOCKS5 ». Linux n’en fournit pas, donc le même travail est effectué avec deux petits utilitaires que vous configurez manuellement :
- proxychains-ng — enveloppe une seule commande et force ses connexions TCP sortantes à passer par votre proxy SOCKS5.
- redsocks — redirige le trafic de manière transparente via
iptables, ce qui se rapproche d’un comportement à l’échelle du système.
Ce tutoriel couvre les deux, montre comment prouver que votre adresse IP a réellement changé et explique les situations où le SOCKS5 par application est le mauvais outil et où un tunnel WireGuard — par exemple une passerelle dédiée de NordLayer — est plus adapté.
Prérequis
- Un bureau ou un serveur Linux. Les commandes sont indiquées pour Debian/Ubuntu, Fedora et Arch.
- Un accès
sudopour l’installation des paquets et les modifications de configuration. - Un point de terminaison SOCKS5 fonctionnel : hôte, port et nom d’utilisateur/mot de passe si le fournisseur exige une authentification.
curlinstallé pour la vérification (présent par défaut sur la plupart des distributions).
Étapes
1. Vérifiez le point de terminaison SOCKS5 avant de toucher à votre système
Confirmez toujours d’abord que le proxy fonctionne seul, pour ne pas déboguer deux choses à la fois :
curl -x socks5h://YOUR_USERNAME:YOUR_PASSWORD@PROXY_HOST:1080 https://ifconfig.me/ip
Deux détails comptent ici :
socks5h://demande au proxy de résoudre les noms DNS pour vous. Un simplesocks5://les résout localement, ce qui peut divulguer les noms d’hôtes que vous visitez.- Si votre mot de passe contient
@,:ou/, encodez-le en pourcentage, ou utilisezcurl --proxy-userau lieu de l’intégrer dans l’URL.
2. Installez proxychains-ng
Choisissez la commande correspondant à votre distribution :
# Debian / Ubuntu
sudo apt update && sudo apt install -y proxychains4
# Fedora
sudo dnf install -y proxychains-ng
# Arch
sudo pacman -S proxychains-ng
Vérifiez que le binaire est disponible sous le nom proxychains4 (Debian/Ubuntu) ou proxychains (Fedora/Arch) :
proxychains4 -h || proxychains -h
3. Configurez la chaîne de proxies
Ouvrez le fichier de configuration (le chemin varie selon le paquet) et modifiez le bloc [ProxyList] :
sudo nano /etc/proxychains4.conf # Debian / Ubuntu
sudo nano /etc/proxychains.conf # Fedora / Arch
strict_chain
proxy_dns
remote_dns_subnet 224
tcp_read_time_out 15000
tcp_connect_time_out 8000
[ProxyList]
socks5 203.0.113.10 1080 YOUR_USERNAME YOUR_PASSWORD
Remarques sur les paramètres :
proxy_dnsforce les recherches DNS à passer par le proxy au lieu de votre résolveur local.strict_chainutilise chaque proxy dans l’ordre. Utilisezdynamic_chainsi vous voulez ignorer les sauts en échec, ourandom_chainavecchain_lenpour alterner entre plusieurs entrées.- Remplacez
203.0.113.10 1080par l’hôte et le port de votre fournisseur, et supprimez les arguments nom d’utilisateur/mot de passe si le point de terminaison n’exige pas d’authentification.
4. Testez qu’une commande sort désormais par l’IP du proxy
Comparez une requête directe avec une requête enveloppée :
curl -s https://ifconfig.me/ip # votre IP normale
proxychains4 -q curl -s https://ifconfig.me/ip # devrait afficher l’IP du proxy
L’option -q supprime la bannière de proxychains pour que vous ne voyiez que la réponse. Vous pouvez envelopper des applications GUI de la même manière :
proxychains4 -q chromium https://ifconfig.me/ip
Si les deux commandes renvoient la même IP, arrêtez-vous ici et parcourez la section de dépannage avant de continuer.
5. Définissez les variables d’environnement de proxy pour les outils compatibles
De nombreux outils en ligne de commande lisent les variables de proxy standard, ce qui est utile lorsque vous ne voulez pas préfixer chaque commande :
export ALL_PROXY="socks5h://YOUR_USERNAME:YOUR_PASSWORD@PROXY_HOST:1080"
export HTTPS_PROXY="$ALL_PROXY"
export HTTP_PROXY="$ALL_PROXY"
curl, wget, git, pip et requests de Python les respectent par défaut, mais beaucoup d’autres applications les ignorent complètement. Considérez cela comme une couche de commodité, pas comme une configuration à l’échelle du système.
6. Facultatif : redirection transparente avec redsocks
Si vous avez besoin que des applications qui ne connaissent rien aux proxies soient routées automatiquement, redsocks plus une règle iptables fait le travail. Créez la configuration :
base {
log_debug = off;
log_info = on;
daemon = on;
redirector = iptables;
}
redsocks {
local_ip = 127.0.0.1;
local_port = 12345;
ip = 203.0.113.10;
port = 1080;
type = socks5;
login = "YOUR_USERNAME";
password = "YOUR_PASSWORD";
}
Démarrez le service et ajoutez les règles de redirection. La première règle est essentielle : le trafic vers le proxy lui-même ne doit jamais être redirigé vers le proxy, sinon vous créez une boucle.
sudo systemctl restart redsocks
sudo iptables -t nat -N REDSOCKS
sudo iptables -t nat -A REDSOCKS -d 203.0.113.10 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 0.0.0.0/8 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 10.0.0.0/8 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 127.0.0.0/8 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 172.16.0.0/12 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 192.168.0.0/16 -j RETURN
sudo iptables -t nat -A REDSOCKS -p tcp -j REDIRECT --to-ports 12345
sudo iptables -t nat -A OUTPUT -p tcp -j REDSOCKS
Redsocks ne redirige que le TCP. Le trafic UDP, l’ICMP et tout ce qui contourne iptables continue de passer par votre connexion normale, donc ce n’est pas équivalent à un VPN.
SOCKS5 sous Linux vs une passerelle WireGuard
Le SOCKS5 par application et un tunnel WireGuard résolvent des problèmes qui se recoupent, mais de manières différentes :
| Exigence | SOCKS5 avec proxychains/redsocks | Tunnel WireGuard (par ex. passerelle dédiée) |
|---|---|---|
| Portée | Une commande ou une application à la fois | Toutes les applications et protocoles de l’appareil |
| Gestion DNS | Dépend de socks5h et proxy_dns |
Résolue à l’intérieur du tunnel |
| UDP et ICMP | Non pris en charge par proxychains | Transportés à travers le tunnel |
| IP de sortie | Celle attribuée par le fournisseur SOCKS5 | IP de passerelle dédiée stable que vous pouvez mettre sur liste blanche |
| Effort de configuration | Faible, mais répété pour chaque application | Configuration de tunnel unique |
| Idéal pour | Routage et tests rapides par commande | Confidentialité de tout l’appareil, accès d’équipe, automatisation sur liste blanche |
Choisissez la voie SOCKS5 lorsque vous avez seulement besoin qu’un outil sorte par une autre IP. Choisissez un tunnel WireGuard lorsque la machine entière — ou toute une équipe — a besoin d’un routage cohérent et chiffré. Une option gérée telle que NordLayer fournit des tunnels WireGuard avec des passerelles dédiées, un onboarding pensé pour les équipes et une facturation mensuelle fixe plus facile à prévoir qu’une tarification à l’usage.
Dépannage
proxychains n’a aucun effet sur un binaire spécifique
proxychains fonctionne en préchargeant une bibliothèque partagée, il ne peut donc pas intercepter les programmes liés statiquement, les binaires Go ou les exécutables setuid. Vérifiez avec :
ldd $(which YOUR_APP)
Si la sortie indique « not a dynamic executable », utilisez plutôt redsocks — ou faites passer la machine par un tunnel WireGuard, qui opère en dessous de la couche applicative.
Votre IP semble toujours inchangée
- Confirmez que vous utilisez
socks5h://ou queproxy_dnsest activé ; une simple URLsocks5://résout les noms localement. - Vérifiez si le fournisseur attend une authentification et si vos identifiants sont corrects.
- Refaites d’abord un test avec
curl. Sicurlaffiche l’IP du proxy mais pas l’application, l’application contourne le préchargement.
Les connexions expirent ou se bloquent
- Augmentez
tcp_connect_time_outdans/etc/proxychains4.conf. - Confirmez que l’hôte du proxy est joignable sur ce port depuis votre réseau (les pare-feu sortants bloquent souvent les ports non standard).
- Réduisez le nombre de sauts dans la chaîne — les chaînes strictes longues multiplient la latence.
redsocks boucle ou fait tout tomber
Votre règle RETURN pour l’IP du proxy elle-même doit venir en premier dans la chaîne REDSOCKS. Videz et reconstruisez si vous avez modifié les règles dans le mauvais ordre :
sudo iptables -t nat -F REDSOCKS
Résumé
Linux remplace le configurateur SOCKS5 graphique par proxychains4 pour le routage par commande et redsocks pour la redirection TCP transparente. Vérifiez le point de terminaison avec curl, gardez proxy_dns activé pour éviter les fuites DNS, et rappelez-vous qu’aucun des deux outils ne couvre l’UDP ni les binaires liés statiquement. Lorsque vous avez besoin que chaque application et protocole de l’appareil utilise une seule IP de sortie stable et dédiée — en particulier pour une équipe — un tunnel WireGuard, comme une passerelle dédiée de NordLayer, est le choix le plus simple et le plus fiable.