Un proxy SOCKS avec un tunnel SSH

En informatique, un proxy est un intermédiaire. On en trouve énormément en entreprise, où ce composant est placé aux extrêmités sur réseau, pour filtrer ou appliquer des transformations sur les connexions entrantes et sortantes.

Je suis actuellement dans un pays hors UE, et mes applications de streaming habituelles - et accessibles en Belgique - sont volontairement bloquées, malgré que j’ai bien activé la fonctionnalité de “voyage”. Grosso modo,

  1. Une fonction de localisation basée sur l’adresse IP a été achetée par le fournisseur,
  2. Détecte que l’adresse IP actuelle est basée en Suisse,
  3. Et décide de la bloquer, parce que.

Le proxy qui m’intéresse tout particulièrement ici est un proxy de type SOCKS, qui s’applique directement au niveau de la session (cf. Couche 5 du modèle OSI). Ce type de proxy se fiche totalement que vous lui envoyiez du trafic HTTP, Gopher ou FTP ; il va juste l’encapsuler et le recracher comme si la requête venait de lui. C’est un peu le principe du téléphone arabe, auquel on pouvait jouer étant plus petit - minus la déformation de l’information.

Le seul prérequis consiste quand même à avoir (dans mon cas) un serveur type VPS dont l’adresse IP correspond à une localisation dans l’UE. Hetzner ou OVH feront parfaitement l’emploi.

Dans ce cas-ci, le FAI en Suisse verra une connexion chiffrée vers la Finlande, tandis que le serveur qui streame le contenu verra une requête provenant de Finlande. Concrètement, nous allons :

  1. Ouvrir un tunnel SSH avec la commande ssh -N -D 127.0.0.1:9090 user@server (où il faut (évidemment) remplacer user et server hein). Mais même pas besoin d’accès root ou quoique ce soit, il suffit vraiment de juste un accès en SSH. Le paramètre -N indique au client SSH qu’aucune commande ne sera à exécuter, tandis que le paramètre -D indique que nous créons un forwarding dynamique ; c’est ce paramètre spécifique qui transforme la connexion en proxy SOCKS.
  2. Ensuite, il suffit de changer la manière dont Firefox 1 de la manière suivante : - ici, notre proxy est accessible en localhost sur le port 9090 - c’est là que l’on va faire transiter tout le trafic qui sort du navigateur, avec les paramètres suivants :
    • Hôte : localhost,
    • Port : 9090,
    • Type : SOCKSv5

Easy. Et la géolocalisation liée à la censure, c’est quand même sacrément inutile.


  1. Parce que c’est le seul navigateur qui vaille le coup. ↩︎