lunes, noviembre 12, 2012

Configurando una IP estática persistente en Fedora 15 (y Virtual Box)




Al usar la imagen de Fedora 15 que se puede descargar de http://virtualboxes.org/images/ para crear una máquina virtual descubrí que en esa distribución configurar una IP estática persistente (que se mantenga tras el reinicio de la máquina) para la interfaz de red mediante línea de comando no es exactamente trivial. Configurar una IP estática con los comandos ifconfigroute es sencillo. Lo primero que hay que saber es que en Fedora 15 ya no tenemos interfaces tipo eth0, sino que han decidido traducir la interfaz a interfaces con nombres tipo p2p1 y que por defecto la IP es asignada por DHCP. Los comandos serían (usando como ejemplo una dirección 192.168.1.200/255.255.255.0 y puerta de enlace 192.168.1.1):

#ifconfig p2p1 192.168.1.200 netmask 255.255.255.0
#route add default gw 192.168.1.1

Pero con una configuración así, en cuanto reiniciemos la máquina perderemos la IP asignada a mano para volver a tener una IP asignada por DHCP.

Mediante la interfaz gráfica (Aplicaciones -> Herramientas del sistema -> Configuración del sistema / Red) la configuración es inmediata y persistente. ¿Pero cómo conseguir lo mismo mediante línea de comando?
Una posibilidad es crear directamente el fichero de configuración de la interfaz de red ifcfg-Wired_connection_1 en /etc/sysconfig/networ-scripts, y hacerlo como root. Desde una consola, y habiendo entrado ya como root (con su -l, por ejemplo):

#cd  /etc/sysconfig/networ-scripts
#vi   ifcfg-Wired_connection_1

Una vez dentro del fichero a editar, que estará vacío si no hemos configurado antes la interfaz desde la herramienta gráfica, añadimos las siguientes líneas:


TYPE=Ethernet

BOOTPROTO=static

IPADDR0=<IP que queramos configurar>

PREFIX0=24

GATEWAY0=<IP de la puerta de enlace>

DNS1=<IP de DNS>

DNS2=<IP de otro DNS>

DEFROUTE=yes

IPV4_FAILURE_FATAL=yes

NAME="Wired connection 1"

ONBOOT=yes

HWADDR=<MAC de la tarjeta>

DHCPPROTO=none


La mayor parte de los parámetros son autoexplicativos:


IPADDR0 es la dirección IP que queremos asignar a la interfaz.
PREFIX0 es la máscara (en formato CIDR) de la IP que queremos configurar.

GATEWAY0 es la dirección de la puerta de enlace.

HWADDR es la dirección MAC de la tarjeta de red, que puede obtenerse mediante un ifconfig.


Un ejemplo práctico de configuración:

TYPE=Ethernet

BOOTPROTO=static

IPADDR0=192.168.1.200

PREFIX0=24

GATEWAY0=192.168.1.1

DNS1=8.8.8.8

DNS2=8.8.4.4

DEFROUTE=yes

IPV4_FAILURE_FATAL=yes

NAME="Wired connection 1"

ONBOOT=yes

HWADDR=08:00:27:6C:E1:0A
DHCPPROTO=none

Ya solo queda reiniciar el servicio network o reiniciar la máquina:

service network restart


Con ifconfig podemos ver que la interfaz ya tiene asignada la IP que hemos querido ponerle y si reiniciamos comprobaremos además que el cambio persiste.

domingo, noviembre 11, 2012

Virtual Box: problema al crear una nueva máquina virtual por UUID ya existente

Si tenemos una máquina virtual creada, al tratar de reusar la imagen con la que hemos configurado esa máquina virtual por el método de copiarla y configurar con ella una nueva máquina virtual en Virtual Box, lo que tendremos a la hora de agregarla como disco duro será un bonito mensaje de error:


