Pull to refresh

Сервер iRC за 5 минут

Лирическое отсупление:

В незапамятные времена, установив программу eMule, решил забраться на канал поддержки, пообщаться с пользователями. С тех пор началось мое знакомство с iRC. Как ни странно, до сих пор такой способ коммуникации пользуется популярностью. Недавно потребовалось организовать в локальной сети небольшой чат, поэтому мой выбор пал на связку UnrealiRCd и Anope, как более привычную и удобную по функциональности.

Устанавливаем сервер UnrealIRCd 3.2.8.1 Win32 SSL:

После приветственного окошка и прочтения лицензии требуется выбрать папку, в которую нужно установить UnrealIRCd. Почему-то многие советуют ставить в корень диска, но можно и оставить стандартное расположение в программных файлах, только выставить необходимые права на папку с файлами, если потребуется.

В процессе установки если у кого не установлен Microsoft Visual C++ 2008 Redistributable – выдаст запрос на скачивание и установку по сети.

Далее мы увидим окошко, в котором стоят галочки по умолчанию на пунктах «Create a desktop icon» и «Create certificate». Можно установит UnrealIRCd в качестве службы Windows. Следует учесть, что если выберете «Encrypt certificate», то запустить как сервис программу не удастся.

На завершающем этапе установки можно поснимать все галочки. Создать сертификат, и насладиться чтением изменений в новом релизе успеем позднее.

Теперь приступим к установке сервисов. Я остановил свой выбор на Anope. Итак, скачиваем файл (я выбрал Anope 1.8.5 with MySQL Windows Installer), запускаем установку и после нехитрых манипуляций с кнопочкой Next сервисы установлены. Не забудьте скопировать libmysql.dll в папку с программой.

Самое сложное – это выполнить настройку связки UnrealIRCd+Anope. Вернее, это очень просто, но, как ни странно, у многих возникают какие-то проблемы с конфигурированием и линковкой сервисов к серверу.
Итак, открываем папку с установленным сервером, ищем директорию doc и копируем из нее в папку с программой следующие файлы: example.conf (конфигурационный файл сервера), help.ru.conf (этот файл содержит текст команды /helpop). теперь переименовываем скопированный конфигурационный файл в unrealircd.conf. открываем любым текстовым редактором и приступаем к правке.

Найдем две следующие строки и рас комментируем их:

loadmodule "modules/commands.dll";
loadmodule "modules/cloak.dll";


Продвигаясь ниже по файлу ищем

include "spamfilter.conf";

Дописываем ниже:

include "aliases/anope.conf";

В блоке me указываем информацию о сети. В поле name вписываем доменное имя вашего сервера. В поле info — описание сервера (будет выдаваться по команде /whois), а в поле numeric можно оставить цифру 1 (уникальный номер сервера в сети).

me
{
name "my.irc.loc";
info "Home iRC server";
numeric 1;
};


В блоке admin указываются по желанию администратора сети контактные данные, владелец сервера etc. Данные выводятся по команде /admin «сервер».

admin {
"m00n";
"Ivan Petrov";
"admin@vseyaru.si";
"ICQ: 10000";
};


Остальные блоки нас пока не интересуют, находим блок oper. Прописываем ваш ник в качестве оператора сервера. Указываем хост, с которого разрешено становиться оператором человеку с данным ником. Символ «*» отменяет привязку к хосту, что запрещено в крупных и в нормально организованных сетях по соображениям безопасности. В поле password прописываем пароль, по которому вы будете идентифицироваться.

В блоке flags проставляем нужные нам флаги. С перечнем их можно ознакомиться на официальном сайте UnrealiRCd.

oper m00n {
class clients;
from {
userhost *;
};
password "ImSoLazyToEditThisField";
flags
{
netadmin;
can_zline;
can_restart;
can_die;
can_gzline;
can_gkline;
global;
can_rehash;
};
swhois "Вышиваю крестиком, пою, танцую, прекрасно готовлю, в совершенстве владею арабским, финским и японским";
};


