Prólogo:
Quién me sigue, sabe que me ha tocado cursar 'Cobol Developer Jr.' en Argentina Programa (facultad de Ciencias Económicas de la UBA)
sin tener acceso a la práctica en mainframe (cuando otros turnos en paralelo al mío han tenido el acceso), y eso me ha llevado a la investigación
sobre como poder practicar los temas del curso para no perderme en teorías sin ejercitación práctica como se pretendió impartirlo.
Más allá de no haber comprendido el porqué de esta situación, ya que el acceso al mainframe es lo único que justifica el estudio de cobol, cics etc.
hasta ahora me preguntaba si no se podría haber montado un servidor Hércules que emulara una práctica real (aunque se usara una versión antigua,
y quizás libre de derechos, u otra habilitada para la educación).
A un mes y medio de haber finalizado el curso, he conseguido hacer precisamente eso, configurar una PC para que funcione como servidor
con una instalación de Hércules, accesible desde cualquier otra PC con emulador de terminal y conectada a internet.
Me quedo con la idea que faltó voluntad de parte de la organización, porque tiempo tuvieron bastante entre que terminamos la primera etapa
y nos convocaron para la segunda 6 meses después, y recursos intelectuales sobran (¡se me ocurrió a mi que soy trainee!).
La forma que presento a continuación es la que me gusta porque ya la he usado en la creación de servidores, pero no es la única.
Procedimiento 1:
Para comenzar debemos abrir una cuenta en https://www.noip.com/ esta página ofrece servicios gratuitos de dns para quien tenga una ip dinámica (claro esta que si ya tienes una ip fija en la maquina que actuará de servidor, mucho mejor).
Existen otras páginas que ofrecen este mismo servicio. Puedes usar la que mas te guste.
Una vez registrados en NO-IP, vamos a crear el nombre con el que querramos acceder al servidor, por ejemplo 'hercules.ddns.net' (puede ser otro...).
Ahora vamos a bajar la aplicación 'Dynamic DNS Update Client (DUC)' desde https://www.noip.com/download?page=win y la instalamos. Esta aplicación le indicará al servicio si nuestra ip ha cambiado para que nos puedan encontrar.
Una vez instalada, la ejecutamos e ingresamos los datos de registro que usamos en la página de NO-IP. La aplicación buscará el dns que acabamos de definir y refrescara la ip cada varios minutos.
Un paso muy importante es programar en el modem/router de nuestro proveedor de internet el reenvio de todos los pedidos de acceso al puerto 3270, a la pc que sera el servidor.
En este aspecto, dada la gran cantidad de modelos existente, no puedo ofrecer mucha ayuda...
El siguiente paso será abrir el puerto 3270 de entrada y salida en el firewall de windows.
En la ventana de una carpeta 'Panel de control\Sistema y seguridad\Firewall de Windows Defender' y seleccionamos 'Configuración avanzada'.
Creamos nueva regla de entrada y de salida para el puerto 3270.
En este punto ya solo queda tener instalado y funcionando el Hercules, y con esto terminamos el trabajo en el servidor.
Ahora la configuración del wc3270 en la pc que va a acceder desde internet.
Solo vamos a cambiar el 127.0.0.1 (en hostname) con el que habiamos instalado originariamente por 'hercules.ddns.net' que es el dns que creamos en NO-IP.
Con el hercules encendido, iniciamos la terminal remota y conectará como si estuvieran corriendo en la misma pc.
¡Listo!
A medida que avanzo con mi estudio voy encontrando nuevas formas de hacer las cosas, optimizadas, etc.
Este es el caso de la conexión remota con hercules, ahora a través de TCP/IP.
NOTA: Este procedimiento es totalmente independiente del anterior, y puede coexistir.
Procedimiento 2:
Lo primero que vamos a hacer es modificar el archivo hercules.cnf. Debemos buscar la definicion de red y cambiarla por lo siguiente.
# IP REAL IP z/OS
0E20.2 LCS -n 192.168.0.14 192.168.0.250
En donde 0E20 es la primera de 2 direcciones del adaptador de red. LCS (Lan Channel Station).
192.168.0.14 es la dirección de red física de nuestra pc. En windows desde una ventana de comandos (CMD en la lupa), introduciendo ipconfig, sera la 'Dirección IPv4'
192.168.0.250 es la dirección que querramos asignarle a z/OS.
Estos valores hay que adaptarlos en cada caso al modem/router instalado por el proveedor de internet. En algunos casos el 0 de cada ip puede cambiar por 1, etc.
Ahora iniciamos el Hercules, login con nuestro nombre y contraseña, y vamos al spool con la opción 'M', y la opción '5'.
Dentro del Spool buscamos el JOB TCPIP, y entramos con 'S'.
Buscaremos lo siguiente.
PROFILE DD DISP=SHR,DSN=
El dataset que sigue a la definición de perfil (despues del '=') nos indica donde deberemos hacer las modificaciones para que comience a escuchar el puerto 23 (TELNET) el z/OS.
En este caso el dataset es ADCD.Z111S.TCPPARMS(PROF1). Asi que ahi vamos.
Volvemos al menú principal del ispf y con 3.4 ingresamos ADCD.Z111S.TCPPARMS para que nos indique que miembros contiene. Con 'B' (Browse) nos mostrará los miembros y el que nos interesa editar es 'PROF1'.
Dentro de PROF1 buscamos lo primero que es la definicion del adaptador de red.
000169 ;
000170 ; Hardware definitions:
000171 ;
000172 ; connect via a CTC adapter
000173 ;
000174 ; DEVICE DEFINITION
000175
000176 DEVICE ADM1ETP MPCIPA NONROUTER
000177 LINK OSDL IPAQENET ADM1ETP
000178
000179 ;
Vamos a cambiar las lineas 176 y 177 por las siguientes.
000176 DEVICE LCS1 LCS E20 AUTORESTART
000177 LINK ETH1 ETHERNET 0 LCS1
En la 176 el dispositivo va a ser un LanChannel Station (LCS1) en la direccion E20 que se reiniciara cada vez que inicie z/OS.
En la 177 linkeamos el modulo de ethernet (ETH1), número cero al LCS1.
Ahora buscaremos.
000182 ; HOME internet (IP) addresses of each link in the host.
000183 ;
000184 ; NOTE:
000185 ;
000186 ; The IP addresses for the links of an Offload box are specified in
000187 ; the LINK statements themselves, and should not be in the HOME list.
000188 ;
000189
000190 HOME
000191
000192 192.168.252.167 OSDL
000193 ;
Y vamos a cambiar la linea 192 por la siguiente.
000192 192.168.0.250 ETH1
Esta dirección ip es la que queremos que el z/OS tenga para recibir la conexión de las terminales. La habíamos definido en el hercules.cnf.
ETH1 es el adaptador de ethernet que definimos mas arriba.
Ahora buscamos lo siguiente.
000196 ; IP routing information for the host. All static IP routes should
000197 ; be added here.
000198 ;
000199 BEGINRoutes
000200 ;
000201 ; Direct Routes - Routes that are directly connected to my interfaces.
000202 ;
000203 ; Destination Subnet Mask First Hop Link Name Packet Size
000204 ;
000205 ;ROUTE 204.90.115.0 255.255.255.0 = OSDL MTU 576
000206 ;ROUTE 204.90.115.105 HOST 204.90.115.2 OSDL
000207 ;
000208 ROUTE 192.168.252.0 255.255.255.0 = OSDL MTU DEFAULTSIZE
000209 ROUTE DEFAULT 192.168.252.2 OSDL MTU DEFAULTSIZE
000210 ENDRoutes
000211
000212 ;
Y vamos a cambiar las lineas 208 y 209 por las siguientes.
000208 ROUTE 192.168.0.1 255.255.255.0 = ETH1 MTU DEFAULTSIZE
000209 ROUTE DEFAULT 192.168.0.1 ETH1 MTU DEFAULTSIZE
192.168.0.1 es la puerta de salida del modem/router.
Finalmente un último cambio.
000276 ;
000277 ; Start all the defined devices.
000278 ;
000279
000280 START ADM1ETP
Por lo siguiente
000280 START LCS1
Para que arranque el lan channel station.
Para que los cambios comiencen a funcionar debemos parar el job tcpip y volverlo a arrancar
Con 'm.5' entramos al LOG, y aquí con '/p tcpip' detenemos el JOB. Con '/s tcpip' lo volvemos a arrancar.
Desde la ventana de Hercules si ingresamos 'devlist' podremos ver (si todo fue bien) que aparecen las siguientes lineas.
0:0E20 3088 LCS Port 00 IP (tap0) open busy
0:0E21 3088 LCS Port 00 IP (tap0) open
El 'open busy' indica que z/OS ya esta esperando la conexión de una terminal por TELNET.
Incluso si hacemos un 'PING 192.168.0.250' desde 'cmd' el z/OS nos contestará.
Solo queda generar una terminal que apunte a esta IP para comprobar que todo funciona.
¡Listo!
NOTA: Durante las pruebas he tenido problemas con el redireccionamiento del puerto 23 de la ip del pc a la ip del Hercules.
La solución, una vez que me di cuenta del problema, fue muy fácil.
PortMapper es una pequeña y gratuita utilidad, que reenvia todos los pedidos de conexión de un puerto determinado a otra ip.
Entonces las conexiones al puerto 23 que lleguen a la pc, las enviamos a la ip de z/os.