Comment configurer un proxy SOCKS local qui tunnelise le trafic via SSH?

30

Supposons que j'ai accès à un serveur SSH qui prend en charge la tunnellisation et que je suis sur un PC qui exécute * ubuntu, comment configurer un proxy SOCKS local qui tunnelise le trafic via ce serveur SSH avant d'accéder à Internet?

pzkpfw
la source

Réponses:

45

Le sshbinaire que vous utilisez lorsque vous vous connectez à un serveur exécutant ssh prend en charge l'exécution d'un proxy SOCKS prêt à l'emploi, avec l' -Dindicateur. Exemple:

ssh -D 1337 -f -C -q -N user@remote -p 22
  • -D 1337indique sshde lancer un serveur SOCKS sur le port 1337 localement.
  • -f fait passer le processus en arrière-plan.
  • -C Active la compression.
  • -q active le "mode silencieux", car le but ici est uniquement de tunneler, nous ne nous soucions pas vraiment de la sortie d'erreur et autres
  • -Nindique sshqu'aucune commande ne sera envoyée (se -fplaint si nous ne le spécifions pas).
  • -pspécifie le port à utiliser; de toute évidence, cette valeur est par défaut de 22, donc la déclaration ci-dessus est inutile, mais incluse pour plus de clarté.

Lorsque votre serveur SOCKS est opérationnel, vous devez simplement vous assurer que votre application (généralement un navigateur Web) essaie de se connecter au proxy SOCKS local, et non à Internet normal.

Dans Firefox 29 (expliqué ici à titre d'exemple), cela est possible en allant dans le menu (les trois saucisses en haut à droite), puis Préférences> Avancé> Réseau> (Connexion)> Paramètres ... - assurez-vous que vous remplissez le champ SOCKS! Étant donné que votre proxy est sur le même système, vous pouvez utiliser localhostou 127.0.0.1pour pointer vers le port sur lequel vous le définissez sur le même système.

Si vous avez besoin que vos requêtes DNS soient également tunnelisées (si ce n'est pas le cas, vos recherches DNS révéleront les sites Web que vous essayez de visiter), vous pouvez simplement vérifier sur "DNS distant" ou bien effectuer cette configuration complète dans about:config. Dans le dernier cas, ouvrez-le et définissez ces valeurs:

network.proxy.socks : 127.0.0.1
network.proxy.socks_port : 1337
network.proxy.socks.remote_dns : true
network.proxy.socks_version : 5
network.proxy.type : 1

Vous pouvez également avoir besoin de ce paramètre pour exclure certains domaines ou sites du tunneling:

network.proxy.no_proxies_on : localhost, 127.0.0.1, 192.168.0.0/24, .yourcompany.com

Cette réponse a été écrite depuis la France, mais tunnelée via la Suède :)

pzkpfw
la source
Cela ne fonctionnerait que sur Firefox.
Braiam
4
Ce n'est en aucun cas spécifique à Firefox, j'ai inclus la section Firefox en tant que service car c'est généralement pour cela que les gens utilisent le tunneling SSH, cela fonctionnerait dans n'importe quelle application qui prend en charge les proxys SOCKS (ssh s'en fiche).
pzkpfw
2
En parlant de configuration du navigateur pour utiliser le proxy. Si vous utilisez Google Chrome, vous devrez déclarer le proxy dans les paramètres réseau d'Ubuntu, car c'est ce que Google Chrome utilisera. Des options CLI non officielles étaient disponibles pour déclarer le proxy sans cela. Mais il y a quelques semaines, cela n'est plus possible.
MadMike
Merci, tu m'as sorti de l'enfer. Et je ne suis arrivé que parce que je n'ai pas lu correctement votre réponse il y a environ 10 heures. Aurait dû prêter attention -Det se -pséparer.
Lakesare
Aussi plus facile à retenir:ssh -D 1337 user@host
Alcalyn