Секция swhois позволяет прописать дополнительную информацию об операторе, выводящуюся по команде /whois ник_оператора.
Чуть ниже располагается блок listen, настраиваем его.
Пользователям в приведенном ниже примере будет разрешено коннектиться на сервер через 6667, 8067 и 6697 порты, причем 6697 в данном случае порт для ssl соединения.

listen *:6697
{
options
{
ssl;
clientsonly;
};
};

listen *:8067;
listen *:6667;


Можно дописать второй блок listen (а можно и указать все в одном, кому как удобнее) с указанием адреса и порта с которого к серверу будут присоединены сервисы. Если вам требуется ssl, нужно раскомментировать эту строку:

listen 127.0.0.1:1234
{
options
{
/* ssl; */
serversonly;
};
};


Самый важный блок, с которым почему-то возникают проблемы по настройке, это link. Указываем адрес сервисов, хостнейм, порт и пароли:

link services.irc.loc
{
username *;
hostname 127.0.0.1;
bind-ip *;
port 1234;
hub *;
password-connect " ImSoLazyToEditThisField ";
password-receive " ImSoLazyToEditThisField ";
class servers;
options {
/* Замечание: Вы не должны использовать автоподключение (autoconnect) при подключении сервисов */
/* autoconnect; */
/* ssl; */
/* zip; */
};
};


Ниже правим блок ulines. В них указаны сервер статистики и сервисы, они обладают большими полномочиями, чем обычные сервера в сети:

ulines {
services.irc.loc;
stats.irc.loc;
};


Настраиваем drpass, прописываем пароли для отключения и перезапуска сервера:

drpass {
restart " ImSoLazyToEditThisField ";
die " ImSoLazyToEditThisField ";
};


Находим секцию tld и немного правим. (В установленной директории с UnrealIRCd должны быть созданы предварительно файлы ircd.motd и ircd.rules (обычные текстовые файлы с измененным на motd и rules, соответственно, расширениями. Согласно правилам хорошего тона пишем в них сообщение дня и правила сервера):

tld {
mask *@*;
motd "ircd.motd";
rules "ircd.rules";
};


Далее идет блок set, непосредственная конфигурация сети. Имя сети, сервер по умолчанию, сервер с сервисами, сервер статистики, канал помощи, префикс для хоста:

set {
network-name "m00nNet";
default-server "my.irc.loc";
services-server "services.irc.loc";
stats-server "stats.irc.loc";
help-channel "#help";
hiddenhost-prefix "mn";
/* prefix-quit "no"; */


Натыкиваем cloack-keys (они нужны для сокрытия вашего реального IP адреса в сети) и прописываем дефолтные хосты, если вы включили host-on-oper-up:

cloak-keys {
"aoAr1HnR6gl3sJ7hVz4Zb7x4YwpW";
"J2p524pwH1HSwyTSsIz2Q0Cm0B1T";
"u3XWieDmUeuB3Dk6oBG6lard8BPq";
};
/* хост on-oper */
hosts {
local "locop.m00n.net";
global "ircop.m00n.net";
coadmin "coadmin.m00n.net";
admin "admin.m00n.net";
servicesadmin "csops.m00n.net";
netadmin "netadmin.m00n.net";
host-on-oper-up "no";
};
};


Настраиваем далее специфическую конфигурацию сервера. Если сеть русскоязычная, желательно разрешить пользователям использовать русские ники опцией allowed-nickchars { russian-w1251; };

set {
kline-address "admin@vseyaru.si";
auto-join "#help";
modes-on-connect "+ixw";
modes-on-join "+nt";
modes-on-oper "+xwgs";
oper-auto-join "#opers";
allowed-nickchars { russian-w1251; };
restrict-usermodes "ixw";
restrict-channelmodes "nt";
options {
hide-ulines;
/* Если желаете, вы можете включить проверку ident */
/* identd-check; */
show-connect-info;
};


Можно теперь считать сервер UnrealIRCd в каком-то смысле готовым к запуску и функционированию, основные настройки выполнены, остальное по желанию и по потребностям. Капитальное конфигурирование с прикручиванием модулей и прочего занимает длительное время.

Приступим к настройке сервисов Anope 1.8.5:

Как и в Unreal, у Anope есть свой конфигурационный файл образец example.conf, находящийся в поддиректории «data»; переименуем его в services.conf (желательно предварительно сделать копию). Открыть файл можно обычным блокнотом. Настоятельно рекомендую перед серьезным использованием сервисов прочитать документацию и настроить конфиг соответствующим образом, мы сделаем лишь первичную настройку.

Удаляем комментарий (символ #) из строки #IRCDModule "unreal32"

Ниже ищем строку

#RemoteServer2 127.0.0.1 6667 "mypass"

Раскомментируем, и заменяем на:

RemoteServer 127.0.0.1 1234 " ImSoLazyToEditThisField"

Находим строку ServerName и прописываем желаемый адрес сервера с сервисами:

ServerName "services.irc.loc"

Добавляем описание для сервисов:

ServerDesc "Services for m00nNet"

Устанавливаем HelpChannel:

HelpChannel "#help"

Имя сети:

NetworkName "m00nNet"

Расскомментируем строки и сгенерируем новые ключи:

UserKey1 8279441
UserKey2 5970804
UserKey3 1135462


Устанавливаем рута сервисов:

ServicesRoot "m00n"

Расскоментируем параметр GlobalOnCycle а также две строчки ниже, дабы при рестарте/линковке сервисов выдавалось сообщение для пущей политкорректности по отношению к пользователю:

GlobalOnCycleMessage "Services are restarting, they will be back shortly - please be good while we're gone"
GlobalOnCycleUP "Services are now back online - have a nice day"


В настройках NickServ (сервис, заведующий никами пользователей) расскомментируем NSDefKillQuick и заблочим #NSDefKill. Имхо, 20 секунд для идентификации пользователя вполне достаточно, 1 минута — это перебор.

Укажем желаемый префикс для пользователя. Если он не проидентифицировался или взял себе чужой ник, то его ник сменится на что-то вроде Guest1287

NSGuestNickPrefix "Guest"

Полезная опция NSNickTracking. Если вы любитель менять ники и нет желания идентифицироваться каждый раз при смене ника с незарегистрированного на зарегистрированный (=влом написать скрипт в полстрочки для клиента iRC) — то это для вас.

Остальное по желанию и по потребностям, изучаем и правим конфиги, прикручиваем различные требующиеся модули etc etc etc.

Ффух, вроде все настроено, теперь можно запустить UnrealIRCd и Anope.
В случае успеха предприятия мы увидим строчку типа

.:00:39:18:. –my.irc.loc- *** Notice -- (link) Link my.irc.loc -> services.irc.loc[@127.0.0.1.50337] established
————————————————————
.:00:39:18:. *Global* Services are now back online - have a nice day
————————————————————
.:00:39:18:. –my.irc.loc- *** Notice -- Link services.irc.loc -> my.irc.loc is now synced [secs: 14 recv: 1.1009 sent: 2.460]
————————————————————


Коннектимся к серверу командой /server localhost или /server my.irc.loc. Если желаете использовать ssl, то /server my.irc.loc:+6697.

Не забудьте открыть порты для доступа юзерам к вашему серверу. Если используется роутер, как в моем случае, – необходимо выполнить проброс портов и проверить доступность порта (например, зайти с любого другого адреса в сети на сервер). Со своего компьютера законнектиться на внешний адрес в случае роутера, как мы помним, проблемно, лучше использовать другой адрес для теста соединения.

Если же все пошло наперекосяк и сервисы просто наотрез отказываются линковаться к серверу, запускаем их с командной строки с параметрами -nofork –debug и ищем загвоздку. Аналогично с сервером, если не запускается – изучаем лог (service.log). Удачного линка!
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.