Skip to content
Intermediate / 10 min read

Comment configurer les proxys IPRoyal Shadowsocks sous Linux pour un trafic CLI et navigateur axé sur la confidentialité

Configurez IPRoyal Shadowsocks sous Linux avec shadowsocks-libev, exécutez-le en tant que service systemd, vérifiez votre IP sortante et acheminez le trafic de curl, Git, Python et du navigateur via un proxy SOCKS5 local.

Linux SOCKS5 Shadowsocks Confidentialité/Anonymat

Aperçu

Shadowsocks est un protocole proxy chiffré basé sur SOCKS5. Sous Linux, un client Shadowsocks local écoute sur 127.0.0.1:1080, chiffre le trafic et le transmet à un point de terminaison Shadowsocks distant. Cela vous permet d'acheminer des outils CLI sélectionnés, des navigateurs ou le trafic système via un point de terminaison IPRoyal Shadowsocks sans modifier toute votre pile réseau.

Ce tutoriel montre comment configurer les proxys IPRoyal Shadowsocks sous Linux avec shadowsocks-libev, exécuter le client en tant que service systemd, vérifier votre IP sortante et acheminer des outils courants tels que curl, git, Python et Firefox via l'écouteur SOCKS5 local. IPRoyal est utilisé comme fournisseur d'exemple car il propose des proxys résidentiels, ISP et datacenter avec prise en charge de HTTP, SOCKS5 et Shadowsocks. Si vous utilisez un autre fournisseur, remplacez les identifiants et les détails du serveur par les vôtres.

Prérequis

  • Une distribution Linux avec systemd, telle qu'Ubuntu, Debian, Fedora, Arch Linux, ou un serveur ou bureau compatible.
  • Un accès sudo ou root pour l'installation et la gestion des services.
  • Un compte IPRoyal avec des identifiants Shadowsocks : adresse du serveur, port du serveur, mot de passe et méthode de chiffrement.
  • Une familiarité de base avec le terminal et les éditeurs de texte tels que nano ou vim.
  • Facultatif : curl pour les tests.

Comment IPRoyal Shadowsocks s'intègre dans une installation Linux

Shadowsocks n'est pas un proxy HTTP. Il crée un tunnel chiffré vers un point de terminaison distant et expose un proxy SOCKS5 local. Vos applications doivent être configurées pour utiliser ce proxy SOCKS5 local, ou vous pouvez acheminer sélectivement le trafic à travers celui-ci.

Un flux typique :

  1. Une application se connecte à 127.0.0.1:1080.
  2. Le client Shadowsocks local chiffre la requête.
  3. La requête chiffrée est envoyée au point de terminaison IPRoyal Shadowsocks.
  4. Le point de terminaison transmet la requête au site de destination.
  5. La réponse revient par le même tunnel.

Comme l'écouteur local est SOCKS5, vous pouvez l'utiliser avec des outils qui prennent en charge SOCKS5 ou socks5h (SOCKS5 avec résolution DNS distante). Utilisez socks5h lorsque vous souhaitez que les requêtes DNS soient résolues via le proxy plutôt que sur votre machine locale.

Étapes

Étape 1 : Installer un client Shadowsocks sous Linux

Installez shadowsocks-libev, qui fournit le client ss-local et fonctionne bien avec systemd.

Pour Debian ou Ubuntu :

sudo apt update
sudo apt install shadowsocks-libev

Pour Fedora ou les distributions de la famille RHEL :

sudo dnf install shadowsocks-libev

Pour Arch Linux :

sudo pacman -S shadowsocks-libev

Si votre distribution ne fournit pas de paquet shadowsocks-libev, vous pouvez installer shadowsocks-rust depuis votre gestionnaire de paquets ou le compiler à partir des sources. Les concepts de configuration ci-dessous sont les mêmes, bien que les noms des binaires puissent différer.

Étape 2 : Créer le fichier d'environnement IPRoyal Shadowsocks

Créez un fichier d'environnement contenant les détails du point de terminaison IPRoyal Shadowsocks. Remplacez les valeurs fictives par le serveur, le port, le mot de passe et la méthode exacts de votre tableau de bord IPRoyal.

sudo mkdir -p /etc/iproyal
sudo nano /etc/iproyal/shadowsocks.env

Ajoutez les valeurs suivantes :

SS_SERVER=YOUR_IPROYAL_SERVER
SS_PORT=8388
SS_PASSWORD=YOUR_IPROYAL_PASSWORD
SS_METHOD=aes-256-gcm
SS_LOCAL_ADDRESS=127.0.0.1
SS_LOCAL_PORT=1080

