Logo de AulaDigital

Servidor IRC Como 3

Instalación y configuración de un servidor de IRC: Demonio de IRC: ircd 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:

  • INSTALL: describe los pasos a realizar para la instalación.
  • README.FIRST, README.hybrid, README.small_nets: como siempre, conviene leerlos antes de proceder a la instalación.
  • Opers.txt: describe los comandos para el operador del servidor IRC.
  • Doc/: este directorio contiene documentación sobre IRC.

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:

  • A: información sobre los administradores:
    1. Compañía
    2. Localización
    3. Dirección de contacto
  • M: información sobre el servidor:
    1. Nombre del host
    2. Dirección IP (opcional)
    3. Nombre del servidor IRC
    4. Puerto (generalmente, 6667).
  • K: restricciones de acceso a usuarios o redes completas:
    1. Nombre del host.
    2. Horario.
    3. Nombre de usuario.
  • C y N: conexiones a otros servidores de IRC.
  • R: establece restricciones a través de un programa externo de validación.
  • D: otra forma de impedir conexiones a redes enteras, mostrando un comentario.
  • E: excepciones a la línea K.
  • F: super-excepción (similar a la anterior, pero se salta los límites de clases de usuarios).
  • Y: define una clase de usuario:
    1. Número de clase.
    2. Frecuencia de ping (segundos).
    3. Usuarios por IP.
    4. Número máximo de enlaces.
    5. Tamaño de la cola de envío.
  • I: permite el acceso a algunas máquinas:
    1. Dominio o dirección IP.
    2. Password del cliente.
    3. No documentado (generalmente '*').
    4. No documentado.
    5. Número de clase asociada.
  • o: define operadores locales (recomendado):
    1. usuario@host.
    2. Clave encriptada.
    3. Nick del operador.
    4. No documentado (generalmente 0).
    5. No documentado (generalmente 0).
  • O: define operadores globales.
  • P: configura puertos adicionales.

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