Monitorización Switches fibra Brocade

Me ha tocado montar la monitorización de los switches de fibra que tenemos, dos Brocade 48000. Como en los dispositivos de red, lo mas sencillo para monitorizarlos es utilizando SNMP. De la documentación de referencia he conseguido extraer información de los puertos.

Los que he utilizado para crear una tabla dinámica con información de cada puerto son los siguientes:

  • Ancho de banda:

Words received: 1.3.6.1.4.1.1588.2.1.1.1.6.2.1.12.X
Words transmited: 1.3.6.1.4.1.1588.2.1.1.1.6.2.1.11.X

Hay que tener en cuenta que se trata de un contador de “words” con lo que si se quiere tener un dato mas común (Mbps por ejemplo) deberíamos hacer la conversión y tener en cuenta el tiempo entre muestras.

Si nuestra herramienta utilizase python por ejemplo bastaría con hacer la siguiente conversión:

txMBps = (abs(tx)*4)/60/1048576

Donde:

tx contiene la diferencia entre dos muestras consecutivas. Al ser una variable de tipo contador de 32 bits es posible que haya que hacer algún tipo de control al reiniciarse el contador.
Multiplico por 4 para convertir de “words” a bytes (ver página 618 de la documentación)
Divido por 60 porque la monitorización toma muestras de la variable cada minuto
Divido por 1024*1024 para convertir de bytes a MBytes.

  • Estadísticas puertos:

EIF: devuelve el número de errores de codificación o disparidad dentro de las tramas recibidas

swFCPortRxEncInFrs 1.3.6.1.4.1.1588.2.1.1.1.6.2.1.21.X

CRC: errores de CRC detectados en las tramas recibidas

swFCPortRxCrcs 1.3.6.1.4.1.1588.2.1.1.1.6.2.1.22.X

Trcs: Tramas truncadas que el puerto ha recibido

swFCPortRxTruncs 1.3.6.1.4.1.1588.2.1.1.1.6.2.1.23.X

TL: Número de tramas recibidas que son demasiado largas

swFCPortRxTooLongs 1.3.6.1.4.1.1588.2.1.1.1.6.2.1.24.X

BEOF: Cuenta el número de tramas que tienen malos delimitadores EOF

swFCPortRxBadEofs 1.3.6.1.4.1.1588.2.1.1.1.6.2.1.25.X

EOF: devuelve el número de errores de codificación o disparidad fuera de las tramas recibidas

swFCPortRxEncOutFrs 1.3.6.1.4.1.1588.2.1.1.1.6.2.1.26

BO: cuenta el número de tramas desordenadas recibidas

swFCPortRxBadOs 1.3.6.1.4.1.1588.2.1.1.1.6.2.1.27

Cualquier incremento en estos contadores puede suponer un problema en la fibra o en los puertos.

  • Estado de los puertos:

swFCPortPhyState 1.3.6.1.4.1.1588.2.1.1.1.6.2.1.3

Este OID devuelve un número que se corresponde con los siguientes estados:

  1. noCard: No hay una tarjeta presentada en este slot del switch
  2. noTransceiver: No hay un GBIC o SFP en el puerto
  3. laserFault: El módulo esta avisando de un fallo en el láser, por lo tanto el GBIC esta defectuoso
  4. noLight: El modulo no está recibiendo luz
  5. noSync: El módulo esta recibiendo luz pero sin sincronismo
  6. inSync: El modulo está recibiendo luz y esta en sincronismo
  7. portFault: El puerto está marcado como en fallo
  8. diagFault: El puerto ha fallado en los diagnósticos
  9. lockRef: Puerto está bloqueado

Con estos OIDs se puede tener una visión bastante exacta del estado de nuestro switch, sus errores y su uso.
Así es como ha quedado en la herramienta de monitorización que utilizo, en caso de producirse algún cambio de estado respecto al día anterior de un vistazo lo detecto:

Estado de los puertos en varios slots de brocade 48k

Estado de los puertos en un slot de brocade 48k

 Tengo otra tabla con las estadísticas que he comentado antes para cada puerto:

 Estadisticas puertos brocade

 Existe un bug en la versión de firmware que tiene el brocade que hace que los slots con Gbics a 8Gbps muestren errores de sincronismo.

Anuncios

