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 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
.local
.
Teniendo en cuenta el diagrama de red superior podemos ver lo siguiente:
190.121.105.243
. Sea este punto de acceso público nuestro servidorremoto
.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
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:
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
.-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.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
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.25000
.192.168.1.252:3306
.[✔] Local [ ] Remote [ ] Dynamic
.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:
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:
servidorremoto
.destino:puerto
final para el túnel.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í: