View this PageEdit this PageUploads to this PageVersions of this PageHomeRecent ChangesSearchHelp Guide

Instalar un túnel OpenVPN entre un Linux y un Solaris; instalar un redir en solaris para ver una maestra desde una red diferente




Friday, 13 June 2008, 4:02:41 pm
Qué se ha hecho para que SIV vez la maestra (lo mismo que pasaba con PCI) La instalación se hace igual que en el caso de PCI que no ve la maestra:

1. Descomprimes en el / el fichero redir-linux.tar.gz o redir-solaris.tar.gz según el S.O. de la estación
Para Linux:
# cd /
# tar -xvzf /tmp/redir-linux.tar.gz
Para Solaris:
# cd /
# cat /tmp/redir-solaris.tar.gz | gzip -dc | tar -xvf -

2. Editas el fichero .autostart del home del usaurio (pci o metro, según sea un PCI o un TCE) para que tenga justo después del "#!/bin/csh" las siguientes líneas (cambiando las ips a las correspondientes de la maestra de esa estación)
distsh2 "pkill redir_relaunch"
distsh2 "pkill redir"
distsh2 "/usr/local/bin/redir_relaunch --lport=502 --caddr=25.10.140.226 --cport=502" &

Y eso es todo lo que hay que hacer para instalar, en principio.

Las estaciones en las que se ha hecho esto son:

Plaza Castilla L10PCI (Linux)
Alto del Arenal L01PCI (Linux)
Miguel Hernández L01PCI (Linux)
Congosto L01PCI (Linux)
Mar de Cristal L08PCI (SOLARIS)
San Lorenzo L04PCI (Linux)
LagoTCE (SOLARIS)
BatánTCE (SOLARIS)

Wednesday, 7 May 2008, 5:43:48 pm
Instalando el redir en solaris Primero se copia de main1:/incoming, el redir.solaris a /usr/local/bin/redir y prog_relauch.solaris a /usr/local/bin/redir_relaunch. Después, en el .autostart, se pone:
distsh2 "pkill redir_relaunch"
distsh2 "pkill redir"
distsh2 "/usr/local/bin/redir_relaunch --lport=502 --caddr=25.10.140.226 --cport=502" &
Además en /usr/local/bin es bueno hacer un enlace simbólico de:
# ln -s /dev/null redir_relaunch.log

Configurando el Linux (PCI) para que use esa unidad maestra Hay que poner la IP del TCE correspondiente en la línea del modbus dentro del .autostart:
setenv PROTOCOLOMODBUS 58.10.50.33:502

Tuesday, 29 April 2008, 7:14:05 pm
Compilando el redir para Solaris En galadriel:/usr/local/src. Los fuentes se han bajado del paquete redir de debian (redir-2.2.1.orig.tar.gz) y el error del getopt.c/getopt.h se arregla editando el Makefile y descomentando los objetos de la línea que empieza por GETOPT_OBJS (de paso, descomentar la que empieza por EXTRA_LIBS o si no, no enlazará; también hay que poner en la de EXTA_CFLAGS un "-Igetopt" sin las comillas antes de la almohadilla), y después:
$ make getopt/getopt.o getopt/getopt1.o
$ cp getopt*.o getopt/
$ make redir
Con eso se tiene el redir para solaris en:
galadriel:/usr/local/src/redir-2.2.1/redir

Wednesday, 23 April 2008, 5:37:59 pm
Pruebas:
En el pupitre_sc
 pupitre_sc# cd /root
 pupitre_sc# ./redir_init_script start
 pupitre_sc# route add -net 10.1.1.0 netmask 255.255.255.0 gw 25.10.10.33
 pupitre_sc# route add -host 18.75.70.41  gw 25.10.10.33
En el TCE
 tce# ndd -set /dev/tcp ip_forwarding 1
 tce# /usr/local/bin/openvpn --remote 18.75.70.41  --dev tun --ifconfig 10.1.1.2 10.1.1.1
En el PCI
 pci# openvpn --remote 58.10.50.33 --dev tun --ifconfig 10.1.1.1 10.1.1.2 &
 pci# route add -host 25.10.200.34 gw 10.1.1.2

