# Comment appliquer le SSH Proxy Socks à tout le système?

**URL:** <https://www.debian-fr.org/t/comment-appliquer-le-ssh-proxy-socks-a-tout-le-systeme/90966>\
**Category:** Support Debian\
**Created:** [Mars 3, 2025, 8:34 UTC](https://www.debian-fr.org/t/comment-appliquer-le-ssh-proxy-socks-a-tout-le-systeme/90966 "2025-03-03T08:34:00Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![fluo](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/f/e9bcb4/32.png) [@fluo](https://www.debian-fr.org/u/fluo)\
**Post date:** [Mars 3, 2025, 8:34 UTC](https://www.debian-fr.org/t/comment-appliquer-le-ssh-proxy-socks-a-tout-le-systeme/90966/1 "2025-03-03T08:34:00Z")

</div>

Bonjour,

j’ai crée le socket local d’un tunnel ssh qui permet de se connecter à une machine proxy, en tapant la commande :

`$ ssh foo@ip_proxy -p 443 -D 8888`

je sais qu’on peut utiliser ce SSH Proxy Socks pour tout le système, en utilisant NetworkManager.

Pour cela, il suffit d’aller dans Paramètres \> Réseau \> Serveur mandataire, puis on saisi l’adresse du socket local, donc ici 127.0.0.1:8888, ainsi, il n’y a plus besoin d’aller dans les paramètres de n’importe quelle application cliente (comme chrome, firefox, thunderbird, etc) pour configurer le proxy socks, car tout l’internet de la machine passe par le proxy socks.

Le problème, est que je ne souhaite pas être dépendant de NetworkManager, je voudrais appliquer le proxy socks à tout le système en ligne de commande.

Pour cela, j’ai fouillé dans les fichiers de configuration de NetworkManager dans /etc/ pour savoir comment il a fait, mais je n’ai rien trouvé.

La commande `iptables -v -L -n` ne donne rien non plus.

Je me dit que peut-être qu’il faut toucher un ou des fichiers du dossier /proc/sys/net/…, ou /et passer par iptables.

Par contre, en tapant la commande `set | egrep -i proxy` ou `env | egrep -i proxy`, je remarque que NetworkManager a ajouté deux variables d’environnement qui sont all\_proxy et ALL\_PROXY :

```
all_proxy=socks://127.0.0.1:8888/
ALL_PROXY=socks://127.0.0.1:8888/

```

J’ai testé ces variables d’environnements en les ajoutant dans le fichier `~/.profile` de mon utilisateur de session, comme ceci :

```
export all_proxy=socks://127.0.0.1:8888/
export ALL_PROXY=socks://127.0.0.1:8888/

```

J’ai vu aussi dans la doc de NetworkManager, qu’il utilisait un fichier PAC et la fonction javascript FindProxyForURL() : [proxy: NetworkManager Reference Manual](https://networkmanager.dev/docs/api/latest/settings-proxy.html)

Puis, après reboot, et en retapant la commande ssh `foo@ip_proxy -p 443 -D 8888`, et en ouvrant chrome, ça ne marche pas.

Une idée ?

---

<div class="post-metadata">

**Author:** ![AnonymousCoward](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f9ae1b/32.png) [@AnonymousCoward](https://www.debian-fr.org/u/AnonymousCoward)\
**Post date:** [Mars 3, 2025, 10:27 UTC](https://www.debian-fr.org/t/comment-appliquer-le-ssh-proxy-socks-a-tout-le-systeme/90966/2 "2025-03-03T10:27:32Z")

</div>

Bonjour,

Il y a aussi un moyen de faire un VPN avec ssh, chercher «&nbsp;VIRTUAL PRIVATE NETWORKS&nbsp;» dans la [page de man de ssh](https://manpages.debian.org/bookworm/openssh-client/ssh.1.en.html) .

Cependant, ssh fonctionne avec TCP. Or, faire passer du TCP par-dessus du TCP pose des problèmes.  
On peut trouver des informations à ce sujet en recherchant «&nbsp;TCP meltdown&nbsp;» sur le web. [Ici, pour Wikipédia](https://en.wikipedia.org/wiki/Tunneling_protocol#TCP_meltdown_problem) .

OpenVPN, à ma connaissance, utilise des techniques pour mitiger le problème du TCP meltdown lorsqu’il est configuré pour fonctionner en mode TCP.  
Je suggère donc de partir sur l’utilisation d’OpenVPN.

La solution utilisée par défaut par OpenVPN pour faire passer «&nbsp;tout&nbsp;» le trafic réseau via le VPN fonctionne relativement bien.  
Si tu veux améliorer ce point, il faudra bosser cette documentation : [https://www.wireguard.com/netns/](https://www.wireguard.com/netns/)  
( OpenVPN utilise la technique " Overriding The Default Route" )

–  
AnonymousCoward

---

<div class="post-metadata">

**Author:** ![fran.b](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/f/d78d45/32.png) [@fran.b](https://www.debian-fr.org/u/fran.b)\
**Post date:** [Mars 3, 2025, 11:03 UTC](https://www.debian-fr.org/t/comment-appliquer-le-ssh-proxy-socks-a-tout-le-systeme/90966/3 "2025-03-03T11:03:31Z")

</div>

Sinon, renseignes toi sur redsocks (avec des règles iptables effectivement), mais ous networkmanager, je crois qu’il suffit de rajouter

```auto
[proxy]
method=auto
socks=127.0.0.1:3128
```

dans /etc/NetworkManager/system-connections/nom\_de\_la\_connexion.nmconnection mais pas sur que ça fonctionne. Je crois que redsocks est la solution la plus complète

---

<div class="post-metadata">

**Author:** ![Zargos](https://www.debian-fr.org/user_avatar/www.debian-fr.org/zargos/32/10889_2.png) [@Zargos](https://www.debian-fr.org/u/Zargos)\
**Post date:** [Mars 3, 2025, 3:51 UTC](https://www.debian-fr.org/t/comment-appliquer-le-ssh-proxy-socks-a-tout-le-systeme/90966/4 "2025-03-03T15:51:20Z")

</div>

quel est l’objectif de ce proxy?

---

<div class="post-metadata">

**Author:** ![fluo](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/f/e9bcb4/32.png) [@fluo](https://www.debian-fr.org/u/fluo)\
**Post date:** [Mars 5, 2025, 3:35 UTC](https://www.debian-fr.org/t/comment-appliquer-le-ssh-proxy-socks-a-tout-le-systeme/90966/5 "2025-03-05T15:35:49Z")

</div>

Merci pour vos réponses.

En faite, je crois que ça ne sert à rien de rediriger tous les packets de la chaine OUTPUT ou de la chaine POSTROUTING vers le port local du SOCKS, car d’après la page [SOCKS — Wikipédia](https://fr.m.wikipedia.org/wiki/SOCKS), SOCKS est un «&nbsp;protocole&nbsp;», càd que le client (comme chrome ou firefox) qui souhaite envoyer ses paquets à la socket local à destination du serveur SOCKS, doit faire un pré-traitement sur ces paquets, càd les mettre au format SOCKS. Donc en gros, chrome ou firefox doivent mettre leurs données http au format SOCKS avant de les envoyer au socket local. Et donc rediriger les paquets http vers le port du socket local avec iptables ne sert à rien, car iptables ne sait pas mettre les paquets http au format SOCKS.

---

<div class="post-metadata">

**Author:** ![droopy191](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/d/c89c15/32.png) [@droopy191](https://www.debian-fr.org/u/droopy191)\
**Post date:** [Mars 5, 2025, 3:55 UTC](https://www.debian-fr.org/t/comment-appliquer-le-ssh-proxy-socks-a-tout-le-systeme/90966/6 "2025-03-05T15:55:34Z")

</div>

Salut,

En effet il faut que l’application parle socks.  
Un tunnel ssh établi qui écoute en local.  
Avec Firefox, et le plugin qui va bien, ca va marcher. EDIT, pour firefox: FoxyProxy.

Ce n’est pas le cas de toutes les applications.

---

<div class="post-metadata">

**Author:** ![fran.b](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/f/d78d45/32.png) [@fran.b](https://www.debian-fr.org/u/fran.b)\
**Post date:** [Mars 5, 2025, 4:30 UTC](https://www.debian-fr.org/t/comment-appliquer-le-ssh-proxy-socks-a-tout-le-systeme/90966/7 "2025-03-05T16:30:21Z")

</div>

Je crois que c’est le role de redsocks, de ce que je vois:

1. install de redsocks:

```auto
apt install redsocks
```

1. Installation de la «tuyauterie» redsocks → proxy socks (en 3128): fichier /etc/redsocks.conf

```auto
base {
    log_debug = off;
    log_info = on;
    log = stderr;
    daemon = on;
    redirector = iptables;
}

redsocks {
    local_ip = 127.0.0.1;
    local_port = 12345;
    ip = 127.0.0.1;
    port = 3128;
    type = socks5;
}
```

1. Règles de dérivation:

```auto
iptables -t nat -N REDSOCKS
iptables -t nat -A REDSOCKS -d 0.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS -d 10.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS -d 127.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS -d 192.168.0.0/16 -j RETURN
iptables -t nat -A REDSOCKS -p tcp -j REDIRECT --to-ports 12345
iptables -t nat -A OUTPUT -p tcp -m owner ! --uid-owner redsocks -j REDSOCKS
```

(redsocks est l’utilisateur du démon redsocks)

Ce sont des notes que j’avais prises mais je n’avais pas développé, ça venait d’un site je pense