Remarques :

  • Utilisez la méthode de chiffrement exactement telle que fournie par IPRoyal. Les méthodes courantes incluent aes-256-gcm, chacha20-ietf-poly1305 et aes-128-gcm, mais le point de terminaison doit prendre en charge la méthode que vous choisissez.
  • Si IPRoyal vous fournit un point de terminaison SOCKS5 au lieu d'un point de terminaison Shadowsocks, utilisez une configuration client SOCKS5 ou un outil tel que ProxyChains au lieu de Shadowsocks.
  • Gardez le fichier lisible uniquement par root s'il contient des identifiants :
sudo chmod 600 /etc/iproyal/shadowsocks.env

Étape 3 : Tester la configuration au premier plan

Avant de créer un service, exécutez le client au premier plan pour confirmer que les identifiants et le chemin réseau fonctionnent.

sudo ss-local -s YOUR_IPROYAL_SERVER -p 8388 -b 127.0.0.1 -l 1080 -k YOUR_IPROYAL_PASSWORD -m aes-256-gcm -u -v

Laissez ce terminal ouvert. Dans un second terminal, testez l'écouteur SOCKS5 local :

curl --socks5-hostname 127.0.0.1:1080 https://ifconfig.me

Si la commande renvoie une adresse IP différente de votre IP publique habituelle, le tunnel fonctionne. Appuyez sur Ctrl+C dans le premier terminal pour arrêter le client au premier plan.

Étape 4 : Exécuter le client Shadowsocks en tant que service systemd

Créez une unité systemd afin que le client démarre au démarrage et redémarre après des échecs.

sudo nano /etc/systemd/system/iproyal-shadowsocks.service

Ajoutez :

[Unit]
Description=IPRoyal Shadowsocks local client
After=network-online.target
Wants=network-online.target

[Service]
EnvironmentFile=/etc/iproyal/shadowsocks.env
ExecStart=/usr/bin/ss-local -s ${SS_SERVER} -p ${SS_PORT} -b ${SS_LOCAL_ADDRESS} -l ${SS_LOCAL_PORT} -k ${SS_PASSWORD} -m ${SS_METHOD} -u
Restart=on-failure
RestartSec=5
LimitNOFILE=32768

[Install]
WantedBy=multi-user.target

Ajustez le chemin de ExecStart si votre binaire ss-local se trouve ailleurs. Vous pouvez le trouver avec :

command -v ss-local

Si votre fournisseur ne prend pas en charge la relève UDP, supprimez -u de la ligne ExecStart.

Rechargez systemd et démarrez le service :

sudo systemctl daemon-reload
sudo systemctl enable --now iproyal-shadowsocks
sudo systemctl status iproyal-shadowsocks

Étape 5 : Vérifier l'écouteur SOCKS5 local et l'IP sortante

Vérifiez que le client écoute localement :

ss -ltnp | grep 1080

Vérifiez ensuite l'IP sortante via le proxy :

curl --socks5-hostname 127.0.0.1:1080 https://ifconfig.me
curl --socks5-hostname 127.0.0.1:1080 https://ipinfo.io/ip

Comparez le résultat avec votre connexion directe :

curl https://ifconfig.me

Si les adresses diffèrent, le client local transmet le trafic via le point de terminaison IPRoyal Shadowsocks. Si elles correspondent, consultez la section de dépannage ci-dessous.

Étape 6 : Acheminer les outils CLI via le proxy SOCKS5 local

Utilisez l'écouteur SOCKS5 local avec les outils qui prennent en charge SOCKS5. Préférez socks5h afin que la résolution DNS se fasse via le proxy.

Pour curl :

curl --socks5-hostname 127.0.0.1:1080 https://httpbin.org/ip

Pour git :

git config --global http.proxy socks5h://127.0.0.1:1080
git config --global https.proxy socks5h://127.0.0.1:1080

Pour supprimer ultérieurement ces paramètres de proxy Git :

git config --global --unset http.proxy
git config --global --unset https.proxy

Pour Python requests, installez la prise en charge de SOCKS et utilisez le proxy :

python3 -m pip install 'requests[socks]'
import requests

proxies = {
    'http': 'socks5h://127.0.0.1:1080',
    'https': 'socks5h://127.0.0.1:1080',
}

response = requests.get('https://httpbin.org/ip', proxies=proxies, timeout=30)
print(response.json())

Pour wget, utilisez un wrapper compatible SOCKS5 ou des variables d'environnement lorsqu'elles sont prises en charge. curl et Python offrent généralement le comportement le moins ambigu pour les tests SOCKS5.

Étape 7 : Configurer un proxy de navigateur ou de bureau

Pour Firefox, ouvrez Paramètres, recherchez Paramètres réseau, choisissez Configuration manuelle du proxy, et définissez :

  • Hôte SOCKS : 127.0.0.1
  • Port : 1080
  • SOCKS v5 : sélectionné
  • Proxy DNS lors de l'utilisation de SOCKS v5 : activé