Instalación de squid como proxy para YUM

En entornos con multitud de servidores GNU/Linux la gestión de las actualizaciones debe ser un proceso a tener en cuenta. Si queremos actualizar una gran cantidad de servidores, la conexión a Internet puede no ser suficiente o incluso podemos afectar a servicios productivos saturando el ancho de banda. Para solventar este punto está la opción de utilizar repositorios locales. En algunos casos, como las distribuciones derivadas de Debian, se puede poner un proxy cache de los paquetes(aptProxy), el cual se descargará únicamente los paquetes que no se haya descargado con anterioridad.

A diferencia de los sistemas Debian y sus derivados, con Red Hat, no tenemos la opción de tener un proxy cache de paquetes . Siempre podemos tener una copia del repositorio de la distribución que usemos pero es una opción que requiere de un servidor con gran cantidad de espacio en disco y con paquetes que muy probablemente no vayamos a necesitar.
Para tener una solución parecida a la del aptProxy, se puede utilizar Squid como proxy al cual lo configuraremos en el fichero yum.conf de nuestros servidores. 
La instalación es muy sencilla desde yum:
[root@yumrepo ~]# yum install squid 
A continuación lo configuraremos editando el fichero /etc/squid/squid.conf. Básicamente lo que haremos será crear una ACL (localnet) para controlar quien puede utilizar el proxy y donde especificaremos los segmentos donde tenemos servidores instalados. También crearemos una ACL (GoodSites) para controlar a donde se puede conectar el proxy para descargar paquetes.Esta ACL leerá de un fichero los dominios permitidos:
[root@yumrepo ~]# vi /etc/squid/squid.conf
#
# Recommended minimum configuration:
#
acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1

# Example rule allowing access from your local networks.
# Adapt to list your (internal) IP networks from where browsing
# should be allowed
acl localnet src 192.168.1.0/24 # RFC1918 possible internal network
acl localnet src 192.168.2.0/24 # RFC1918 possible internal network
acl localnet src 192.168.3.0/24 # RFC1918 possible internal network
acl localnet src 192.168.4.0/24 # RFC1918 possible internal network
acl localnet src 192.168.5.0/24 # RFC1918 possible internal network
acl localnet src 10.0.0.0/8 # RFC1918 possible internal network

acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT

#
# Recommended minimum Access Permission configuration:
#
# Only allow cachemgr access from localhost
http_access allow manager localhost
http_access deny manager

# Deny requests to certain unsafe ports
http_access deny !Safe_ports

# Deny CONNECT to other than secure SSL ports
#http_access deny CONNECT !SSL_ports

# We strongly recommend the following be uncommented to protect innocent
# web applications running on the proxy server who think the only
# one who can access services on “localhost” is a local user
#http_access deny to_localhost

#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#
acl GoodSites dstdomain “/etc/squid/allowed-sites.squid”
# Example rule allowing access from your local networks.
# Adapt localnet in the ACL section to list your (internal) IP networks
# from where browsing should be allowed
http_access allow localnet GoodSites
http_access allow localhost GoodSites

# And finally deny all other access to this proxy
http_access deny all

# Squid normally listens to port 3128
http_port 3128

# set visible_hostname
visible_hostname yumrepo.enterprise.com

# We recommend you to use at least the following line.
hierarchy_stoplist cgi-bin ?

# Uncomment and adjust the following to add a disk cache directory.
cache_dir ufs /var/spool/squid 25000 16 256

# Leave coredumps in the first cache dir
coredump_dir /var/spool/squid
# Add any of your own refresh_pattern entries above these.
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320

El fichero de la ACL GoodSites será el siguiente:
[root@yumrepo ~]# vi /etc/squid/allowed-sites.squid
.centos.com
.oracle.com
.vmware.com

De esta forma, solo podrá bajar paquetes RPM de esos dominios.

A continuación configuraremos el servicio para que arranque tras un reinicio del servidor:

[root@yumrepo ~]# chkconfig squid –list
squid 0:off 1:off 2: off 3: off 4: off 5: off 6:off
[root@yumrepo ~]# chkconfig squid on
[root@yumrepo ~]# chkconfig squid –list
squid 0:off 1:off 2:on 3:on 4:on 5:on 6:off

Un tema importante es la cache. El directorio donde estará ubicada se especifica en el archivo de configuración, así como el tamaño máximo que puede tener y el periodo de validez de la misma. En nuestro caso, al tratarse de un servicio que se usará para descargar software, se presupone que el volumen necesario será alto, por tanto optamos por asignar un disco y especificar el directorio de la cache como punto de montaje. Crearemos un volumen lógico para poder ser ampliado en un futuro con facilidad y editaremos el /etc/fstab para que se monte tras un reinicio:

[root@yumrepo ~]# fdisk /dev/sdb
[root@yumrepo ~]# partprobe -s

[root@yumrepo ~]# pvcreate /dev/sdb1
[root@yumrepo ~]# vgcreate repo-vg /dev/sdb1
[root@yumrepo ~]# vgdisplay
— Volume group —
VG Name repo-vg
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 1
Act PV 1
VG Size 30,00 GiB
PE Size 4,00 MiB
Total PE 7679
Alloc PE / Size 7679 / 30,00 GiB
Free PE / Size 0 / 0
VG UUID qapuNn-QQv4-psKa-lSTh-JsJZ-hS3j-Js6bjf
[root@yumrepo ~]# lvcreate -l 100%FREE repo-vg
[root@yumrepo ~]# lvrename /dev/repo-vg/lvol0 /dev/repo-vg/repo-lv01
[root@yumrepo ~]# lvdisplay
— Logical volume —
LV Path /dev/repo-vg/repo-lv01
LV Name repo-lv01
VG Name repo-vg
LV UUID nG55k1-k62o-UGZf-B6Pi-WTb6-vlI5-FRqzWL
LV Write Access read/write
LV Creation host, time ol6Template, 2014-04-14 14:43:56 +0200
LV Status available
# open 1
LV Size 30,00 GiB
Current LE 7679
Segments 1
Allocation inherit
Read ahead sectors auto
– currently set to 256
Block device 252:2
[root@yumrepo ~]# mkfs.ext4 /dev/repo-vg/repo-lv01
[root@yumrepo ~]# mount /dev/repo-vg/repo-lv01 /var/spool/squid
[root@yumrepo ~]# vi /etc/fstab
/dev/repo-vg/repo-lv01 /var/spool/squid ext4 defaults 1 1Arranque del servicio

Una vez montado el directorio de la cache se crean los directorios que utilizará squid:
[root@yumrepo ~]# squid -z
[root@yumrepo ~]# ls -l /var/spool/squid
total 68
drwxr-x—. 258 squid squid 4096 abr 14 15:05 00
drwxr-x—. 258 squid squid 4096 abr 14 15:05 01
drwxr-x—. 258 squid squid 4096 abr 14 15:05 02
drwxr-x—. 258 squid squid 4096 abr 14 15:05 03
drwxr-x—. 258 squid squid 4096 abr 14 15:05 04
drwxr-x—. 258 squid squid 4096 abr 14 15:05 05
drwxr-x—. 258 squid squid 4096 abr 14 15:05 06
drwxr-x—. 258 squid squid 4096 abr 14 15:05 07
drwxr-x—. 258 squid squid 4096 abr 14 15:05 08
drwxr-x—. 258 squid squid 4096 abr 14 15:05 09
drwxr-x—. 258 squid squid 4096 abr 14 15:05 0A
drwxr-x—. 258 squid squid 4096 abr 14 15:05 0B
drwxr-x—. 258 squid squid 4096 abr 14 15:05 0C
drwxr-x—. 258 squid squid 4096 abr 14 15:05 0D
drwxr-x—. 258 squid squid 4096 abr 14 15:05 0E
drwxr-x—. 258 squid squid 4096 abr 14 15:05 0F
-rw-r—–. 1 squid squid 2880 abr 28 18:20 swap.state
El último paso será arrancar el servicio y verificar que está escuchando en el puerto por defecto.

[root@yumrepo ~]# service squid start
Starting squid: . [ OK ]
[root@yumrepo ~]# netstat -ant | grep 3128
tcp 0 0 :::3128 :::* LISTEN

En los clientes bastará con añadir la siguiente línea en el fichero /etc/yum.conf:
proxy=http://X.X.X.X:3128 

Si lanzamos dos actualizaciones en clientes diferentes veremos que la segunda va mucho mas rápido que la primera y que los directorios de la cache empiezan a tener uso.

