En el anterior artículo, hemos explicado cómo se arranca un PC con
Hercules, cómo hemos conseguido una sesión TSO en nuestro emulador de
terminal 3270 y hemos establecido una sesión TSO no-SNA con el hercules
bajo una pila TCP/IP proporcionada por el propio Hercules pero que emula
un terminal 3278 conectada a una Unidad de Control IBM 3174.
Es decir, que ni tenemos red real, ni SNA, ni TCP/IP, ni nada. Por lo
que un acceso de otro PC de la LAN a nuestro mainframe es imposible. De
hecho, si desde otro PC hacemos un Telnet 3270 a la IP de nuestro equipo
que corre Hercules, se establecerá otra sesión TSO, pero del pool de
terminales de Hercules que está emulando una red real, y cogerá la
dirección 0702, es decir, una sesión VTAM local no-SNA. Pero... ¿Que
hacemos para que el z/OS se comunique directamente por TCP/IP y así
conseguir que se pueda conectar desde cualquier PC a un DB2 por un
puerto?.
Lo que hay que hacer es crear una tarjeta de red en el Hercules, para
que el z/OS crea que tiene una tarjeta de red real (OSA) por la que
puede correr tráfico TCP/IP y por el cual el CICS, DB2, y hasta las
propias sesiones TSO puedan comunicarse.
Para definir un enlace de este tipo, primero debemos saber como
funciona: Bajo GNU/Linux, se utiliza un dispositivo virtual TUN/TAP, ya
que hercules no funciona con dispositivos de red reales. Para ello, se
crea un enlace CTC virtual que comunicará el Hercules con la pila TCP/IP
de GNU/Linux. Recordemos que Hercules ya hace uso del TCP/IP, pero solo
para emular dispositivos de terminales VTAM locales no-SNA. El gráfico
siguiente muestra la configuración que se desea realizar:
+--------------------------------+
| GNU/Linux Debian |
| |
+-------------+ |
| Hercules | +-------------+
|-------------| | eth0 |
| z/OS 1.6 | TCP/IP ------------------> Red LAN
| TCP/IP | |192.168.101.7|
|-------------| | +-------------+
| CTCA | | |
|192.168.101.8| | |
+------|------+ 10.0.0.2 |
| /dev/tun tun0 |
| | | |
| +----------------+ |
| Virtual CTC link |
| |
+--------------------------------+
Usando el sistema TUN/TAP, podemos crear un enlace de red virtual que
luego podremos conectarlo a la tarjeta de red real. Por un lado del TUN,
el z/OS verá la dirección IP 192.168.101.8, que es la que utilizaremos
para conectarnos desde el exterior y a la que daremos al z/OS para que
todo tráfico que vaya a esa IP, sea respondida por z/OS. En el otro lado
del enlace CTC, tendremos una dirección intermedia ficticia con la IP
10.0.0.2 que es el otro lado del dispositivo TUN, y este sistema enlaza
ambas direcciones.
Luego, se le definiría en Linux una ruta desde la 10.0.0.2 a la
192.168.101.7 que es la IP real de nuestra máquina GNU/Linux y
la cual tiene el dispositivo eth0, que haría el enrutado.
Es decir, cuando todo esté configurado, si accedemos a 192.168.101.8
desde cualquier punto de la red, en realidad accederemos a la
192.168.101.7 y luego nos enrutará directamente al Hercules, con lo que
tendríamos una conexión TCP/IP directa con el z/OS.
Sin más, definiremos en enlace en hercules añadiendo la siguiente linea
en el fichero de configuración hercules.cnf:
0E20.2 CTCI 192.168.101.8 10.0.0.2
Se deben definir dos direcciones: Una para la transmisión y otra para
la recepción, de ahí el 0E20.2, porque las direcciones IODEVICEs
correspondientes serán 0E20 y 0E21. La razón por la que hemos elegido
estas direcciones, es porque en el IODF del z/OS hay definidos esos
dispositivos del tipo 3088 que se utilizan para enlaces CTCI y/o OSA,
como he explicado en la pasada entrega y que está documentado en las
instrucciones del AD/CD.
Los siguientes dos parámetros nos definirán las direcciones IP de los
extremos del TUN/TAP: 192.168.101.8, que es la dirección de red que verá
el z/OS y que hemos obtenido del administrador de red, y la 10.0.0.2,
una dirección interna inventada que verá GNU/Linux y por la cual el
driver TUN/TAP poseerá.
Con esto, la definición para el fichero de configuración de Hercules
está realizada.
Creación del enlace TUN/TAP en GNU/Linux
Si no encontramos nada en /dev/net/tun, significa que el sistema
TUN/TAP no está instalado o configurado. Si tenemos un kernel mayor que
2.4, el sistema tun/tap viene con el kernel, pero si no, habrá que
recompilar con esa opción habilitada.
Los siguientes comandos (como root) crearán un dispositivo TUN:
mkdir /dev/net mknod /dev/net/tun c 10 200 chgrp root /dev/net/tun chmod g+w /dev/net/tun chmod o-r /dev/net/tun
Luego, editar el fichero /etc/modules.conf añadiendo la siguiente
línea:
alias char-major-10-200 tun
Esto hará que el módulo se cargue cada vez que Hercules reclame la
apertura de ese enlace. Esto se hace mediante a ejecución de hercules
del fichero /usr/local/bin/hercifc quien es quien controla el enlace
virtual. Para ello también deberemos configurar este fichero con los
permisos adecuados, en nuestro caso con los comandos siguientes:
chgrp root /usr/local/bin/hercifc chmod 4750 /usr/local/bin/hercifc
Como se deberá usar el IP-Forwarding para el enrutado entre el
dispositivo TUN y la red real, ejecutando lo siguiente:
echo "1" > /proc/sys/net/ipv4/ip_forward echo "1" > /proc/sys/net/ipv4/conf/tun0/proxy_arp
El siguiente comando habilita el forwarding IP de la tarjeta de red
virtual a la real:
echo "1" > /proc/sys/net/ipv4/conf/eth0/proxy_arp
Y, por último, definiremos una ruta en GNU/Linux para que sepa que todo
lo que sea de 192.168.1.8 se vaya directamente a nuestro recién creado
dispositivo TUN:
route add 192.168.101.8 dev tun0
Enrutado en los PCs Clientes
Este paso es opcional, pero no está de más ejecutarlo en todo PC de la
red el cual queramos que entre en la máquina hercules, pero por el
enlace CTC:
route add 192.168.101.8 mask 255.255.255.255 192.168.101.7 metric 1
Configuración final de TCP/IP en z/OS
Ya tenemos todo listo: Tenemos el camino desde fuera hacia hercules
creado. Ahora, debemos "customizar" algunos datasets del z/OS para que
escuchen al interfaz correcto con la IP correcta.
TCPIP.PROFILE.TCPIP
Se deben comentar algunas líneas que hacen referencia a los DEVICEs,
los LINKs, los HOMEs y los GATEWAY, e introducir los siguientes
valores:
DEVICE CTCDEV1 CTC E20 LINK CTCLINK1 CTC 0 CTCDEV1 HOME 192.168.101.8 CTCLINK1 GATEWAY ; Network First Hop Link Name Size Subnet Mask Subnet Value 10.0.0.2 = CTCLINK1 1500 HOST DEFAULTNET 10.0.0.2 CTCLINK1 1500 0 START CTCDEV1
Como habréis deducido, la primera línea define el dispositivo de red,
en la dirección E20. Importante también que el GATEWAY refleje el
dispositivo TUN, ya que es por el que va a salir hacia afuera.
TCPIP.TCPIP.DATA
Se cambian los valores de:
DOMAINORIGIN midominio.com
Y:
NSINTERADDR 195.235.113.3
Siempre y cuando Internet lo tengas desde Telefónica, ya que su DNS es
esa IP. Para el resto, introducir el DNS que utilicéis en la red.
TCPIP.HOSTS.LOCAL
Se cambian los valores de:
HOST : 192.168.101.8 : hercules.midominio.com, p390:
Y
NSINTERADDR 195.235.113.3
Con esto, ya está todo configurado. Al hacer IPL de nuevo, Hercules
levantará el interfaz TUN y a partir de ahi, la IP 192.168.1.8 estará
disponible. Si podéis acceder a una sesión TSO por esa IP (y no por la
192.168.1.7), desde cualquier PC de la red, lo habéis conseguido.
NOTA: Es posible que no podáis abrir en modo edición los datasets TCPIP.TCPIP.DATA y el PROFILE. Si se da el caso, desde la master console, introducir el comando STOP TCPIP para parar el proceso. Entonces, si os dejará editarlo sin problemas.


Comentarios