NOTA: El redir_init_script contenía:
redir_init_script
#!/bin/sh
# /etc/init.d/redir: start or stop redir.

FLAGS="start 20 2 3 4 5 . stop 20 0 1 6 ."
# NO_RESTART_ON_UPGRADE

test -x /usr/local/sbin/redir -a -x /usr/local/sbin/redir_relaunch || exit 0

RELAUNCHDIR=/var/log
export RELAUNCHDIR

ARGS="--lport=502 --caddr=25.10.140.226 --cport=502"

case "$1" in
  start)
      echo -n "Starting up redir:"
      /sbin/start-stop-daemon --background --make-pidfile --pidfile /var/tmp/red
ir.pid --start --quiet --exec /usr/local/sbin/redir_relaunch -- $ARGS
      sleep 5
      /sbin/route add -net 10.1.1.0 netmask 255.255.255.0 gw 25.10.10.33
      /sbin/route add -host 18.75.70.41  gw 25.10.10.33
      echo "."
    ;;
  stop)
      echo -n "Shutting down redir:"
      /sbin/start-stop-daemon --stop --quiet --pidfile /var/tmp/redir.pid
      echo "."
    ;;
  restart|force-reload)
      $0 stop
      $0 start
    ;;
  *)
      echo "Usage: /etc/init.d/redir {start|stop|restart|force-reload}"
      exit 1
    ;;
esac

exit 0


Wednesday, 23 April 2008, 5:30:12 pm
En el pupitre_sc
1. Copiar el redir desde main1 a /root/redir
2. Copiar el redir_init_script de main1 a /root/redir_init_script
3. Hacer lo siguiente
 mount / -o remount,rw
 cd /usr/local/sbin/
 cp ~/redir .
 cp netbeuidaemon_relaunch redir_relaunch
 mount / -o remount,ro
4. Editar el redir_init_script con la IP de la maestra local
POR HACER:
Lanzarlo y probar...

Wednesday, 23 April 2008, 5:14:30 pm
Solución técnica final
  1. pupitre_sc forwardea el puerto de modbus (502) a la maestra:
    1. instalar redir (la versión de seraphim es Debian 3.1, esta en main1 con el nombre /incoming/redir_debian3.1)
  2. TCE ruta por el túnel entre pupitre_sc y pci
  3. pci se conecta a la IP de pupitre_sc

Friday, 18 April 2008, 6:54:17 pm
Hecho todo lo detallado, FALTA
  • Instalar el openvpn en el solaris
  • configurar los openvpn
  • Coprobar que se conectan
  • Poner las rutas
  • Hacer que se conecten en el arranque del S.O.

Thursday, 3 April 2008, 6:03:05 pm
Para el Solaris Es un Solaris 9, llevamos los paquetes que hemos instalado antes en la máquina de compilación en la máquina final y por último instalamos los programas...
 # cd /tmp
 # scp metro@150.100.122.31:/incoming/libgcc-3.4.6-sol9-x86-local.gz .
 # gzip -d libgcc-3.4.6-sol9-x86-local.gz
 # pkgadd -d libgcc-3.4.6-sol9-x86-local
 # scp metro@150.100.122.31:/incoming/openssl-0.9.8f-sol9-x86-local.gz .
 # gzip -d openssl-0.9.8f-sol9-x86-local.gz
 # pkgadd -d openssl-0.9.8f-sol9-x86-local
 # cd /usr/lib
 # ln -s ../local/ssl/lib/libssl.so.0.9.8 .
 # ln -s ../local/ssl/lib/libcrypto.so.0.9.8 .
 # cd /tmp
 # scp metro@150.100.122.31:/incoming/tun-1.1-solaris.tar .
 # tar -xvf tun-1.1-solaris.tar
 # cp tun tun.conf /usr/kernel/drv/
 # add_drv tun
 # scp metro@150.100.122.31:/incoming/openvpn-2.0.9-solaris.tar .
 # tar -xvf openvpn-2.0.9-solaris.tar
 # cp openvpn /usr/local/bin

Thursday, 3 April 2008, 5:59:32 pm
Para compilar los paquetes en solaris (Galadriel: instalar gcc --esta en salchicha:/tmp/s9--, instalar ossl, compilar paquetes lzo tun/tap openvpn como metro en /usr/local/src).
El configure del tun una vez compilado e instalado el lzo con las opciones por defecto es:
./configure --with-ssl-headers=/usr/local/ssl/include/ --with-ssl-lib=/usr/local/ssl/lib/ --with-lzo-headers=/usr/local/include --with-lzo-lib=/usr/local/lib
Para que compilase el openvpn 2.0.9 sin tener compilado/instalado el tun/tap he tenido que editar el tun.c y hacer (como aquí):
  #ifndef TUNNEWPPA
- #error I need the symbol TUNNEWPPA from net/if_tun.h
+ #warning I need the symbol TUNNEWPPA from net/if_tun.h
+ #define TUNNEWPPA (('T'<<16) | 0x0001)
  #endif

Para compilar el tun da un error sobre que el solaris 9 en uso es más moderno que el de los que compilaron el gcc, que se arregla con:
cd /usr/local/libexec/gcc/i386-pc-solaris2.9/3.4.6/install-tools
/usr/local/libexec/gcc/i386-pc-solaris2.9/3.4.6/install-tools/mkheaders
cd /usr/local/libexec/gcc/i386-pc-solaris2.9/3.4.6/install-tools
bash ./fixinc.sh /usr/local/lib/gcc/i386-pc-solaris2.9/3.4.6/include /usr/include
./mkheaders

Lo de ejecutar a mano fixinc es porque intenta ejecutarlo como csh, falla (se ve haciendo un "bash -x ./mkheaders").
Una manera alternativa de evitar ese error es poniendo bien la variable SHELL, y después ejecutar el mkheaders:
# export SHELL=bash
# cd /usr/local/libexec/gcc/i386-pc-solaris2.9/3.4.6/install-tools
# ./mkheaders
Una vez compilado el tun, lo deja en el directorio solaris, en galadriel lo empaquetamos a un tar listo para llevar a campo:
 cd /usr/local/src/tun-1.1/solaris
 tar -cvf /usr/local/src/tun-1.1-solaris.tar tun tun.conf
Para empaquetar el openvpn:
 cd /usr/local/src/openvpn-2.0.9
 tar -cvf /usr/local/src/openvpn-2.0.9-solaris.tar openvpn

Thursday, 3 April 2008, 5:49:13 pm
Para el Linux Siendo un Linux de los etch-beta, hay que hacer lo siguiente:
 # cd /var/cache/apt/archives
 # scp metro@150.100.122.31:/incoming/openvpn_2.0.9-4etch1_i386.deb .
 # scp metro@150.100.122.31:/incoming/libssl0.9.8_0.9.8c-4etch1_i386.deb .
 # dpkg -i libssl0.9.8_0.9.8c-4etch1_i386.deb openvpn_2.0.9-4etch1_i386.deb
 # modprobe tun
 # echo tun >> /etc/modules

Post que describe paso a paso la creación de un túnel OpenVPN entre un Linux y un Solaris.

El túnel de pruebas se hace entre un ordenador de PCI (Linux) y el de TCE (Solaris 9), para poder llegar desde el de PCI a la Maestra conectada a la red local del TCE.
EquipoS.O.IP
PCILinux (pre-etch)18.75.70.41
TCESolaris 9ELAN:58.10.50.33
VLAN:25.10.10.33
Maestra-25.10.140.226
pupitre_scLinux (Debian 3.1)25.10.200.34

Para activar forwarding en solaris:
 ndd -set /dev/tcp ip_forwarding 1

UPDATE! Una solución mucho más sencilla para el caso de la maestra es simplemente poner un redir en el TCE (solaris), de manera que PCI vea el puerto de la maestra a través del TCE (que redirecciona su puerto 502 al 502 de la maestra). Esto está implementado en la entrada con fecha "Wednesday, 7 May 2008, 5:43:48 pm".