IRC Info > Статьи > Настройка IRC сервера и сервисов
Карта Домой

Настройка IRC сервера и сервисов

Данная статья предназначена для администраторов локальных сетей, которым не безразлична судьба чата, и которые хотят сделать его на основе IRC, либо для интересующихся структурой IRC сетей. Это не руководство пользователя по IRC! В статье мы рассмотрим установку и настройку сервера UnrealIRCD и сервисов Anope под ОС Windows. Настройка под никсами принципиально не отличается.

Почему IRC?

Да потому, что:

  • IRC отлично справляется с нагрузкой от десятков до тысяч пользователей, не нагружая сервер
  • IRC построено на каналах: пользователи могут общаться группами, не мешая друг другу, но в то же время существуют и разговоры друг с другом
  • IRC позволяет передавать файлы по DCC
  • Существуют как платные, так и бесплатные IRC сервера, сервисы, клиенты под любую операционную систему, на любой цвет и вкус. Пользователи могут выбрать любую программу для общения в IRC, и все они будут совместимы
  • IRC позволяет шифровать трафик при помощи SSL
  • IRC позволяет администрировать каналы. Причем тому, кто их зарегистрировал, а не только владельцу сети. Самый обычный пользователь может быть владельцем супер популярного канала.
  • IRC имеет встроенные механизмы борьбы с флудом, контроль и регистрацию ников/каналов, контроль доступа на каналы их владельцами

Если вы уже знаете, как технически выглядит структура IRC сети, то пропустите теоретический раздел.

Теория

Представим структурную схему IRC сети. Здесь объектами являются приложения (не компьютеры). Физически все это может располагаться и на одном компьютере. Направление стрелок означает порядок соединения (кто к кому подключается).

Схема IRC сети

Здесь вы видите 2 сервера, одни сервисы, и клиентов, подключенных к серверу. Теперь объясню, зачем всего так много, и как все это работает. Первое, о чем оговорюсь, это количество серверов. В вашей сети должен быть как минимум один сервер. В большинстве случаев его одного будет достаточно. Большее количество серверов требуется, если вы, например, хотите объединить чат в своей локальной сети с чатом в соседней сети. Далее будет обсуждаться сеть, состоящая из одного сервера (но все сказанное справедливо и для многосерверной сети).

Сервер (IRC демон, IRCD). Для чего нужен сервер, думаю, понятно. К нему подключаются клиенты. Сервер обычно работает на 6667 порту, поэтому для его запуска не требуются (скорее не рекомендуются) права суперпользователя (root). На момент написания статьи наиболее популярным серверным ПО является Unreal. Существует большое количество его модификаций, а также серверное ПО Bahamut, Hybrid и другие. Большинство серверов кроссплатформенны: вы можете использовать их как на *nix-подобных операционных системах, так и на Windows, также оно не привередливо к железу сервера (подойдет и старый домашний компьютер). Настройка серверного ПО будет рассмотрена в разделе настройки.

Ваш сервер должен быть доступен 24 часа в сутки, 7 дней в неделю. В момент его отсутствия люди не смогут общаться в IRC.

Сервисы — опциональная часть IRC сети. То есть вы можете свободно обойтись и без них. Но они заметно облегчат вам жизнь. Сервисы осуществляют регистрацию и контроль IRC каналов и ников. То есть без них, когда Вы выходите из IRC, ваш ник может быть использован кем-либо другим, а оператором канала становится первый вошедший на него. Сервисы предотвратят такую ситуацию. Сервисное ПО предоставляется разработчиками Anope и другими. Оно также кроссплатформенно и не привередливо к ресурсам сервера.

Сервисы подключаются к одному из серверов (главному) по TCP/IP и потому могут располагаться как на том же физическом сервере, что и IRCD, так и на отдельном компьютере. Рекомендуется держать сервер и сервисы на одном компьютере.

Пользователи… Пользователи могут использовать любой IRC клиент, какой им заблагорассудится. Прекрасно с этой ролью справится KVIrc, предоставив пользователю красивый современный интерфейс, смайлы, аватары.

Настройка сервера Unreal

Мы будем ставить Unreal IRCD — один из самых популярных IRC серверов с открытым программным кодом, его разработка была начата в далеком 1999 году на базе Dreamforge IRCd (сервера, который использовался в DALnet). За эти годы было добавлено множество функций, вот некоторые из них:

  • Флаги +h (полуоп), +q (владелец канала), +a (администратор канала)
  • Система анти-флуд и анти-спам
  • Блокирование цветов и обесцвечивание текста
  • Виртуальные хосты
  • SSL
  • Поддержка модулей и многое другое…

Unreal может запускаться на множестве ОС, включая Windows, Linux, BSD, Mac OS X. На сегодняшний день последней версией сервера является Unreal IRCD 3.2.6, установка других версий принципиально ничем не отличается.

  1. Скачиваем сам сервер, например, из раздела «Сервера и сервисы»
  2. Устанавливаем Unreal в любую директорию, например: C:\unreal. Если вы хотите, чтобы сервер стартовал как служба Windows каждый раз при включении компьютера, в процессе установки активируйте соответствующий чекбокс (не рекомендуется для начинающих или тестеров).
  3. Приступаем к процессу настройки, из папки «doc» директории, куда мы установили ircd копируем файл конфигурационный файл «example.ru.conf» в корневую директорию сервера (у нас — c:\unreal). Переименовываем его в «unrealircd.conf». Так же копируем и файл «help.ru.conf», который содержит текст команды /helpop.

    Примечание: в предыдущих версиях Unreal файл назывался example.conf, то есть перевода на русский язык не было.

  4. Открываем конфиг любым текстовым редактором, например, стандартным блокнотом и читаем введение. В статье описаны лишь самые основные настройки, для серьезного использования сервера необходимо обратиться к документации с официального сайта или из дистрибутива программы.
  5. Находим и раскоментируем (удаляем символы «//» в начале) следующие строки:

    //loadmodule "modules/commands.dll";
    //loadmodule "modules/cloak.dll";
  6. Несколькими строками ниже находим

    me
    {
        name "irc.foonet.com";
        info "Сервер FooNet";
        numeric 1;
    };

    В поле name вписываем my.irc.loc. В поле info — описание сервера (будет видно в /whois), а в поле numeric — цифру 1 (уникальный номер сервера в сети).

    Конфиг сервера Unreal Описание в whois

    Примечание: для поиска удобно использовать комбинацию клавиш CTRL и F

  7. В admin {} пишем свои координаты, они будут доступны по команде /admin имя_сервера
  8. В директиве oper {} (IRC-операторы для данного сервера) изменяем стандартные значения на:
    oper den {
        class           clients;
        from {
            userhost *;
        };
        password "qwerty";
        flags
        {
            netadmin;
            can_zline;
            can_gzline;
            can_gkline;
            global;
        };
    };

    Вместо «den» пишите свой опер-логин, вместо «qwerty» — свой пароль. Звёздочка рядом с userhost отменяет привязку к хосту (плохо с точки зрения безопасности и запрещено в некоторых сетях).

  9. Находим секцию tld
    tld {
        mask *@*.ru;
        motd "ircd.motd.ru";
        rules "ircd.rules.ru";
    };

    Так как у нас используется только один язык заменяем на:

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

    Обязательно создаем файлы ircd.motd и ircd.rules в директории сервера (обычные текстовые файлы и меняем расширение) и при желании пишем в них сообщение дня и правила сервера соответственно.

  10. Переходим к директиве set, в ней должно быть следующее (не забываем читать и комментарии в конфиге):

    /* Конфигурация Сети */
    set {
    	network-name 		"my.IRC";
    	default-server 		"my.irc.loc";
    	services-server 	"services.irc.loc";
    	stats-server 		"stats.irc.loc";
    	help-channel 		"#help";
    	hiddenhost-prefix	"loc";
    	cloak-keys {
    		"qWertyu1";
    		"qWertyu2";
    		"qWertyu3";
    	};
    	hosts {
    		local		"locop.roxnet.org";
    		global		"ircop.roxnet.org";
    		coadmin		"coadmin.roxnet.org";
    		admin		"admin.roxnet.org";
    		servicesadmin 	"csops.roxnet.org";
    		netadmin 	"netadmin.roxnet.org";
    		host-on-oper-up "no";
    	};
    };
  11. Для запуска сервера обязательно необходимо указать адрес почты для запросов о снятии kline (банов на сервере):

    /* Специфическая конфигурация сервера */
    
    set {
        kline-address "your_email@mail.ru";
    …
    }
  12. Теперь займемся непосредственно настройкой для соединения с сервисами. Заменяем код:

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

    на:

    listen 127.0.0.1:1234
    {
        options
        {
            serversonly;
        };
    };

    По порту 1234 с адреса 127.0.0.1 (локальный компьютер) к серверу будут присоединены сервисы.

  13. Изменяем директиву link, заменяем на:

    link services.irc.loc
    {
        username    *;
        hostname    127.0.0.1;
        bind-ip     *;
        port        1234;
        hub         *;
        password-connect "passlink";
        password-receive "passlink";
        class           servers;
    };

    Таким образом, мы делаем возможным подключение сервисов с адреса 127.0.0.1 по порту 1234, используя пароль «passlink».

  14. Устанавливаем U-линии:

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

    В них перечислены сервер статистики и сервисы, они обладают большей «властью», нежели обычные сервера в сети.

Теперь можно попробовать включить сервер, запускаем файл wircd.exe и коннектимся обычным IRC клиентом на 127.0.0.1 (порт 6667). Для получения статуса оператора пишем: /oper ваш_логин ваш_пароль (у нас было den и qwerty соответсвенно).

Установка сервисов Anope

Anope — одни из самых известных сервисов для IRC. Stable-версия — месяцами протестированный программный продукт по уверениям создателей «крепкий как скала». В то же время Development-ветка содержит множество новых возможностей, которые получит только следующая финальная Stable версия (в случае Anope — 1.8.0). В Anope входят следующие сервисы: NickServ, ChanServ, MemoServ, OperServ, BotServ, HostServ (виртуальные хосты), а так же некоторые другие, менее популярные. Мы будем ставить версию 1.7.18 (ветка Development) — на момент написания статьи она является последней.

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

  1. Удаляем комментарий (символ #) из строки #IRCDModule "unreal32"
  2. Ниже ищем строку (не забываем про CTRL+F)
    RemoteServer    localhost 6667 "mypass"

    и заменяем на:

    RemoteServer 127.0.0.1 1234 "passlink"

    Внимание: IP адрес, порт и пароль должны совпадать с теми, что были указаны в конфигурации сервера (пункты 12 и 13).

  3. Находим строку

    ServerName  "services.localhost.net"

    исправляем на:

    ServerName "services.irc.loc"

    Внимание: должно совпадать с тем, что указано в U-Lines сервера (шаг 14)

  4. Раскоментируем строки

    #UserKey1 9866235
    #UserKey2 8362013
    #UserKey3 2362899

    И обязательный заменяем каждый UserKey на случайный набор из 7 цифр (они не должны повторяться).

  5. Меняем NSDefLanguage 1 на NSDefLanguage 11 (язык сервисов по умолчанию станет русский)
  6. Раскоментируем строку

    #ServicesRoot   "dengel anope"

    и заменим dengel anope на свой ник. Это ник супер-пользователя или «root», который может раздавать статус администратора сервисов или снимать его с других пользователей.

  7. Запускаем сервисы и получаем строку вида:

    [my.irc.loc]: *** Notice -- (link) Link my.irc.loc -> services.irc.loc[@127.0.0.1.2261] established

    Это говорит нам об успехе предприятия.

Решение проблем

При попытке запуска сервисов может вылезать сообщение «This application has failed to start because the application configuration is incorrect. Reinstalling the application may fix this problem». Дело в том, что, начиная с версии 1.7.15 для запуска сервисов Anope необходимы библиотеки Microsoft Visual C++ 2005, скачать их можно с нашего сайта (Windows installer должен быть версии от 3.0 и выше).

Дело осложняется при использовании последней на момент написания статьи версии сервисов 1.7.18, если после установки обновления Visual C++ возникает та же ошибка, необходимо проделать следующее:

  1. Найти (например, с помощью стандартной утилиты поиска) файл msvcr80.dll
  2. Посмотреть его версию в свойствах файла Версия msvcr80.dll
  3. Открыть блокнотом файл anope.exe.manifest директории Anope и изменить в нём номер версии на тот, что был указан в свойствах файла Файл anope.exe.manifest

Что еще посмотреть?

Автор: IRC Info.RU, использованы материалы: KVIrc, BestIRC, Anope

Рейтинг: 8.6 (89 голосов)
Пожалуйста, оцените данную статью (страница перезагружена не будет).