Записки Админа

Записки, Freebsd, cisco,Eltex

Корпоративный IRC сервер на Freebsd

Установил у себя в сети очень маленький, но нужный сервис (чат)

Был выбран UnrealIRCd:

#подключаем модули для работы
loadmodule «/usr/local/lib/Unreal/commands.so»;
loadmodule «/usr/local/lib/Unreal/cloak.so»;
#Подключаем другие конфиги
include «help.conf»;
include «badwords.channel.conf»;
include «badwords.message.conf»;
include «badwords.quit.conf»;
include «spamfilter.conf»;
# имя информация и уникальный номер сервера
me
{
        name «marsikom.chat.loc»;
        info «marsikom server chat»;
        numeric 4;
};
# информация выводимая по команде /admin
admin {
        «marsikom»;
        «marsik»;
        «marsikom@mail.ru»;
};
# класы
class           clients
{
        pingfreq 90;
        maxclients 500;
        sendq 100000;
        recvq 8000;
};
class           servers
{
        pingfreq 90;
        maxclients 10;
        sendq 1000000;
        connfreq 100; 
};
# разрешения — клиенты начинающиеся с 192.168.1.*  в канал #marsik
с оператором /oper admin 1 с адресов 192.168.1.250 и 192.168.1.21
allow {
        ip             *@192.168.1.*;
        hostname       *@192.168.1.*;
        class           clients;
        maxperip 3;
};
allow           channel {
        channel «#marsik»;
};
oper admin  {
        class           clients;
        from {
        userhost *@192.168.1.250;
        userhost *@192.168.1.21;
        };
        password «1»;
        flags
        {
        netadmin;
        global;
        };
};
# адрес сервера и порт на котором слушаем только клиентов
listen         192.168.1.133:6667
{
        options
        {
                clientsonly;
        };
};
# пароли для рестарта и выключения oper-ом сервера
drpass {
        restart «123456»;
        die «123456»;
};
# логируем почти все, размер лога до 2х мегабайт 
log «/var/log/ircd/ircd.log» {
        maxsize 2097150;
        flags {
                oper;
                connects;
                server-connects;
                kills;
                errors;
                sadmin-commands;
                chg-commands;
                oper-override;
                spamfilter;
        };
};
# подключаем
alias NickServ { type services; };
alias ChanServ { type services; };
alias OperServ { type services; };
alias HelpServ { type services; };
alias StatServ { type stats; };
alias «identify» {
        format «^#» {
                target «chanserv»;
                type services;
                parameters «IDENTIFY %1-«;
        };
        format «^[^#]» {
                target «nickserv»;
                type services;
                parameters «IDENTIFY %1-«;
        };
        type command;
};
alias «services» {
        format «^#» {
                target «chanserv»;
                type services;
                parameters «%1-«;
        };
        format «^[^#]» {
                target «nickserv»;
                type services;
                parameters «%1-«;
        };
        type command;
};
alias «identify» {
        format «^#» {
                target «chanserv»;
                type services;
                parameters «IDENTIFY %1-«;
        };
        format «^[^#]» {
                target «nickserv»;
                type services;
                parameters «IDENTIFY %1-«;
        };
        type command;
};
alias «glinebot» {
        format «.+» {
                command «gline»;
                type real;
parameters «%1 2d Bots are not allowed on this server, please read the faq at http://www.example.com/faq/123»;
        };
        type command;
};
files
{
};
# ответ на вопросы про каналы на сервере
official-channels {
    «#marsik» { topic «chanel Marsikom»; };
};
# Устанвки сервера
set {
        network-name            «marsikom.chat.loc«;
        default-server          «marsikom.chat.loc»;
        services-server         «marsikom.chat.loc»;
        stats-server            «marsikom.chat.loc»;
        help-channel            «#marsik»;
        hiddenhost-prefix       «marsik»;
# не давать опа первому вошедшему в канал        
level-on-join           «none»;
# ключи — у вас свои — набираем цифры буквы большие и маленькие 
        cloak-keys {
                «Ctujlyz3vb(hVz4Zb7x4YwpW»;
                «fjklYBndjwkswOskk44kkk5kkcsdcq32342ghhhh»;
                «ntcnNdfyyzghjikjYf5677Ehf»;
        };
        /* on-oper host */
        hosts {
                local           «marsikom.chat.loc»;
                global          «marsikom.chat.loc»;
                coadmin         «marsikom.chat.loc»;
                admin           «marsikom.chat.loc»;
                servicesadmin   «marsikom.chat.loc»;
                netadmin        «marsikom.chat.loc»;
                host-on-oper-up «no»;
        };
};
/* Server specific configuration */
set {
        kline-address «marsikom@mail.ru»;
        modes-on-connect «+ixw»;
        modes-on-oper    «+xwgs»;
        auto-join «#marsik»;
        options {
                hide-ulines;
                show-connect-info;
        };
        maxchannelsperuser 10;
        anti-spam-quit-message-time 10s;
        oper-only-stats «okfGsMRUEelLCXzdD»;
        throttle {
                connections 3;
                period 60s;
        };
};
Добавляем в /etc/rc.conf:
#irc
unrealircd_enable=»YES»
фаеровол в /etc/pf.conf:
#irc
pass on $int_if proto tcp from any to $int_if port 6667  keep state
подгружаем правила
pfctl -f /etc/pf.conf
и стартуем:
/usr/local/etc/rc.d/unrealircd start
Подключался к серверу 192.168.1.133:6667 канал #marsik пользователь любой, клиентом Kvirc для Windows — так как у меня нету DNS сервера то при старте подключения клиента ругалось  что IRC сервер не может определить IP, также не понимало русских и украинских букв в ник пользователя чата —  пришлось откорректировать конфиг unrealircd:
….
set {
        kline-address «marsikom@mail.ru»;
        modes-on-connect «+ixw»;
        modes-on-oper    «+xwgs»;
        auto-join «#marsik»;
        options {
                hide-ulines;
                dont-resolve;
                show-connect-info;
        };
        allowed-nickchars {
        russian-w1251;
                ukrainian-w1251;
        };
maxchannelsperuser 10;
        anti-spam-quit-message-time 10s;
        oper-only-stats «okfGsMRUEelLCXzdD»;
        throttle {
                connections 3;
                period 60s;
        };
};
….
и перегрузка:

/usr/local/etc/rc.d/unrealircd restart

взято тут

Комментирование закрыто.