Página siguiente Página anterior Índice general

3. Demonio de IRC: ircd

3.1 Función de un demonio ircd

En una arquitectura centralizada como es la arquitectura cliente-servidor se distinguen precisamente estas dos partes: cliente, que es el que demanda un servicio; y el servidor, que es el que lo oferta. En la máquina servidor coexistirán tantos programas esperando a la escucha de nuevas peticiones como servicios diferentes se oferten.

Estos programas, denominados demonios (daemons en la terminología inglesa) son programas que están en ejecución, cargados en memoria, y que están encargados de responder a las peticiones que hacen los programas clientes, que generalmente están ubicados en otras máquinas, pero que pueden ejecutarse también en la propia máquina servidor. Por tanto, siempre hay una correspondencia directa entre el programa o demonio del servidor y el programa cliente de la máquina cliente.

En nuestro caso particular de IRC, el servidor será la máquina que ejecute el demonio ircd y los clientes serán los programas que los usuarios utilicen para engancharse a este servidor.

3.2 Descripción de ircd-hybrid

A la hora de instalar un servidor de IRC hay que elegir un demonio de ircd. Existen algunos como el irdu, utilizado en la red Undernet, o el más básico, ircd, sin modificación alguna. Pero nosotros hemos escogido el ircd-hybrid versión 5.2p1 por ser el más completo. Es el usado en la red Efnet.

3.3 Obtención e instalación

Algunas distribuciones como Debian incluyen este software entre sus paquetes básicos. Si utilizamos otra distribución, se puede recurrir al FTP o contactar con sus autores en la dirección ircd-hybrid@vol.com.

El primer paso es descomprimir el paquete con el comando:

tar xvzf ircd.tar.gz

Los ficheros descomprimidos los alojaremos en el directorio /usr/src/ircd-hybrid-5.2p1/.

Algunos de los ficheros más importantes son:

3.4 Configuración previa a la compilación

Como sugiere la documentación, es preciso revisar algunos ficheros donde se definen varios parámetros, por lo que será necesario compilar el programa. Sin embargo, el primer paso es adaptar los ficheros de configuración y compilación a nuestro sistema. Esto lo haremos ejecutando el script ./configure.

A continuación, editaremos parte del código fuente (por motivos de optimización): puesto que nuestra red no va a tener las pretensiones de afluencia de usuarios que tiene Efnet, acortaremos un poco los recursos reservados por el ircd para que consuma menos memoria.

El primer fichero que cambiaremos será include/config.h, que define muchas de las directrices de comportamiento del servidor. Modificaremos dos líneas define de esta forma:

#define HARD_FDLIMIT    256
#define INIT_MAXCLIENTS 150

También quitaremos la línea

#define DO_IDENTD

para que no chequee constantemente la identidad de todo aquel que entre, ralentizando los accesos al servidor.

El fichero src/list.c define el tamaño de algunas tablas mediante símbolos del preprocesador. Pondremos el valor 64 a las variables LINK_PREALLOCATE y CLIENTS_PREALLOCATE, lo que es suficiente para una red donde no se prevee un acceso mayor a 60 usuarios.

El último paso antes de la compilación es editar el fichero Makefile resultante de ejecutar el script ./configure, para que la línea que especifica los parámetros que usará el compilador gcc quede de la siguiente forma:

# Default CFLAGS
CFLAGS= -g -O2 -DCPU=586 -m486

Los dos últimos parámetros son opcionales, y sirven para optimizar el código generado para máquinas Pentium/AMD.

3.5 Compilación

Una vez hechos todos los ajustes pertinentes, se puede proceder a la compilación propiamente dicha, con el comando:

make

La compilación transcurrirá durante unos minutos, tras los cuales, si no se ha producido ningún error, sólo faltará crear el directorio /usr/local/ircd/, donde se instalarán los ficheros ejecutables gracias a la orden:

make install

3.6 El fichero ircd.conf

Ahora se configura el servidor de IRC. Esto se hace editando el fichero /usr/local/ircd/ircd.conf, que se estructura en diferentes líneas, identificadas con una letra, y que contienen parámetros separados por el signo ':'. Algunas de las líneas más importantes son:

Tras las modificaciones oportunas, nuestro fichero ircd.conf es:

M:maquina.euitio.uniovi.es:156.35.98.138:IRC EUITIO:6667
A:Universidad de Oviedo EUITIO:Asturias:SysAdm <root@maquina.euitio.uniovi.es>
Y:0:90:3:2:100000
Y:1:90:3:20:100000
I:*.euitio.uniovi.es::*::1
I:156.35.53.*::*::1
Y:3:90:1:100:100000
I:NOMATCH::*@*PPP*::3
I:NOMATCH::*@*slip*::3
o:root@maquina.euitio.uniovi.es:mAJif8plpvVls:Operador:0:0
# Fin del fichero
# No especificamos nada en las líneas
# - C, N, L y N: porque no nos conectamos a ningún otro servidor
# - K, R, D, E y F: porque no establecemos restricciones tan fuertes
# - P: porque no tenemos más puertos

Nota: para obtener el campo clave encriptada de la línea o, hay que utilizar la herramienta mkpasswd, ubicada en el directorio tools, que toma una cadena de texto y la devuelve encriptada.

Podemos verificar la correcta sintaxis del fichero de configuración ircd.conf mediante la utilización de la herramienta tools/chkconf.

También podemos modificar el fichero ircd.motd para establecer el mensaje del día que aparecerá a los usuarios que establezcan contacto con el servidor.

3.7 Ejecución del demonio

Por motivos de seguridad, no es posible lanzar el demonio como root, así que, o bien se lanza a mano como usuario irc, simplemente con:

/usr/local/ircd/ircd

o añadiendo la siguiente línea en el fichero /etc/inetd.conf:

ircd stream tcp wait irc /etc/ircd ircd -i

para que arranque automáticamente cada vez que se inicie el equipo servidor. Sin embargo, este segundo método no lo hemos podido confirmar porque, aparentemente, no ha funcionado.


Página siguiente Página anterior Índice general