Instalación de sistemas linux (Derivados de Red Hat) con kickstart

Cuando se instala un sistema Red Hat (o derivados) el instalador deja en el directorio /root un fichero de configuración con la configuración que se ha utilizado a la hora de realizar la instalación. Dicho fichero se puede utilizar si se necesitan instalar varios servidores idénticos. 
El fichero de configuración deberá ser accesible desde el nuevo servidor, en teoría se puede compartir por nfs, ftp o http. La forma que me ha ido mejor a mi ha sido por http. He instalado un simple apache en un servidor y he puesto el fichero accesible. 
Para lanzar la instalación debemos arrancar con el DVD de la distribución y cuando aparezca el menú del GRUB pulsar la tecla ESC. En ese momento nos aparece un promt donde especificaremos donde se encuentra el fichero de configuración y la configuración de red para ese sistema:
linux ks=http://X.X.X.X/ks.cfg ksdevice=eth0 ip=X.X.X.Y netmask=255.255.255.0 gateway=X.X.X.Z
 

El proceso de instalación arrancará y automáticamente instalará el sistema hasta que nos pida reiniciar el servidor ya con el sistema operativo instalado.
El fichero de configuración está dividido en bloques. Una primera parte donde se especifican las opciones globales de configuración. A continuación se indican que paquetes se van a instalar en un bloque identificado con la etiqueta “%packages”. Adicionalmente se pueden indicar comandos que se ejecutarán antes de arrancar la instalación y otros que se ejecutarán una vez la instalación haya terminado, identificados con las etiquetas “%pre” y “%post” respectivamente.

La parte que me ha parecido mas cómoda es la de la configuración de los discos. En mi caso quería montar un Raid-1 por software con los dos discos que tiene el servidor. Para ello se especifica de la siguiente manera:

zerombr 

clearpart –all –drives=sda,sdb 
part raid.008001 –asprimary –ondrive=sda –size=500 
part raid.008002 –asprimary –ondrive=sda –size=98304 
part raid.008003 –asprimary –ondrive=sda –size=100000 
part raid.008005 –asprimary –ondrive=sda –grow –size=755060 
part raid.008011 –asprimary –ondrive=sdb –size=500 
part raid.008012 –asprimary –ondrive=sdb –size=98304 
part raid.008013 –asprimary –ondrive=sdb –size=100000 
part raid.008015 –asprimary –ondrive=sdb –grow –size=755060 
raid /boot –fstype=ext4 –level=1 –device=md0 raid.008001 raid.008011 
raid / –fstype=ext4 –level=1 –device=md1 raid.008003 raid.008013 
raid /var –fstype=ext4 –level=1 –device=md2 raid.008005 raid.008015 
raid swap –level=1 –device=md3 raid.008002 raid.008012
Estoy utilizando cada disco, creando cuatro particiones y luego creando los meta-dispositivos raid-1 con una partición de cada disco.

Dejo en github una copia del fichero que me ha servido durante mis instalaciones

Reconfiguración de interfaces en entornos virutales con máquinas virtuales Linux

En entornos virtuales es habitual clonar servidores. En Linux el sistema udev, al detectar un nuevo hardware con una MAC diferente, le asigna un número de interfaz secuencial. Da igual si se le ha borrado alguna interfaz previa, la nueva que se configure seguirá la numeración. Con este comportamiento, es posible que haya cosas que no funcionen, por ejemplo si tenemos un script que haga referencia al nombre de interfaz eth0. Si queremos recuperar la numeración deberemos modificar el fichero de reglas de udev y luego además revisar los scripts de configuración de las interfaces ya que probablemente las MACs no coincidan.
He creado un nuevo script, que se puede poner en el .bashrc del usuario root por ejemplo. Dicho script detectará si existe la interfaz eth0, en caso de no existir realizará la reconfiguración de udev, limpiará configuraciones de red previas y finalmente creará los nuevos ficheros de configuración. Para crear estos ficheros tendrá en cuenta si queremos utilizar un direccionamiento estático o dinámico (DHCP). 
Utilizando este script, siempre que clonemos la máquina y accedamos con el usuario root nos preguntará la configuración de red que queremos.
Ejemplo de uso (desde una consola ya que baja las interfaces):
Verificamos que el nombre de la interfaz eth0 no existe:

