sshuttle - VPN / SSH

sshuttle est a mi-chemin entre le VPN et le port forwarding SSH.
Il permet en gros, de faire une sorte de VPN avec juste un serveur SSH en face.

Concrètement, je l’utilise surtout lorsque je suis connecté à des réseaux type “Wifi Hotel”.
Je connecte sshuttle vers mon Raspberry chez moi, en écoute en SSH (port 80 et authentification uniquement par clé).
De cette manière tout ce qui sort de mon pc est chiffré quand il passe sur le réseau Wifi, y compris mon trafic Internet, qu’il soit fait par mon navigateur, ou même un simple apt-get.

Il remplace donc avantagement un tunnel SSH avec l’option -D ainsi que l’utilisation de tsocks

Il n’encapsule pas exactement TCP dans TCP, ce qui évite des problèmes de performances réseau.
La partie DNS est “tunnelisée” avec l’option --dns
/!\ UDP (autre que DNS) et ICMP ne passent pas dans le tunnel.

sshuttle est dispo dans les dépots Debian, mais pour moi l’authentification par clé ne fonctionnait pas.
Si c’est toujours le cas, passez donc par github pour l’installation de la dernière version:

$ git clone git://github.com/apenwarr/sshuttle  
$ cd ./sshuttle  

$ curl ip.uggy.org  
x.x.x.x  
$   
$ ./sshuttle --dns -r y.y.y.y:80 0/0  
Connected.  

On ouvre par exemple un autre terminal

$ curl ip.uggy.org  
y.y.y.y  

Avec la commande sshuttle ci-dessus, toutes les connexions (0/0) DNS et TCP passent par le tunnel SSH (OpenSSH ouvert sur le port 80).
Pas besoin donc de configurer son navigateur pour passer par un proxy Socks, ni d’activer l’option network.proxy.socks_remote_dns, ni d’utiliser tsocks.

On peut utiliser aussi utiliser par exemple:

  • l’option -D pour le faire tourner en démon.
  • l’option -x pour exclure des réseaux.

Voir le README pour toutes les informations.