Enrutamiento de todo el tráfico a través de socks proxy usando ssh -D

9

¿Es alguna manera fácil de enrutar todo el tráfico a través de un proxy ssh con -D?

Puedo configurar aplicaciones específicas individuales para hacer esto, pero me gustaría una configuración que enrute todo el tráfico en la máquina. ¡Gracias por tu ayuda!

grm
fuente
Olvidé decir que estaba en Linux tan idealmente, algo por lo que puedo enrutar usando iptables.
grm

Respuestas:

10

En Linux:

  1. iptables -t nat -A SALIDA! -d 127.0.0.0/8 -j REDIRECT --to 1081
  2. Ejecute el programa que escucha 1081, recupera la dirección de destino real, no redirigida, negocia con el servidor SOCKS y los relés.

He escrito dicho programa para uso privado en Perl (calidad de prototipo) y escribo una versión mejor en C. Todavía no se ha publicado.

Actualización: ahora publicada: http://github.com/vi/socksredirect/ Use prototype.pl. Envíame un aviso si estás interesado en el desarrollo de una mejor versión.

La actualización 2 creó una versión un poco mejor: http://github.com/vi/tcpsocks y un parche para Socat 2: http://github.com/vi/socksredirect/blob/master/socat-2.0.0- b3-REDIRECT.patch

PD: La mayor parte de mi tráfico (y a veces el de algunos vecinos) ahora pasa por tcpsocks-> ssh.

Vi.
fuente
Muy interesante proyecto Vi. ¡Gracias! Voy a echar un vistazo a esto.
grm
Probablemente debería usar más reglas de iptables para seleccionar qué tráfico desea que se socksified. Uso "iptables -t nat -A OUTPUT -j QQQ", luego "iptables -t nat -A QQQ <checks> -j RETURN" y finalmente "iptables -t nat -A QQQ -p tcp -j REDIRECT - -a 1234 ".
Vi.
¡Gracias! Me preguntaba si esto era factible, estaba en mi larga lista de ideas de proyectos para intentar alguna vez.
Tobu
@Tobu, he implementado esto más: ahora hay un parche Socat ( github.com/vi/socksredirect/blob/master/… ) para esto y también un programa tcpsocks liviano ( github.com/vi/tcpsocks )
Vi .
1
@Tanmay, con un dispositivo tun verás solo paquetes TCP y sería difícil decodificarlos en una secuencia de bytes (necesitarías algo así slirp). con REDIRECT o TPROXY solo use usual recvque le da datos decodificados sin encabezados TCP.
Vi.
8

De Avery Pennarun sshuttle funciona de forma similar a Vi 's respuesta , pero requiere menos configuración y obras en BSD y OS X, así como Linux.

efímero
fuente
2

Quizás deberías considerar configurar VPN en su lugar.

Espennilsen
fuente
¿No requeriría eso más acceso en el lado de la puerta de enlace?
grm
Tengo una configuración de servidor VPN (poptop) en casa en Ubuntu. Y en el trabajo solo uso el cliente VPN incorporado en Windows para conectarme a él. Sin molestar a mi administrador de red ni nada.
Espennilsen
1

No creo que haya ninguna forma de hacerlo, pero tal vez puedas probar programas como FreeCap (windows), SocksCap (windows) o proxychains (linux). Estos programas pueden ayudarte un poco.

Pescado al vapor
fuente
0

Depende de qué sistema operativo esté utilizando. Si está en MacOS, hay configuraciones de Proxy globales que deberían ser utilizadas por todas las Aplicaciones, a pesar de que hay algunas que no las cumplen (Firefox, por ejemplo).

Sideshowcoder
fuente
Con MacOS en particular, se debe verificar la confianza en la configuración de proxy global.
chiggsy
-1

También podría usar algo como Proxifier ( http://www.proxifier.com/ ) para Mac o Windows.

Aunque esto realmente no responde tu pregunta.

menta
fuente
la respuesta no está en el punto
Alex H