Pour les environnements de bureau GNOME, vous pouvez définir manuellement le proxy système :

gsettings set org.gnome.system.proxy mode 'manual'
gsettings set org.gnome.system.proxy.socks host '127.0.0.1'
gsettings set org.gnome.system.proxy.socks port 1080

Pour revenir à une connexion directe :

gsettings set org.gnome.system.proxy mode 'none'

Toutes les applications ne respectent pas les paramètres de proxy système. En cas de doute, configurez le proxy directement dans l'application ou utilisez un wrapper compatible SOCKS5.

Étape 8 : Confirmer le comportement DNS et les fuites

Exécutez une requête qui indique le résolveur et l'IP :

curl --socks5-hostname 127.0.0.1:1080 https://ipinfo.io/json

Vérifiez si l'IP indiquée appartient au point de terminaison proxy. Comme socks5h envoie le nom d'hôte au proxy pour résolution, les requêtes DNS locales sont évitées pour cette requête. Si vous utilisez plutôt socks5://, le nom d'hôte peut d'abord être résolu localement, ce qui peut divulguer des informations DNS.

Dépannage

Le service démarre mais l'IP ne change pas

  • Confirmez que votre commande de test utilise --socks5-hostname ou socks5h://, et non une connexion directe.
  • Consultez les journaux du service :
journalctl -u iproyal-shadowsocks -e
  • Vérifiez que l'adresse du serveur, le port, le mot de passe et la méthode de chiffrement correspondent exactement au tableau de bord IPRoyal.
  • Testez avec une autre destination telle que https://httpbin.org/ip pour écarter un comportement propre au site.

ss-local échoue avec une erreur d'authentification ou de méthode

  • La méthode de chiffrement doit correspondre au point de terminaison distant. Si IPRoyal fournit chacha20-ietf-poly1305, n'utilisez pas aes-256-gcm.
  • Vérifiez la présence d'espaces de fin ou de caractères masqués dans le champ du mot de passe.
  • Si votre mot de passe contient des caractères spéciaux, mettez-le correctement entre guillemets dans le fichier d'environnement ou utilisez un fichier de configuration pris en charge par votre client.
  • Exécutez le client en mode verbeux pour voir l'erreur exacte :
sudo ss-local -s YOUR_IPROYAL_SERVER -p 8388 -b 127.0.0.1 -l 1080 -k YOUR_IPROYAL_PASSWORD -m aes-256-gcm -u -v

Connexion refusée sur 127.0.0.1:1080

  • Un autre service utilise peut-être déjà le port 1080. Vérifiez avec :
sudo ss -ltnp | grep 1080
  • Remplacez SS_LOCAL_PORT dans le fichier d'environnement par une autre valeur, par exemple 1081, redémarrez le service et mettez à jour vos commandes client.
  • Confirmez que le service systemd est réellement en cours d'exécution :
systemctl is-active iproyal-shadowsocks

Délais d'attente ou débit lent

  • Essayez un autre point de terminaison ou une autre région IPRoyal si votre tableau de bord propose plusieurs emplacements.
  • Testez en mode TCP uniquement en supprimant -u de la ligne ExecStart si le point de terminaison ne prend pas en charge UDP.
  • Vérifiez votre pare-feu local et vos politiques réseau. Certains réseaux d'entreprise ou universitaires bloquent les ports sortants non standard.
  • Réduisez les valeurs de délai d'attente uniquement pour les tests ; des délais très courts peuvent provoquer de faux échecs sur les liaisons lentes.

Le trafic du navigateur n'utilise pas le proxy

  • Dans Firefox, assurez-vous que SOCKS v5 est sélectionné et que Proxy DNS lors de l'utilisation de SOCKS v5 est activé.
  • Si vous utilisez les paramètres GNOME, rappelez-vous que seules certaines applications respectent le proxy système.
  • Testez la même destination avec curl --socks5-hostname pour confirmer que l'écouteur SOCKS5 local fonctionne indépendamment du navigateur.

Résumé

Vous avez configuré un point de terminaison IPRoyal Shadowsocks sous Linux en installant shadowsocks-libev, en créant une configuration client locale, en l'exécutant en tant que service systemd et en vérifiant l'IP sortante via un écouteur SOCKS5 local. Vous avez également appris à acheminer curl, Git, Python requests et le trafic du navigateur via 127.0.0.1:1080, ainsi qu'à résoudre les problèmes courants d'authentification, de port, de DNS et de délai d'attente. IPRoyal est un fournisseur à envisager lorsque vous avez besoin de proxys résidentiels, ISP ou datacenter avec prise en charge de SOCKS5 et de type Shadowsocks ; confirmez toujours le protocole exact et les identifiants dans le tableau de bord de votre fournisseur avant de configurer les clients.