Use ssh con una interfaz de red específica

38

Estoy usando openconnectpara conectarme a vpn. Después de ingresar mis credenciales, obtengo esto:

POST https://domain.name/...
Got CONNECT response: HTTP/1.1 200 OK
CSTP connected. DPD 30, Keepalive 30
Connected tun0 as xxx.xxx.xxx.xxx, using SSL
Established DTLS connection

Ejecutar ifconfigmuestra que tengo una nueva interfaz de red tun0con una determinada dirección IP.

Pregunta: ¿Cómo sshuso solo la interfaz de red tun0para poder acceder a las computadoras en esa red privada?

Editar:

Mi configuración de red ( route -n) parece ser esta:

172.16.194.0    0.0.0.0         255.255.255.0   U     0      0        0 vmnet8
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
172.16.25.0     0.0.0.0         255.255.255.0   U     0      0        0 vmnet1
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth0
0.0.0.0         192.168.0.1     0.0.0.0         UG    100    0        0 eth0
axel22
fuente
¿Puedes dar más detalles sobre la configuración de tu red? Con el enrutamiento adecuado, cualquier tráfico destinado a la red conectada a tun0 utilizará esa interfaz.
Eli Heady

Respuestas:

45

No es el cliente ssh el que decide a través de qué interfaz deben ir los paquetes TCP, es el núcleo. En resumen, SSH le pide al kernel que abra una conexión a una determinada dirección IP, y el kernel decide qué interfaz se utilizará consultando las tablas de enrutamiento.

(Lo siguiente asume que está en GNU / Linux; el concepto general es el mismo para todos los Unices, pero los detalles de los comandos que se ejecutan y la forma en que se formatea la salida pueden variar).

Puede mostrar las tablas de enrutamiento del núcleo con los comandos route -n y / o ip route show .

OpenConnect debería haber agregado una línea para la tun0interfaz; las conexiones a cualquier dirección que coincida con esa línea se enrutarán a través de esa interfaz. Por ejemplo, al ejecutar route -nen mi computadora portátil obtengo el siguiente resultado:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.30.0.1       0.0.0.0         UG    0      0        0 eth0
10.30.0.0       0.0.0.0         255.255.255.0   U     1      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth0
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0

Esto significa que las conexiones a los hosts en la red 192.168.122.0/24 (es decir, las direcciones 192.168.122.0 a 192.168.122.255 según la notación CIDR ) se enrutarán a través de la interfaz virbr0; aquellos a 169.254.0.0/16 y 10.30.0.0/24 pasarán eth0, y cualquier otra cosa (la línea 0.0.0.0) se enrutará a través de eth0 al host de puerta de enlace 10.30.0.1.

Riccardo Murri
fuente
Gracias por aclarar esto para mí, parece que openconnectno agregó una línea para la tun0interfaz. Supongo que debería hacer esto manualmente.
axel22
1
@ axel22 Puede echar un vistazo aquí: bbs.archlinux.org/viewtopic.php?id=69064 para un script que usa openconnect y configura las rutas.
Riccardo Murri
@RiccardoMurri ¿Desea responder a mi pregunta
Rahul Gautam
7

No sé cuándo se presentó, pero el cliente OpenSSH en RHEL7 tiene esto en su página de manual:

 -b bind_address
         Use bind_address on the local machine as the source address of the connection.  Only useful on systems with more than one address.

No es tan bueno como poder elegir la interfaz, pero está cerca.

ugob
fuente
También la -Bbandera, que parece permitir especificar el nombre de la interfaz de red a utilizar.
Henrik
La opción -b bind_addressno funcionó para mí, de alguna manera. Cambiar las rutas temporalmente debería funcionar. Por cierto: la -Bopción no existe en la versión SSH que viene con Ubuntu.
Juan
2

Si está utilizando Network Manager para administrar sus conexiones a Internet (como es el administrador predeterminado en muchos sistemas), es posible que desee instalar ambos openconnecty network-manager-openconnect.

Una vez que el complemento OpenConnect esté instalado para Network Manager, abra Network Manager y haga clic en el +icono en la esquina inferior izquierda. Debería tener un cuadro combinado con la opción VPN y luego la capacidad de seleccionar VPN compatible con OpenConnect .

Al usar Network Manager para interactuar con OpenConnect, sus rutas aparecerán automáticamente y lo ayudarán a conectarse a la VPN. Esto es especialmente útil para acceder a los servidores a través de VPN, como la forma en que FireHost hace las cosas.

earthmeLon
fuente
1

Solo la adición de una respuesta. Puede usar el -bindicador y definir su IP de origen en el momento del acceso.

Formato + Ejemplo

ssh -b interface-ip remote-ip
ssh -b 10.11.22.40 10.11.22.38 
Shafiq
fuente