¿Cómo configuro un proxy SOCKS local que canaliza el tráfico a través de SSH?

30

Supongamos que tengo acceso a un servidor SSH que admite túneles, y estoy en una PC que ejecuta * ubuntu, ¿cómo configuro un proxy SOCKS local que canaliza el tráfico a través de ese servidor SSH antes de llegar a Internet?

pzkpfw
fuente

Respuestas:

45

El sshbinario que usa cuando se conecta a un servidor que ejecuta ssh admite la ejecución de un proxy SOCKS de fábrica, con el -Dindicador. Ejemplo:

ssh -D 1337 -f -C -q -N user@remote -p 22
  • -D 1337le dice sshque inicie un servidor SOCKS en el puerto 1337 localmente.
  • -f bifurca el proceso en segundo plano.
  • -C Activa la compresión.
  • -q habilita el "Modo silencioso", ya que el propósito aquí es solo hacer un túnel, realmente no nos importa la salida de errores y demás.
  • -Ndice sshque no se enviarán comandos (se -fqueja si no especificamos esto).
  • -pespecifica qué puerto usar; obviamente, este valor predeterminado es 22, por lo que la declaración anterior no tiene sentido, pero se incluye para mayor claridad.

Cuando su servidor SOCKS está en funcionamiento, simplemente debe asegurarse de que su aplicación (generalmente un navegador web) esté intentando conectarse al proxy SOCKS local, y no a Internet normal.

En Firefox 29 (explicado aquí como ejemplo), esto se logra yendo al menú (las tres salchichas en la parte superior derecha), seguido de Preferencias> Avanzado> Red> (Conexión)> Configuración ... - asegúrese de que solo ¡Completa el campo SOCKS! Como su proxy está en el mismo sistema, puede usar localhosto 127.0.0.1apuntar hacia cualquier puerto en el que lo haya configurado en el mismo sistema.

Si necesita que sus solicitudes de DNS también se tunelen (si no lo son, sus búsquedas de DNS revelarán qué sitios web está tratando de visitar), puede verificar en "DNS remoto" o también hacer esta configuración completa about:config. En el último caso, ábralo y establezca estos valores:

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

También puede necesitar esta configuración para excluir ciertos dominios o sitios de la tunelización:

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

Esta respuesta fue escrita desde Francia, pero se canalizó a través de Suecia :)

pzkpfw
fuente
Esto solo funcionaría en Firefox.
Braiam
44
De ninguna manera es específico de Firefox, incluí la sección de Firefox como un servicio, ya que eso es para lo que la gente usa el túnel SSH, funcionaría en cualquier aplicación que admita SOCKS proxies (a ssh no le importa).
pzkpfw
2
Hablando de configurar el navegador para usar el proxy. Si usa google chrome , deberá declarar el proxy en la configuración de red de ubuntu, ya que esto es lo que usará google chrome. Las opciones de CLI no oficiales han estado disponibles para declarar el proxy sin esto. Pero desde hace algunas semanas esto ya no es posible.
MadMike
Gracias, me sacaste del infierno. Y solo llegué allí porque no leí tu respuesta correctamente hace unas 10 horas. Debería haber prestado atención -Dy -pparte.
Lakesare
También más fácil de recordar:ssh -D 1337 user@host
Alcalyn