Utiliser un proxy Squid via un tunnel SSH inverse pour accéder à internet

Publié le 03 January 2019

Ça c’est du titre qui en impose ! Personne n’a rien compris, y compris moi.

Je vais vous expliquer ma problématique. On m’a fourni un serveur de test sous Ubuntu 18.04. Je dois y installer l’applicatif Zabbix via les dépôts et faire quelques tests pour valider une procédure. Le problème est que ce serveur n’a pas accès à internet, ni a aucune autre connexion sortantes. Seules les connexions entrantes depuis une petite plage d’IP (dont la mienne) sont autorisées. Un schéma pour mieux visualiser la situation :

Dans ces conditions, impossible d’installer Zabbix via les dépôts, puisque l’accès internet n’est pas possible. J’ai donc installé Squid sur mon ordinateur (un Ubuntu 18.04 lui aussi), pour qu’il serve de proxy entre le serveur et internet : apt-get install squid

Ensuite je me suis connecté en SSH au serveur, en montant au passage un tunnel SSH inverse pour permettre la communication serveur → ordinateur : ssh -R 3128:localhost:3128 root@1.2.3.4 1.2.3.4 est l’IP du serveur et 3128 est le port Squid par défaut. Avec cette commande, le port 3128 sur le serveur sera automatiquement redirigé vers le port 3128 de mon ordinateur. C’est un peu comme si Squid avait été installé en local sur le serveur mais avait quand même accès à internet.

En pratique, les données vers internet vont suivre ce trajet :

Il ne reste plus qu’à modifier la configuration de Aptitude pour qu’il utilise le proxy Squid. Il faut créer le fichier /etc/apt/apt.conf et mettre dedans :

Acquire::http {
        Proxy "http://127.0.0.1:3128";
};