ircd
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.
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.
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.
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.
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
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:
M
: información sobre el servidor:
K
: restricciones de acceso a usuarios o redes completas:
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:
I
: permite el acceso a algunas máquinas:
o
: define operadores locales (recomendado):
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.
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.