You were redirected here from f1:tunel_ssh.

Túnel de Conexión SSH

Escenario:

“Quiero conectarme al equipo de Facturación Electrónica de Montana, para ver la base de datos. Pero no tenemos acceso directo a ese equipo dentro de la red y justo hoy el Supremo cayó a nivel mundial, todo el primer piso de Prat está en reunión tomando café, y los indígenas se tomaron Luis Durand y Pedro de Valdivia así que tampoco podemos ir físicamente al local”

Pero por suerte:

  • Prat tiene IP pública, a la cual tenemos conectado un acceso SSH.
  • Podemos mentalizar y esquematizar nuestra la red de Prat.

Esquema

Esquema de red de la conexión entre Helpcom y Dacsa Prat. El servidor “PRAT” tiene acceso abierto a internet, pero no así el equipo de servidor de Montana ni otros equipos del local
  • Verde: Puertos abiertos entre el gateway de Prat (la IP pública) y el servidor (.1.100).
  • Rojo: el camino o túnel que construiremos vía SSH.

Procedimiento

Prat tiene IP fija, la cual se puede obtener desde la carpeta de Documentación de Helpcom. Si es posible, es conveniente agregarla como atajo a nuestro archivo de Hosts (ej.: LMHOSTS o %WINDOWSDIR%\SYSTEM32\DRIVERS\ETC\hosts en Windows; /etc/hosts en Linux) para tenerlo siempre al alcance, por medio de la creación de un .tld local:

190.121.105.243  dacsa-central.local
Tomar nota que si se crea este atajo el tld debe ser .local.

Teniendo en cuenta el diagrama de red superior podemos ver lo siguiente:

  • Tenemos acceso directo a la red pública de Dacsa por medio de su IP pública: 190.121.105.243. Sea este punto de acceso público nuestro servidorremoto.
  • En esa IP pública, tenemos un puerto de SSH abierto que nos lleva al servidor de Prat.
  • Desde el servidor de Prat, podemos ver Montana en la misma subred. La dirección del servidor local relativa al servidor de Dacsa es nuestro destino.

Sólo con estos datos, podemos construir nuestro túnel. Abriremos el túnel en el puerto local 25000 y nos llevará al puerto remoto 3306 del equipo de Montana. La estructura general para un túnel de este tipo en SSH es:

ssh -L puertolocal:destino:puertodestino  usuario@servidorremoto

Linux / SSH

ssh -g -L 25000:192.168.1.252:3306 administrador@190.121.105.243
# o, si grabamos la IP de Prat en nuestros hosts:
ssh -g -L 25000:192.168.1.252:3306 administrador@dacsa-central.local

El resultado del túnel es la conexión que muestra el diagrama en rojo:

  1. Nuestro equipo se conectará al servidor de Prat directamente, por medio del puerto abierto en el gateway, al puerto 22 del servidor (SSH).
  2. Al recibir la conexión, nuestro equipo requerirá abrir un segundo puerto local (para él) 25000. Al recibir la conexión de este puerto el servidor lo enlazará a la conexión local (para él) 192.168.1.252:3306.
  3. La opción -g en nuestro túnel permite que el puente permanezca abierto y se puedan conectar aplicaciones locales (para nosotros) a este túnel, por ejemplo Query Browser / SQLYog.
  4. Para el servidor de Montana, la conexión parece venir directo del servidor de Prat.

Ahora que la conexión está activa, podemos conectarnos con un cliente de MySQL a nuestro puerto local, y esto nos dará acceso a la conexión en el servidor remoto. Simplemente en nuestro cliente, o en otra sesión/ventana de terminal si queremos conectar con el cliente de consola:

mysql -h 127.0.0.1 --port 25000 -u helpcom_db -p db_dte_montana

Windows / KiTTY

Configuración del túnel en la pantalla de KiTTY

Para este proceso es conveniente (si no necesario) que tengamos un perfil grabado en KiTTY para el servidor de Prat (o el que vayamos a usar). Cargamos este perfil con Load, lo cual nos pasa los parámetros (servidor, puerto, VT100, etc) a las pantallas de configuración.

En el árbol de configuración de KiTTY vamos a Connection → SSH → Tunnel. Aquí es donde agregamos el túnel como aparece en la imagen con los siguientes parámetros:

  • [ ] Remote ports do the same - deshabilitado.
  • Source port: 25000.
  • Destination: 192.168.1.252:3306.
  • [✔] Local [ ] Remote [ ] Dynamic.
  • Hacemos clic en Add para agregar nuestro túnel a la lista.

Una vez seteado el túnel iniciamos nuestra conexión. Nos pedirá las credenciales del servidor de puente (en este caso Prat). Una vez que queda la ventana de terminal abierta el túnel queda establecido.

Ya con el puente configurado, podemos conectarnos a la base de datos con nuestro cliente de MySQL, por ejemplo Yog / Query Browser:

Accesos Clientes

En la carpeta compartida de Documentación el archivo Accesos Clientes BD.ods tiene un registro de los equipos clientes a los cuales se puede acceder vía túnel Para configurar una conexión de este tipo se puede tomar los datos del archivo y adaptar los puertos y direcciones remotas según sea necesario. Por ejemplo, si quisiéramos conectarnos al equipo de Facturación Electrónica de ByK para ver su base de datos:

Conexiones de una empresa en el archivo de Accesos Clientes
  1. Vemos que la tabla indica que el equipo “Byk”, “Cliente Facturación” dice en la columna de Host “Túnel”, indicando que es posible entrar por un túnel usando el Host con la IP pública.
  2. Vemos que la IP pública está arriba, como Host del equipo “Byk”, “Servidor Central”. Esta IP es la que usamos como servidorremoto.
  3. Dentro de la red local vemos que el equipo cliente de FE tiene IP “.2.252” en el segmento. Agregando el puerto para MySQL, tenemos el destino:puerto final para el túnel.
  4. Escogemos un puerto local para establecer nuestro puente, en este caso escogeremos el 3333.

Ya con estos datos podemos estructurar nuestra conexión túnel:

ssh -g -L 3333:192.168.2.252:3306 administrador@190.82.117.106

Notar como siempre el -g es importante si queremos conectar otro programa, como el Query Browser, a través de este puerto.

El resultado final es un puente que podemos usar como se ve aquí:

tunel_de_conexion_ssh.txt · Última modificación: 2018/10/30 16:12 por lmachuca
CC Attribution-Noncommercial-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0