Esto sucede por que, al tratarse de un duplicado de una imagen ya usada, Virtual Box detecta que el UUID (que es, simplificando, un identificador único del sistema operativo) ya está en uso. Es un error engorroso pero facilmente solucionable. En la carpeta de Virtual Box (C:\Program Files\Oracle\VirtualBox, por ejemplo) existe un ejecutable llamado VBoxManage.exe. Para cambiar el UUID a la copia de la imagen debemos ejecutar el comando con estos parámetros:

VBoxManage internalcommands sethduuid "<path a la copia de la imagen cuyo UUID queremos cambiar>"


Por ejemplo,


C:\Program Files\Oracle\VirtualBox>VBoxManage internalcommands sethduuid "F:\VM\Virtual Images\fedora_15_tests.vdi"


Lo que nos devolverá un mensaje como el siguiente:

UUID changed to: f094ad91-4255-4ba1-b984-5cd9ea3e3b51


Y ya podremos crear una nueva máquina virtual con la copia de la imagen.

lunes, noviembre 05, 2012

Una instalación básica de Nagios

Nagios es un software de monitorización muy extendido y que practicamente es un estándar en IT. Para hacer pruebas con Nagios es conveniente instalarlo sobre una máquina virtual para poder trastear sin problemas ni dolores de cabeza. Virtual Box es ideal para esto. Usando una imagen de, por ejemplo, Fedora 15 (se puede encontrar una, así como de muchas otras distribuciones de Linux, en http://virtualboxes.org/images/ ), la instalación y configuración de Nagios es casi trivial.

El primer paso, tras arrancar nuestro Fedora 15 sobre Virtual Box, es hacer una actualización general del sistema abriendo una consola, poniéndonos como root mediante un su -l (contraseña "reverse" por defecto con la imagen de Fedora 15 bajada del repositorio anterior) y luego yum -y update. Además, por comodidad, es recomendable instalar wget (yum -y install wget) para poder descargar los paquetes que necesitamos comodamente desde la consola

Después de la actualización ya podemos descargar los dos paquetes básicos de Nagios para ponerlo en marcha: Nagios Core y Nagios Plugins. Nagios Core proporciona el motor de monitorización, el auténtico núcleo de Nagios. Nagios Plugins añade las funcionalidades básicas que permiten visualizar equipos y servicios monitorizados. Descargamos ambos paquetes en cualquier directorio que nos convenga:

wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.4.1.tar.gz

wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.16.tar.gz

En este momento, como se ve, las últimas versiones de Nagios y Plugins en este momento son la 3.4.1 y la 1.4.16 respectivamente. En cualquier caso podemos encontrar las versiones más actualizadas en http://www.nagios.org/download/core y http://www.nagios.org/download/plugins .

Tras desempaquetarlos (con los comandos gunzip y tar xvf) tendremos un par de directorios: "nagios" (resultado de desempaquetar Nagios Core) y "nagios-plugins-1.4.16" (resultado de desempaquetar Nagios Plugins). Lo ideal ahora es seguir la guía Quickstart para Fedora (http://nagios.sourceforge.net/docs/3_0/quickstart-fedora.html), aunque siguiéndola estrictamente nos encontraremos con algún problema menor.

Inicialmente hay que cumplir una serie de requisitos para que Nagios funcione. Lo básico es tener instalado Apache, PHP, el compilador GCC y las librerías de desarrollo GD. Si no, se pueden instalar con los siguientes comandos desde la consola (en modo root):

yum -y install httpd php
yum -y install gcc glibc glibc-common
yum -y install gd gd-devel


Con yum -y nos ahorramos que yum nos pida confirmación para la instalación de los paquetes, agilizándose un poco.

Tras instalar estos paquetes básicos hay que crear algún que otro usuario y grupo:

useradd -m nagios
passwd nagios

Con esto creamos el usuario nagios y forzamos la creación de un directorio home para el mismo y luego le configuramos una clave. Ahora hay que crear el grupo "nagcmd" y añadir al mismo los usuarios "nagios" y "apache:"

groupadd nagcmd
usermod -a -G nagcmd nagios
usermod -a -G nagcmd apache

De este modo desde la interfaz web de Nagios se pueden enviar comandos externos al core de Nagios.

El siguiente paso es compilar e instalar Nagios. Hay que entrar en el directorio "nagios" donde se desempaquetó el contenido del paquete que descargarmos previamente y ejecutar el script pasándole como parámetro el nombre del grupo que acabamos de crear:


./configure --with-command-group=nagcmd

Queda compilar e instalar Nagios con los siguientes comandos:

make all
make install
make install-init
make install-config
make install-commandmode

make install-webconf

Ahora toca crear una cuenta para la gestión por web y poner una clave. Esto se hace con

htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

De este modo creamos el usuario "nagiosadmin" para la gestión por web y se nos pide una clave (que hay que confirmar) para este usuario. Para que la configuración surta efecto hay que reiniciar el servicio web:

service httpd restart  

Ahora toca compilar los plugins. Salimos del directorio de nagios y entramos en el de los plugins,
"nagios-plugins-1.4.16" en este ejemplo. Se ejecuta el script como antes para el script de nagios, pero pasándole como parámetros el usuario y el grupo de nagios:

./configure --with-nagios-user=nagios --with-nagios-group=nagios

Queda compilar e instalar:

make

En este punto, usando la imagen de Fedora 15 básica del repositorio que indicamos al principio, la compilación da un error:



La línea "error: ´ssl_version´ undeclared" parece apuntar a un problema con ssl. En concreto lo que el compilador necesita son las librerías de desarrollo de ssl, que se instalan mediante

yum -y install openssl-devel.i686

Tras instalarlas hay que ejecutar de nuevo el script para luego poder compilar correctamente:

./configure --with-nagios-user=nagios --with-nagios-group=nagios

make

Ahora no tendremos ningún error y podremos finalizar la instalación en sí con un

make install

Quedan ya los últimos pasos. Hay que añadir Nagios al arranque para que siempre se ejecute con el inicio de nuestra máquina:

chkconfig --add nagios
chkconfig nagios on


Es una buena idea añadir al arranque también el servicio web Apache para no tener que iniciarlo manualmente cada vez que queramos acceder a la interfaz web:

chkconfig --add httpd
chkconfig httpd on


Verificamos que el fichero de configuración de Nagios no tiene ningún error:

/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg 

El resultado será que no se ha encontrado ningún problema durante la configuración. Iniciamos Nagios como servicio con

service nagios start

Una consideración previa al acceso a la interfaz web es que debemos deshabilitar SELinux, que en Fedora viene habilitado por defecto y bloqueando el acceso a las CGIs de Nagios. Podríamos configurar SELinux más finamente para permitir el acceso a las CGIs, pero como estamos sobre una plataforma de pruebas podemos permitirnos deshabilitarlo completamente. Primero confirmamos que SELinux está realmente habilitado mediante el comando getenforce, que devolverá como resultado Enforcing si SELinux está habilitado. Para deshabilitarlo usamos setenforce 0, con lo que getenforce devuelve ahora el mensaje Permissive. Esto solo deshabilita SELinux temporalmente. Para deshabilitarlo de manera permanente configuramos /etc/selinux/config y cambiamos la línea

SELINUX=enforcing

por

SELINUX=disabled

Un último paso previo opcional es habilitar en el firewall de Fedora el acceso por http para poder acceder a Nagios desde una máquina externa. Para ello, desde la interfaz gráfica, podemos ir a Applications -> Other -> Firewall (se nos pedirá la contraseña de root) y de entre la lista de servicios a los que podemos abrir el acceso seleccionamos "WWW (HTTP)". Pulsamos Apply, confirmamos con Yes y ya tendremos acceso desde una máquina externa. Solo queda probar a acceder mediante un navegador a la url http://localhost/nagios/ (si es desde dentro del Fedora donde tenemos instalado Nagios) o mediante http://<IP de la máquina donde está instalado Nagios>/nagios/. En ambos casos se nos pedirá nombre de usuario (nagiosadmin) y contraseña (la que configuramos previamente) y tendremos acceso a la interfaz: