Nut – Network UPS Tools

2
16741

Nut – Network UPS Tools.

1. Introducción

La seguridad es uno de los aspectos más importantes de nuestros sistemas y al que hay que prestar una gran atención. Cuando hablamos del termino seguridad rápidamente nos surgen pensamientos como Firewall, Backup, sistemas de detección de intrusiones y muchos más. La seguridad no sólo se queda aquí, mantener un sistema seguro es también aislarlo (en la medida de los posible) de elementos externos a él, como incendios, inundaciones, picos de tensión o perdida del suministro eléctrico.

Los dispositivos como UPSs o SAIs son elementos que ayudan a tener un sistema más seguro ante caídas del suministro eléctrico y bajadas o subidas de tensión. En este tutorial vamos a enseñaros a configurar nuestro sistema para habilitar el apagado automático cuando uno de estos dispositivos nos notifique la perdida inminente del suministro eléctrico.

Para ello vamos a utilizar una herramienta llamada Nut capaz de controlar y monitorizar este tipo de dispositivos en entornos Linux.

2. Entorno

Entorno utilizado para escribir este tutorial:

  • Sistema Operativo: Ubuntu Server 64 bits
  • Kernel: 2.6.35-22
  • nut: 2.4.3
  • UPS: Trust 1300VA

3. Instalación

Nut se encuentra disponible en los repositorios de paquetes de Ubuntu. Por tanto, su instalación en realmente sencilla, sólo tendremos que utilizar el comando apt-get.

apt-get install nut

Finalizada la instalación debemos comprobar que se ha creado el usuario y grupo nut, de lo contrario tendríamos que crearlo manualmente.

$> id nut
uid=108(nut) gid=119(nut) groups=119(nut)

4. Configuración

El siguiente paso es modificar los ficheros de configuración. El primero que tenemos que tocar es /etc/nut/ups.conf en el que se define el driver para conectarse a la UPS y la directivas de seguridad a aplicar.

Como parece obvio, el driver que configuremos varía en función del modelo de UPS. Nut ofrece en su página oficial un listado con los drivers que se deben utilizar para la mayoría de las UPSs del mercado (para ver el listado pincha aquí). En el caso de que nuestro modelo no se encontrase en la lista os recomiendo que probéis con el driver de un modelo similar.

[trust]  
    driver=blazer_usb  
    port=auto  
    vendorid = 06da  
    productid = 0003  
    desc = "Trust 1300VA"

Como podéis ver, con estas líneas estamos indicando que para conectarse a la UPS (trust) tiene que utilizar el driver blazer_usb, que el dispositivo puede estar conectado en cualquier puerto USB de nuestro ordenador y para ser más restrictivos a la hora de encontrarlo le indicamos los identificadores del fabricante y el producto. Para conocer estos identificadores deberemos utilizar el comando «lsusb -v».

A continuación nos aseguramos de que todo está correcto y de que tenemos conexión con la UPS. Para ello utilizaremos el comando upsdrvctl, encargado de comunicarse con el dispositivo.

$> upsdrvctl start

Es muy posible que la primera ejecución falle por problema de permisos. Si es tu caso debes recargar la configuración de acceso a los dispositivos USB.

$> udevadm control –reload-rules
$> udevadm trigger

Ahora si volvemos a ejecutar upsdrvctl tendremos que ver algo como:

Network UPS Tools – UPS driver controller 2.4.3
Network UPS Tools – Megatec/Q1 protocol USB driver 0.03 (2.4.3)
Supported UPS detected with megatec protocol

Hay ocasiones, como ha sido en nuestro caso, en las que el driver que se recomienda en la página de Nut no funciona y tengamos que utilizar otro. Por ejemplo, para el modelo Trust 1300VA se recomienda utilizar «megatec_usb» pero por alguna razón no es capaz de conectarse con la UPS y hemos tenido que utilizar otro llamado blazer_usb (todos los drivers que podemos utilizar para conectarnos a las UPS se encuentran en /lib/nut de nuestro sistema).

Si llegado a este punto no tenemos ningún problema, el siguiente paso es configurar los servicios upsd y upsmon. El primero se comunica con upsdrvctl y actúa como servidor ante el servicio upsmon mientras que el segundo se comunica con upsd y se encarga de monitorizar el estado de la UPS y apagar la máquina cuando se recibe un evento de perdida de luz.

Esta división en tantos módulos no es un capricho, sino que tiene una razón de peso. Nuestra UPS sólo puede notificar la pérdida de luz a una única máquina (master) pero en cambio varias máquinas pueden estar conectadas a la UPS (slaves). Por tanto tiene que haber alguna forma de que las máquinas esclavas tengan conocimiento de la pérdida de luz. De ahí la razón de tener un servicio upsd que actúe como servidor y upsmon como cliente. De esta manera cualquier máquina puede ser notificada.

Una vez visto por encima para que sirve cada servicio, tenemos que configurarlos. En /etc/nut/upsd.conf indicamos sobre que interfaz y puerto esta escuchando el servicio. Por defecto, upsd, esta escuchando en el puerto 3493 del interfaz local. Como en nuestro caso no tenemos que dar un servicio remoto a otras máquinas no tocaremos nada de este fichero.

A parte del puerto de escucha también hay que configurar los usuarios y permisos para acceder a él (/etc/nut/upsd.user).

[root]  
        password=t3st  
        actions = SET  
        instcmds = ALL  
  
[upsmon]  
        password=pass  
        upsmon master  
        upsmon slave  

En este caso hemos creado un usuario root con todos los permisos de acceso y un usuario upsmon que será utilizado por el servicio upsmon para acceder como master o slave.

A continuación nos toca configurar upsmon (/etc/nut/upsmon.conf). De todas las opciones posibles sólo vamos a destacar las tres más importantes:

MONITOR trust@localhost 1 upsmon pass master  
POWERDOWNFLAG /etc/killpower  
SHUTDOWNCMD "/sbin/shutdown -h now" 

En la primera línea se ha configurado la conexión para acceder a upsd, en la segunda la ruta al fichero que se utilizará para activar el flag de lanzar el proceso de apagado y en la tercera se indica el comando que se lanzará cuando se apague la máquina.

Lo siguiente es cambiar los permisos de los ficheros para que tan sólo el grupo nut pueda acceder a ellos.

$> chown root:nut /etc/nut/*
$> chmod 640 /etc/nut/*

Y por último configurar el sistema para que se inicien los servicios cuando arranque la máquina. Creamos un fichero /etc/default/nut:

START_UPSD=yes  
START_UPSMON=yes

Y editamos /etc/nut/nut.conf

MODE=standalone 

En este caso estamos configurando Nut para que upsd sólo acepte conexiones locales. Si estuviéramos en un entorno con máquinas esclavas (upsmon slave) este modo no serviría y el correcto sería netserver.

5 Conclusión

Mantener un sistema seguro e integro no es una tarea sencilla. A lo largo del tiempo os hemos ido mostrando multitud de herramientas dirigidas en este sentido. Aplicarlas no conlleva mucho tiempo y en algunos momentos nos pueden sacar de grandes problemas.

Con el objetivo de preservar la integridad de nuestro sistema ante perdidas de datos o roturas de elementos físicos como discos duros, os hemos enseñado Nut, que se encarga de monitorizar la UPS y apagar la máquina ante la perdida del suministro eléctrico.

2 COMENTARIOS

DEJA UNA RESPUESTA

Por favor ingrese su comentario!

He leído y acepto la política de privacidad

Por favor ingrese su nombre aquí

Información básica acerca de la protección de datos

  • Responsable:
  • Finalidad:
  • Legitimación:
  • Destinatarios:
  • Derechos:
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad