Para hacer lo que quieres, te recomiendo sshuttle .
Lo usas así:
./sshuttle -r username@sshserver 0.0.0.0/0 -vv
Hará un túnel de todo su tráfico TCP automáticamente para usted. Puede agregar el --dns
argumento para que también haga un túnel en su tráfico DNS. El servidor remoto solo necesita tener Python instalado.
Si solo desea hacer un túnel de programas específicos, recomendaría proxychains .
Una vez que esté instalado, inicie su proxy ssh socks de esta manera:
ssh -fND 127.0.0.1:<local port> username@sshserver
Esto iniciará un proxy "SOCKS" escuchando en <puerto local>.
Luego edite /etc/proxychains.conf para apuntar al mismo puerto que <puerto local>.
Finalmente, inicie su programa que desea proxy-ed así:
proxychains <program name>
Simplemente debería funcionar. Sin embargo, algunos programas tendrán problemas para trabajar con Proxy Chains. También tenga en cuenta que con Firefox, debe cambiar elementos adicionales en about: config para forzarlo a realizar búsquedas de DNS a través del proxy en lugar de omitirlo.
Como nota adicional, en los navegadores web. Si admiten proxies de calcetines, no necesita hacer nada adicional para que usen el túnel ssh mencionado anteriormente, solo ingrese 127.0.0.1 para el servidor proxy SOCKS y el <puerto local> para el puerto proxy.
EDITAR 29/03/16
Dado que esta publicación todavía está viendo algunos votos positivos, pensé en actualizarla. Proxychains todavía está en la mayoría de los repositorios de Linux y aún funciona en Linux. Sin embargo, el proyecto se abandona efectivamente y no funciona en OSX. Para Linux u OSX, recomiendo actualizar a una bifurcación aún mantenida: proxychains-ng: https://github.com/rofl0r/proxychains-ng
Además de trabajar tanto en Linux como en OSX, es fácil de compilar y también tiene un soporte mucho mejor para el túnel DNS.
También debería mencionar otra opción, que son los redsocks. Funciona de manera similar a proxychains (-ng) y también es probable en su repositorio dist: https://github.com/darkk/redsocks