Prefacio: Lo que estoy buscando son instrucciones explícitas, en el mismo formato que el anterior. Es decir, algo así como ejecutar: "... ejecuta el comando X en la máquina A, luego ordena Y en la máquina B ..."
Tengo un proxy de calcetines que funciona desde mi computadora portátil (máquina A) a la máquina B:
[A]$ ssh -ND 8888 B
Puedo configurar Firefox para usar el proxy SOCKS en el puerto local de A 8888
, y la navegación en A funciona. Hasta aquí todo bien.
Pero también tengo un proxy de calcetines entre las máquinas B y C:
[B]$ ssh -ND 8157 C
Entonces puedo navegar en B como si estuviera en C, configurando el proxy de calcetines Firefox de B en 8157
.
¿Hay alguna manera de encadenar los dos proxies para que pueda usar Firefox localmente (en A) mientras uso la conexión a C?
Es decir, de alguna manera reenviar todas las solicitudes de calcetines de Firefox desde A hasta C. A y C no pueden verse directamente, pero tengo acceso SSH root completo en todas partes. Todas las máquinas son Debian.
Tenga en cuenta que no quiero reenviar un solo puerto como el puerto 80, pero quiero un proxy SOCK completamente encadenado .
-L 8888:B:8157
en [A]?ssh -L 8888:B:8157
falla, requiere un parámetro de nombre de host. ¿Puedes dar una respuesta más completa y completa? Si funciona, lo aceptaré.Respuestas:
Acabo de confirmar que esto funcionó con algunas máquinas virtuales:
De una , se abre un túnel hacia adelante puerto desde 8888 a 8157 de forma local en B
-L8888:localhost:8157
. Una vez que haya establecido una conexión con B, el comando remotossh -t -D 8157 user@C
se ejecuta, lo que proporciona a su proxy SOCKS a través C . Por lo que he leído, parece que se requiere '-t', aunque todavía tengo que entender por qué.Tenga en cuenta, este es un comando en el primer anfitrión que invoca ssh dos veces, de A-> B y desde B> C . También puede dividir esto en comandos separados, como se describe a continuación.
Bonificación: por encadenar tres proxies ...
Es decir
A->B->C->D->Internet
Tenga en cuenta que para cada salto, necesita un reenviador de coincidencia adicional
-L
en los hosts anteriores de la cadena.Referencias
fuente
La excelente respuesta de Glallen utilizando SSH hará el trabajo. Sin embargo, la forma correcta de lograr esto es usar el
proxychains
programa. ProxyChains es una herramienta poderosa que le permite aprovechar fácilmente varios servidores proxy al mismo tiempo. Por ejemplo, los piratas informáticos lo utilizan para ocultar su identidad mientras realizan ataques por Internet: al encadenar a un grupo de representantes en todo el mundo, resulta prácticamente imposible que cualquier investigador forense rastree el tráfico hasta ellos. No quiere decir que usted sea un hacker malintencionado: funcionará para muchos casos de uso diferentes. ;)ProxyChains se instala por defecto en algunas distribuciones de Linux (como Kali Linux). En Ubuntu / Debian, por ejemplo, puede instalarlo fácilmente haciendo lo siguiente:
sudo apt-get install proxychains
Proxychains busca un archivo de configuración en
/etc/proxychains.conf
. Una vez que lo tenga instalado, haga una copia de seguridad del archivo de configuración de Proxychains existente (si existe) y cree uno nuevo:mv /etc/proxychains.conf /etc/proxychains-backup.conf
nano /etc/proxychains.conf
Ahora, pegue en esta configuración de ejemplo que he escrito para usted:
En este ejemplo,
192.168.1.1
es la dirección IP del primer servidor proxy SOCKS,8888
es el puerto en el que escucha el primer proxy SOCKS,192.168.1.2
es la dirección IP del segundo servidor proxy SOCKS,8157
es el puerto en el que escucha el segundo proxy SOCKS, Etcétera.Ahora, aproveche proxychains haciendo
proxychains firefox
desde la línea de comandos para iniciar Firefox. (Asegúrese de que Firefox esté cerrado primero.) Ahora, cada vez que Firefox realiza una conexión saliente, el programa proxychains encapsulará el tráfico de manera que se enviará a través de todos los servidores que especificó en este archivo de configuración. Para que quede claro, en sus preferencias de Firefox, no debe especificar NINGÚN servidor proxy: los proxychains se encargarán de todo lo que esté detrás de escena.Tenga en cuenta que, a efectos de resolución de problemas, probablemente debería intentar que funcione con 1 proxy a la vez antes de probar los 3.;)
Referencias
proxychains-ng
(una bifurcación de las proxychains originales que aún se mantiene en 2015): https://github.com/rofl0r/proxychains-ngfuente