En un principio tenía instalado
dancer-ircd en mi GNU/Debian, y los
bots de servicios eran
dancer-services.
Dado que no fui capaz de linkar más servidores, al final
probé
Unrealircd, que a pesar de tener
que compilarlo, el proceso es realmente sencillo. La ventaja es que en
Suse solo hay un ircd, entonces al compilar
Unreal en el pc con Suse y en
el pc con Debian, quedaban ambos con el mismo servidor de irc.
Sólo encontré un problemilla a la hora
de compilar, y es que si instalas Unreal en un directorio distinto al
de las fuentes, faltan un par de archivos. Simplemente copia esos
archivos al directorio adecuado, o bien instalalo en el directorio de
las fuentes.
La mayor parte de las preguntas que se hacen durante la
compilación son obvias, quizás ésta es la
única que puede causar duda:
Would
you like to compile as a hub or as a leaf?
Type Hub to select hub and Leaf to
select leaf.
[Hub] -> [enter]
La diferencia entre Hub y Leaf radica en que el primero lo debemos
elegir si tenemos un servidor al que vamos a linkar varios servidores.
Si a nuestro servidor no se va a linkar nadie, debemos compilarlo como
leaf.
Al terminar la compilación, debemos configurarlo. Para ello
debemos crear un fichero
unrealircd.conf,
o bien copiar el ejemplo y modificarlo a nuestro gusto.
A continuación detallo la configuración de Unrealircd:
me {
name "braindead.fromdahell.org";
info "Braindead IRC Server";
numeric 1;
};
Aquí definimos el nombre del servidor y la información.
numeric 1 indica el número de servidor (1-254); cuando tengamos
dos o más servidores linkados no pueden tener igual
número.
admin
{
"Zug";
"zug@fromdahell.org";
};
Aquí ponemos nuestra información, la información
del administrador del ircd. Se puede ver tecleando el comando /admin.
Es el equivalente a las A lines de otros ircds.
En esta seccion definimos la clase clients; en ella la frecuencia a la
que se comprobará si el usuario sigue "vivo" (pingfreq), el
máximo de clientes que aceptamos (maxclients) y sendq, que es el
límite de información enviada por el usuario de esta
clase.
class
servers
{
pingfreq 90;
maxclients 4;
sendq 1000000;
};
Aquí hemos definido una nueva clase: servers. La frecuencia de
ping será 90, máximo 4 servidores linkados a nosotros y
1000000 de límite de envio.
allow
{
ip *;
hostname *;
class clients;
maxperip 2;
};
Con esta línea aceptamos conexiones de clientes desde cualquier
IP (*), cualquier hostname (*) y con un máximo de dos conexiones
por IP (clones).
allow
{
ip *;
hostname *@deneb.freedomshell.com;
class clients;
maxperip 10;
};
Con esto permitimos 10 clones desde el host deneb.freedomshell.com.
oper
zug {
class clients;
from {
userhost *@192.168.0.2;
};
password "aAtCDSu1zCb4k";
flags
{
netadmin;
global;
};
};
Aquí definimos los operadores de red que habrá en nuestra
red: definimos operador zug que se conecta desde la IP 192.168.0.2,
será admnistrador de red (netadmin). El password no es
aAtCDSu1zCb4k, está encriptado. Para generar passwords
encriptados entraremos en el directorio crypt de Unreal3.2, y a
continuación haremos un make, se generará la utilidad
mkpasswd; con ella podemos generar los passwords encriptados. Nota: si
quisieramos que zug fuese solamente ircop, sustituiríamos
netadmin por ircop en la seccion flags. Os incluyo aquí la lista
completa de flags, sacada del fichero unrealircd.conf.txt incluido en
UnrealIRCD:
Old | New |Description
------- |---------------- |------------------------------
N | netadmin | Network Admnistrator
T | techadmin | Technical Administrator
A | admin | Server Administrator
a | sadmin | Services Operator
C | coadmin | Co Administrator
o | local | Local IRC Operator
O | global | Global IRC Operator
r | can_rehash | Is able to rehash the server
e | eyes | Can use the eyes message mode
D | can_die | Can shutdown the server (with password)
R | can_restart | Can restart the server (with password)
h | helpop | ..is available for help. Can see /helpops
g | can_globops | Can use /globops
w | can_wallops | Can use /wallops
l | locop | Can't kill remote users
c | can_localroute | Can locally /connect and /squit servers
L | can_globalroute | Can globally /connect and /squit servers
k | can_localkill | Can do local /kills
K | can_globalkill | Can do global /kills
b | can_kline | Can set a /kline
B | can_unkline | Can unset a /kline
n | can_localnotice | Can send local notices
G | can_globalnotice| Can send global notices
z | can_zline | Can set /zlines
^ | can_stealth | Is invisible to /names
Para hacernos oper, ejecutaríamos
/oper usuario clave. Una vez
que somos opers, podemos releer la configuración de unreal sin
tener q matar el proceso e iniciarlo de nuevo, con un simple
/rehash.
listen
*:6600;
listen *:6667;
listen *:8888;
Aquí decimos a través de qué puertos se
podrá conectar a nuestro servidor. He definido el puerto 6600
para linkar con los services (chanserv, nickserv, memoserv...), el
puerto 6667 que es el más habitual y el 8888, para que se pueda
entrar desde sitios donde chapan conexiones al puerto 6667, por ejemplo
universidades :-).
link
servicez.fromdahell.org {
username *;
hostname *;
bind-ip *;
port
6600;
hub
*;
password-connect "servpass";
password-receive "servpass";
class servers;
options { autoconnect; };
};
Este bloque es opcional, solamente si vas a añadir services a tu
servidor. Aquí definimos el nombre de los services:
servicez.fromdahell.org, en el puerto 6600 (el que reservamos para
estos). El password de conexion y recepción será el
mismo, en este caso servpass.
link
alamut.fromdahell.org {
username *;
hostname 213.37.65.30;
bind-ip *;
port
6667;
password-connect
"clavedelink";
password-receive
"clavedelink";
class servers;
options { autoconnect; };
};
Esta sección es también opcional, solamente si vais a
linkar varios servidores. En este caso linkaremos con el servidor
alamut.fromdahell.org, con IP 213.37.65.30, por el puerto 6667 y con la
clave clavedelink. Ten en cuenta que la configuración del
servidor alamut debe tener numeric 2, ya que el numeric de braindead es
1, y no pueden ser iguales. Debes tener tambien a tener en cuenta que,
si tienes services puestos, en alamut no debes añadir el link a
los services, solamente la linea ulines que comentamos más
abajo.
ulines
{
servicez.fromdahell.org;
};
Debemos incluir esta línea para que los services funcionen, en
este caso son servicez.fromdahell.org.
drpass
{
restart "restartpass";
die
"diepass";
};
Aquí ponemos los passwords de reinicio y "muerte" del servidor.
ban
nick {
mask "*C*h*a*n*S*e*r*v*";
reason "Reserved for Services";
};
Con esta línea reservamos los nicks que contengan chan para los
services.
ban
user { mask *PhAnATiC*@*; reason "scripts no permitidos"; };
ban user { mask *ircap*@*; reason
"scripts no permitidos"; };
ban user { mask *DTP*@*; reason
"scripts no permitidos"; };
ban user { mask *x-cript*@*; reason
"scripts no permitidos"; };
ban user { mask *MESIAS*@*; reason
"scripts no permitidos"; };
ban user { mask *orbital*@*; reason
"scripts no permitidos"; };
ban user { mask *zombie*@*; reason
"scripts no permitidos"; };
Esto también es opcional, es un ejemplo de como banear los
malditos scripts que abundan por irc-hispano.
vhost
{
vhost
my.sample.vhost;
from {
userhost *@*;
};
login user;
password password;
};
Con esto definimos un vhost, con user "user" y password "password",
disponible para cualquier usuario. Para usarlo sería: /vhost
user password
set {
network-name
"irc.fromdahell.org";
default-server
"braindead.fromdahell.org";
services-server
"servicez.fromdahell.org";
stats-server
"statz.fromdahell";
help-channel
"#fromdahell";
hiddenhost-prefix "fromdahell";
prefix-quit
"";
cloak-keys {
10000;
20000;
30000;
};
/* on-oper host */
hosts {
local
"locop.fromdahell.org";
global
"ircop.fromdahell.org";
coadmin
"coadmin.fromdahell.org";
admin
"admin.fromdahell.org";
servicesadmin "csops.fromdahell.org";
techadmin
"techadmin.fromdahell.org";
netadmin
"netadmin.fromdahell.org";
host-on-oper-up "yes";
};
};
set {
kline-address
"zug@fromdahell.org";
modes-on-connect "+xwG";
oper-auto-join
"#opers";
dns {
nameserver 127.0.0.1;
timeout 2s;
retries 2s;
};
options {
enable-opermotd;
enable-chatops;
hide-ulines;
webtv-support;
identd-check;
};
socks {
ban-message "Insecure SOCKS server";
quit-message "Insecure SOCKS server";
ban-time "4d";
};
maxchannelsperuser 10;
};
Aquí definimos la información de la red.
loadmodule
"src/modules/m_sethost.so";
loadmodule "src/modules/commands.so";
Y finalmente cargamos los modulos m_sethost y commands; el primero de
ellos para que un operador se pueda poner el vhost que quiera sin tener
que modificar la configuración mediante /sethost
my.virtual.host; el segundo añade una serie de comandos como
/who.
Servicios Epona:
Qué es Epona?
Epona es un conjunto de bots de servicio (Nickserv, Chanserv, Memoserv,
Botserv y Operserv). Funciona para diversos ircds: Dreamforge, Bahamut,
Unreal y Ultimate ircd.
En este documento explicaré exclusivamente cómo se
instalan y configuran los Epona services.
· Chanserv: Registro y manejo de canales.
· Nickserv: Registro y manejo de nicks.
· Memoserv: Envio de mensajes a usuarios con nick registrado.
· Botserv: Creación y configuración de bots para
canales.
· Operserv: Estadísticas del irc y comandos para IRCops.
Compilación e Instalación
A continuación explico como hice la configuración:
Creamos un usuario para los services, yo usé el mismo usuario
que para el ircd: user ircd. A continuación bajamos la
última version de epona de su página web y hacemos lo
siguiente:
bash$
tar zxvf epona-1.4.6.tar.gz
bash$ cd epona-1.4.6
bash$ ./configure
Leemos la información que aparece :). Os comento lo que yo he
ido eligiendo:
In
what directory do you want the binaries to be installed?
Press Return for the default, or
enter a new value.
[/home/zug/services]
/home/zug/services
Where do you want the data files to
be installed?
[/home/zug/services]
/home/zug/services
Which group should all Services data
files be owned by? (If Services
should not force files to be owned by
a particular group, just press
Return.)
[]
[enter]
What should the default umask for
data files be (in octal)?
(077 = only accessible by owner; 007
= accessible by owner and group)
[077]
077
Which
of the following is closest to the type of server on your IRC
network?
1) DreamForge
4.6.7 [this is an old IRCd, you should upgrade to Bahamut]
2) Bahamut 1.4.27 or
later
3) UnrealIRCd 3.1.1 or
later
4) UltimateIRCd 2.8.2 or
later
5) Sequana 0.2.0 or later
[no default]
3
Do you want to use the MD5
message-digest algorithm to encrypt passwords?
(Selecting "yes" protects your
passwords from being stolen if someone
gains access to the Services
databases, but makes it impossible to recover
forgotten passwords.)
NOTICE: this should be considered an
EXPERIMENTAL feature.
[no]
no
If you are switching from another
services package that is listed there,
enter its associated number to be
able to convert your old databases using
the given parameter on the command
line the first time you launch Epona.
If no conversion is needed, type no.
1) ircservices
4.4.x (using -is44)
[no]
enter
Do you want to compile Epona with
threading support?
If you want to use the proxy
detector, you MUST have this.
If you encounter problems during
compilation, you should disable
it anyways.
[no] yes
Lo siguiente será compilarlo: ejecutaremos gmake si estamos en
un sistema BSD, make en caso contrario. Una vez compilado hacemos un
make install y si todo va bien se instalará en el directorio
~/services.
Una vez alli copia el fichero examples.conf por services.conf, y lo
modificas a tu gusto. Los campos más importantes son Server Name
y Remote Server.
Una vez que hayas configurado todo, no olvides añadir la seccion
link y añadir la uline en tu ircd.conf, tal y como he explicado
en el documento sobre UnrealIRCD. Si necesitas ayuda puedes contactar
conmigo por mail o bien por irc (mira la sección irc).
Estos son programas relacionados que pueden resultar útiles:
iroffer -> Servidor XDCC
figlet -> Generador de MOTD's (texto en grande
hecho a base de ascii)
garnax -> File Server