Configuración de red tras el clonado

Lanzamos el script, donde veremos que baja las inerfaces de red y pide si queremos borrar configuraciones previas:

Llamada al script netconfig.sh

Pide que tipo de configuración queremos en todas las interfaces:

Reconfiguración de las interfaces

Una vez terminada la ejecución del script vemos que la interfaz eth0 ya aparece y mantiene la MAC de la interfaz que veiamos en la primer imágen:

Configuración de red final

El script:

#!/bin/bash
function static {
hostname=`hostname`
read -r -p “Hostname: [${hostname}] ” hostname
if [ -z “$hostname” ]; then hostname=`hostname`; fi
read -r -p “IP address: ” ip
read -r -p “Netmask: ” mask
grep dhcp /etc/sysconfig/network-scripts/ifcfg-eth* 2>/dev/null >/dev/null
if [ $? -eq 0 ] ; then
echo “there is a network configured with dhcp which should configure your gateway”
else
read -r -p “Gateway: ” gate
if [ $? -eq 0 ] ; then
sed -i -e ‘s#^\(GATEWAY=\).*$#\1′”${gate}”‘#’ /etc/sysconfig/network
else
echo “GATEWAY=\”${gate}\”” >>/etc/sysconfig/network
fi
fi
#echo “HOSTNAME: ${hostname}\tIP: ${ip}\tNETMASK: ${mask}”
mac=`ifconfig ${iface} | grep eth | awk ‘{ print $5}’`
if [ -f /etc/sysconfig/network-scripts/ifcfg-${iface} ]; then
rm -r /etc/sysconfig/network-scripts/ifcfg-${iface}
fi
echo “DEVICE=\”${iface}\”” >> /etc/sysconfig/network-scripts/ifcfg-${iface}
echo “BOOTPROTO=\”static\”” >> /etc/sysconfig/network-scripts/ifcfg-${iface}
echo “NM_CONTROLLED=\”yes\”” >> /etc/sysconfig/network-scripts/ifcfg-${iface}
echo “ONBOOT=\”yes\”” >> /etc/sysconfig/network-scripts/ifcfg-${iface}
echo “TYPE=\”Ethernet\”” >> /etc/sysconfig/network-scripts/ifcfg-${iface}
echo “IPADDR=\”${ip}\”” >> /etc/sysconfig/network-scripts/ifcfg-${iface}
echo “NETMASK=\”${mask}\”” >> /etc/sysconfig/network-scripts/ifcfg-${iface}
echo “HWADDR=\”${mac}\”” >> /etc/sysconfig/network-scripts/ifcfg-${iface}
echo “DNS1=\”X.X.X.X\”” >> /etc/sysconfig/network-scripts/ifcfg-${iface}
echo “DNS2=\”Y.Y.Y.Y\”” >> /etc/sysconfig/network-scripts/ifcfg-${iface}
echo “DOMAIN=\”enterprise.com\”” >> /etc/sysconfig/network-scripts/ifcfg-${iface}
sed -i -e ‘s#^\(HOSTNAME=\).*$#\1′”${hostname}”‘#’ /etc/sysconfig/network
grep GATEWAY /etc/sysconfig/network 2>/dev/null >/dev/null
}

function dhcp {
echo “Configuring DHCP for ${iface}”
hostname=`hostname`
read -r -p “Hostname: [${hostname}] ” hostname
if [ -z “$hostname” ]; then hostname=`hostname`; fi
mac=`ifconfig ${iface} | grep eth | awk ‘{ print $5}’`
if [ -f /etc/sysconfig/network-scripts/ifcfg-${iface} ]; then
rm -r /etc/sysconfig/network-scripts/ifcfg-${iface}
fi
echo “DEVICE=\”${iface}\”” >> /etc/sysconfig/network-scripts/ifcfg-${iface}
echo “BOOTPROTO=\”dhcp\”” >> /etc/sysconfig/network-scripts/ifcfg-${iface}
echo “HWADDR=\”${mac}\”” >> /etc/sysconfig/network-scripts/ifcfg-${iface}
echo “NM_CONTROLLED=\”yes\”” >> /etc/sysconfig/network-scripts/ifcfg-${iface}
echo “ONBOOT=\”yes\”” >> /etc/sysconfig/network-scripts/ifcfg-${iface}
echo “TYPE=\”Ethernet\”” >> /etc/sysconfig/network-scripts/ifcfg-${iface}
sed -i -e ‘s#^\(HOSTNAME=\).*$#\1′”${hostname}”‘#’ /etc/sysconfig/network
}


