Pour faire ce que vous voulez, je vous recommande sshuttle.
Vous l'utilisez comme ceci :
./sshuttle -r [email protected] 0.0.0.0/0 -vv
Il tunnelisera automatiquement tout votre trafic TCP pour vous. Vous pouvez ajouter le --dns
argument pour qu'il tunnelise également votre trafic DNS. Le serveur distant n'a besoin que de Python installé.
Si vous souhaitez uniquement tunneliser des programmes spécifiques, je vous recommande les proxychains.
Une fois installé, démarrez votre proxy ssh socks comme ceci :
ssh -fNTD 127.0.0.1:<local port> [email protected]
Cela démarrera un proxy "SOCKS" écoutant sur
Modifiez ensuite /etc/proxychains.conf pour qu'il pointe vers le même port que
socks5 127.0.0.1 <localport>
Démarrez enfin votre programme que vous souhaitez utiliser comme proxy :
proxychains <program name>
Cela devrait fonctionner. Cependant, quelques programmes auront du mal à fonctionner avec les chaînes proxy. Gardez également à l'esprit qu'avec Firefox, vous devez modifier des éléments supplémentaires sous about:config pour le forcer à effectuer des recherches DNS via le proxy au lieu de le contourner.
Comme note supplémentaire, sur les navigateurs Web. S'ils prennent en charge les proxys chaussettes, vous n'avez rien à faire de plus pour qu'ils utilisent le tunnel ssh mentionné ci-dessus, entrez simplement 127.0.0.1 pour le serveur proxy SOCKS et le
MODIFICATION 29/03/16
Étant donné que ce message reçoit encore des votes positifs, j'ai pensé le mettre à jour. Proxychains est toujours dans la plupart des dépôts Linux et fonctionne toujours sous Linux. Cependant, le projet est effectivement abandonné et ne fonctionne pas sur OSX. Pour Linux ou OSX, je recommande fortement la mise à niveau vers un fork toujours maintenu :proxychains-ng :https://github.com/rofl0r/proxychains-ng
En plus de fonctionner à la fois sous Linux et OSX, il est facile à compiler et offre également une bien meilleure prise en charge du tunneling DNS.
Je devrais également mentionner une autre option, qui est les chaussettes rouges. Cela fonctionne de la même manière que proxychains(-ng) et est également probablement dans votre référentiel dist :https://github.com/darkk/redsocks
MODIFIER 27/11/19 Si vous suivez la route proxychains, veuillez utiliser proxychains-ng. Il y a quelques corrections de bogues sérieuses sur la version héritée, comme :https://github.com/rofl0r/proxychains-ng/issues/292
man ssh
en donne un exemple précis. Un vpn basé sur ssh :
SSH-BASED VIRTUAL PRIVATE NETWORKS
ssh contains support for Virtual Private Network (VPN) tunnelling using
the tun(4) network pseudo-device, allowing two networks to be joined
securely. The sshd_config(5) configuration option PermitTunnel controls
whether the server supports this, and at what level (layer 2 or 3 traf-
fic).
The following example would connect client network 10.0.50.0/24 with
remote network 10.0.99.0/24, provided that the SSH server running on the
gateway to the remote network, at 192.168.1.15, allows it:
# ssh -f -w 0:1 192.168.1.15 true
# ifconfig tun0 10.0.50.1 10.0.99.1 netmask 255.255.255.252
~~ couper ~~
Since a SSH-based setup entails a fair amount of overhead, it may be more
suited to temporary setups, such as for wireless VPNs. More permanent
VPNs are better provided by tools such as ipsecctl(8) and isakmpd(8).
Une fois que vous avez cette nouvelle interface en place, vous n'avez plus qu'à en faire la route par défaut, ce qui est une autre question.
Recherchez l'option "Tunnel" dans ssh. Cela crée un périphérique de tunnel auquel vous pouvez attribuer une adresse IP, puis vous modifiez la route par défaut pour utiliser ce tunnel.