Configurateur SOCKS5 pour Linux : proxychains, redsocks et routage par application
Linux n'a pas de bascule SOCKS5 unique, mais vous pouvez router par application avec proxychains, de manière transparente avec redsocks, ou via des variables d'environnement. Voici comment configurer chaque méthode, vérifier le DNS et éviter les fuites.
Rechercher un « configurateur SOCKS5 » sous Linux prête souvent à confusion : il n'existe pas de bascule SOCKS5 à l'échelle du système dans GNOME ou KDE comme pour les proxys HTTP. À la place, Linux vous fournit des briques flexibles. Ce guide couvre les méthodes pratiques pour acheminer le trafic via un proxy SOCKS5 sous Linux — par application, de manière transparente et pour des outils CLI spécifiques — avec du code que vous pouvez adapter.
Comment fonctionne SOCKS5 sous Linux (et pourquoi le DNS compte)
SOCKS5 est un protocole proxy générique qui peut gérer les connexions TCP (et UDP avec certaines extensions, mais la plupart des implémentations s'en tiennent au TCP). Sous Linux, la distinction clé est entre socks5 et socks5h :
socks5://résout le DNS localement sur votre machine, puis envoie l'IP au proxy.socks5h://envoie le nom d'hôte au proxy, qui le résout à distance.
Pour du contenu géo-restreint ou pour éviter les fuites DNS, socks5h est généralement le bon choix. Si votre fournisseur de proxy vous donne un point de terminaison SOCKS5, vous pouvez souvent forcer le DNS distant en utilisant la variante h ou un paramètre comme « Proxy DNS lors de l'utilisation de SOCKS v5 » dans Firefox.
Routage par application avec proxychains
proxychains-ng est le fork maintenu de l'outil classique proxychains. Il utilise LD_PRELOAD pour intercepter les appels réseau des programmes liés dynamiquement et les acheminer via votre proxy. C'est l'équivalent Linux le plus proche de Proxifier sous Windows ou macOS, bien qu'il fonctionne différemment en interne.
Installez-le sur Debian/Ubuntu :
sudo apt install proxychains4
Sur Arch :
sudo pacman -S proxychains-ng
Modifiez le fichier de configuration (généralement /etc/proxychains4.conf ou ~/.proxychains/proxychains.conf). À la fin, définissez votre proxy :
[ProxyList]
socks5 127.0.0.1 1080
Si votre proxy nécessite une authentification :
socks5 203.0.113.10 1080 username password
Pour acheminer le DNS via le proxy, gardez la ligne proxy_dns décommentée dans la configuration. Cela fait que proxychains utilise le DNS distant, comme socks5h.
Exécutez n'importe quelle commande via le proxy :
proxychains4 curl https://ifconfig.me
proxychains4 firefox
Remarque : proxychains ne fonctionne pas avec les binaires liés statiquement, les binaires setuid ou les applications qui effectuent des appels de socket bruts. Il ne proxyfie pas non plus le trafic UDP par défaut. Dans ces cas, envisagez l'approche par proxy transparent ci-dessous.
Proxy transparent avec redsocks
Si vous souhaitez acheminer tout le trafic TCP (ou des ports spécifiques) via un proxy SOCKS5 sans configuration par application, redsocks peut rediriger les connexions au niveau du noyau. C'est plus complexe et peut casser votre réseau en cas de mauvaise configuration, alors procédez avec prudence.
Installez redsocks :
sudo apt install redsocks
Créez un fichier de configuration, par exemple /etc/redsocks.conf :
redsocks {
local_ip = 127.0.0.1;
local_port = 12345;
ip = 203.0.113.10;
port = 1080;
type = socks5;
login = "username";
password = "password";
}
Ensuite, utilisez iptables pour rediriger le trafic TCP sortant vers le port local de redsocks. Par exemple, pour rediriger tout le trafic TCP sauf les réseaux locaux :
sudo iptables -t nat -N REDSOCKS
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 169.254.0.0/16 -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
Cette configuration redirige le TCP sortant de la machine locale. Ajustez les règles selon vos besoins (par exemple, exclure certains utilisateurs ou destinations). N'oubliez pas que le DNS est souvent en UDP ; redsocks peut gérer le DNS TCP, mais vous devrez peut-être configurer davantage pour l'UDP. De nombreux utilisateurs combinent redsocks avec un résolveur DNS local comme dnscrypt-proxy ou unbound pour éviter les fuites.
Variables d'environnement et outils CLI
De nombreux outils en ligne de commande respectent des variables d'environnement telles que http_proxy, https_proxy et all_proxy. Pour SOCKS5, la plus fiable est all_proxy avec le schéma socks5h :
export all_proxy=socks5h://127.0.0.1:1080
curl https://ifconfig.me
Certains outils honorent aussi http_proxy et https_proxy avec une URL socks5://, mais la prise en charge varie. Pour des outils spécifiques, configurez-les directement :
- curl : utilisez
--socks5-hostname 127.0.0.1:1080(équivalent àsocks5h). - git :
git config --global http.proxy socks5h://127.0.0.1:1080 - SSH : utilisez le transfert dynamique pour créer un proxy SOCKS local :
ssh -D 1080 -N user@remote-host. Ensuite, pointez les autres outils vers127.0.0.1:1080.
Configuration du navigateur sous Linux
Firefox offre une excellente prise en charge de SOCKS5. Allez dans Paramètres → Paramètres réseau → Configuration manuelle du proxy, définissez l'hôte SOCKS sur 127.0.0.1 et le port sur 1080, choisissez SOCKS v5, et cochez « Proxy DNS lors de l'utilisation de SOCKS v5 ». Cela fait que Firefox utilise le DNS distant.
Chrome et Chromium sous Linux peuvent être lancés avec un indicateur de proxy :
google-chrome --proxy-server="socks5://127.0.0.1:1080"
Cependant, cela ne proxyfie pas le DNS par défaut. Chrome résoudra les noms d'hôtes localement, ce qui peut entraîner des fuites DNS. Pour forcer le DNS distant, vous pouvez utiliser --host-resolver-rules ou une extension de proxy qui gère SOCKS5 avec DNS distant. Sinon, utilisez un proxy transparent à l'échelle du système comme redsocks pour éviter les indicateurs par navigateur.
Vérifier votre configuration et détecter les fuites
Après la configuration, vérifiez toujours que le trafic passe par le proxy et que le DNS ne fuit pas. Vérifications rapides :
- IP apparente :
curl https://ifconfig.meoucurl https://ipinfo.io/ip. (Si vous utilisez proxychains, préfixez avecproxychains4.) - Test de fuite DNS : visitez un site comme
dnsleaktest.comdans votre navigateur et vérifiez si les serveurs DNS appartiennent à votre FAI ou à votre fournisseur de proxy. - Fuites WebRTC : dans les navigateurs, WebRTC peut révéler votre véritable IP. Désactivez WebRTC ou utilisez une extension pour le bloquer si nécessaire.
- Vérification DNS en terminal :
dig +short example.comutilisera votre résolveur système à moins que vous n'ayez configuré proxychains ou un redirecteur DNS local. Pour voir si le DNS est proxyfié, comparez les résultats avec et sans le proxy.
Pièges courants et comment les éviter
- Utiliser
socks5://alors que vous avez besoin desocks5h://: c'est la cause la plus fréquente de fuites DNS. Si votre outil le prend en charge, utilisez toujours la varianteh. - Supposer que toutes les applications respectent proxychains : les binaires liés statiquement et certaines applications en bac à sable contournent
LD_PRELOAD. Testez chaque application dont vous avez besoin. - Oublier l'UDP et QUIC : les proxys SOCKS5 ne gèrent généralement que le TCP. QUIC (utilisé par HTTP/3) fonctionne sur UDP et peut contourner votre proxy. Désactivez QUIC dans votre navigateur si vous avez besoin d'une cohérence absolue.
- Fuites IPv6 : si votre proxy ne prend en charge que l'IPv4, le trafic IPv6 peut sortir directement. Désactivez IPv6 ou acheminez-le via le proxy si c'est pris en charge.
- Boucles de proxy transparent : avec redsocks, veillez à ne pas rediriger le trafic dont le proxy lui-même a besoin (par exemple, le trafic vers l'IP du serveur proxy). Utilisez des règles d'exclusion.
À retenir
Linux n'offre pas de configurateur SOCKS5 en un clic, mais c'est une fonctionnalité, pas un bug. Vous pouvez choisir le routage par application avec proxychains, la redirection transparente avec redsocks, ou de simples variables d'environnement pour les outils CLI. Choisissez la méthode qui correspond à votre flux de travail, puis vérifiez le DNS et les fuites avant de lui confier du trafic sensible.