ifconfig eth0 2>/dev/null >/dev/null
if [ $? -ne 0 ] ; then
echo “eth0 not found. Interface configuration…”
echo “Recreating interfaces”
# Rename eth1 with eth0    
echo “Stopping network”
service network stop

#Clearing devices and renaming
echo “UDEV Config…”
rm -f /etc/udev/rules.d/70-persistent-net.rules
#ls -l  /etc/udev/rules.d/70-persistent-net.rules
udevadm trigger
sleep 2
#ls -l  /etc/udev/rules.d/70-persistent-net.rules
ifdevs=`udevadm info –export-db | grep “INTERFACE=eth” | cut -d “=” -f2`
#echo “Interfaces ${ifdevs}”
count=0
for ifdev in ${ifdevs}; do
sed -i -e “s/${ifdev}/eth${count}/g” /etc/udev/rules.d/70-persistent-net.rules
# echo “sed -i -e ‘s/${ifdev}/eth${count}/g’ /etc/udev/rules.d/70-persistent-net.rules”
count=$((count+1))
# echo “count: ${count}”
done
udevadm trigger –attr-match=subsystem=net
#echo “udev Net rules”
#grep eth /etc/udev/rules.d/70-persistent-net.rules
    echo “—————————————————“
    
#Clearing configuration    
echo “Remove previous configuration”
for cfgfile in `ls /etc/sysconfig/network-scripts/ifcfg-eth*`; do
read -r -p “Remove previous configuration file ${cfgfile}? [y/N] ” response
case $response in
[yY])
rm -f ${cfgfile}
;;
*)
echo “Not removing ${cfgfile}”
;;
esac
done
    
#Setup ehternet devices
sleep 2
ifaces=`ifconfig -a | grep eth | awk ‘{ print $1}’`
#echo ${ifaces}
for iface in ${ifaces}; do
read -r -p “Do you want to configure a static IP for ${iface}? [y/N] ” response
case $response in
[yY])
static
;;
*)
read -r -p “Do you want to configure DHCP for ${iface}? [y/N] ” respdhcp
case $respdhcp in
[yY])
dhcp
;;
*)
echo “Not configuring ${iface}.”
#rm -r /etc/sysconfig/network-scripts/ifcfg-${iface}
;;
esac
;;
esac
done
#Start networking
echo “Starting networking”
service network start
fi

VPNSSL Juniper en Ubuntu 14.04 64bits

Recientemente necesitaba acceder a una VPNSSL de Juniper y obviamente estas soluciones están pensadas para sistemas operativos Windows. En Ubuntu funciona, pero hay que instalar varias dependencias.

Esto está testeado en Ubuntu 14.04 Trusty Tahr sobre 64bits, aunque también lo he hecho funcionar en versiones anteriores. Al lanzar el “Network Connect” nos dará un error quejándose de la falta de unas librerías de 32 bits.
Lo primero que haremos será instalar el JRE y el plugin para el navegador, en este caso de OpenJDK:

$ sudo apt-get install openjdk-7-jre icedtea-7-plugin

A continuación instalaremos la versión de 32 bits, con todas las dependencias que nos pida:

$ sudo apt-get install openjdk-7-jre:i386

Tendremos que instalar otra serie de paquetes para poder utilizar la versión de 32 bits:

$ sudo apt-get install libstdc++6:i386 lib32z1 lib32ncurses5 lib32bz2-1.0 libxext6:i386 libxrender1:i386 libxtst6:i386 libxi6:i386

Por último deberemos crear un link en el directorio sbin. Por algún motivo el “Network Connect” usa el listado “update-alternatives” para determinar si la versión de 32 bits está instalada y lo busca bajo el directorio /usr/sbin. Para solucionarlo basta con crear el link apuntando a /usr/bin:

$ sudo ln -s /usr/bin/update-alternatives /usr/sbin/

Una vez hechos estos cambios ya podremos utilizar nuestra vpn desde Ubuntu:

 

Referencias: