如何在Debian 7 运行的UnrealIRCd聊天服务器

在Debian 7运行与UnrealIRCd一个IRC聊天服务器。

介绍

在本文中,我们将学习如何使用虚幻IRC守护进程(IRCd)构建,安装和配置IRC服务器:允许用户通过IRC(Internet中继聊天)连接的服务。 IRC是一种允许用户通过网络发送的消息实时聊天的协议。

特别是,我们将在一个Debian 7 X64的飞沫本教程。

第一步 - 创建ircd用户

我们将假设您刚刚启动了一个新的Debian 7 x64 Droplet,并且您以root身份登录。 如果您当前不是root用户,请切换到root用户:

su

与任何守护程序或服务外部用户可以看到,最好不要以root身份运行UnrealIRCd,出于安全和性能原因。 因此,我们将首先创建一个专门运行守护进程的用户。

adduser ircd

在提示符处为用户创建新密码。 我建议使用创建密码创建密码的方法XKCD -即,结合3-5个相当普遍的字典单词变成一个难忘的组合,它的长度将足够的熵(强度)添加到密码,使其难以对计算机的猜测,但容易让人记住。

如果没有提示您创建密码,只需键入:

passwd ircd

然后将提示您创建密码。

给予用户权限

现在我们需要确保服务器来使用sudo,一个流行的实用程序,用于基于UNIX的系统(如Linux)。 对于那些不熟悉,sudo命令允许用户执行用root(su超级用户 )命令的权限,因此得名- S UPERüSER 做的 -它建立的前提条件库时,我们需要。

Debian 7默认安装了sudo。 如果需要安装它,请键入:

apt-get install sudo

现在,我们知道在安装sudo的,你需要添加我们前面的Sudo组创建允许其访问sudo命令的用户ircd的

为此,请运行以下命令:

adduser ircd sudo

这是所有的用户创建步骤! 现在我们可以简单地切换到新用户:

su ircd

更改为IRCD用户的主目录。

cd ~

第二步 - 安装先决条件

在我们可以安装UnrealIRCd之前,有一些库我们缺少。 这些包括用于安全连接的库以及构建UnrealIRCd所需的编译器和库。

这些软件包使海湾合作委员会建立必要的 ,OpenSSL的 ,libcurl4-的OpenSSL开发中的zlib1g, 的zlib1g-dev的 ,zlibc, 中的libgcrypt11,中的libgcrypt11-dev的

我们将使用APT在Debian中安装这些。 运行以下命令以获得最新的软件包管理器:

sudo apt-get update

运行以下命令安装必备软件。 提示时输入yes。 您可能会发现其中一些软件包已经安装 - 在编写本书时,zlib1g和openssl已经包含在Debian中 - 但是这里列出了它们的完整性。

sudo apt-get install make gcc build-essential openssl libcurl4-openssl-dev zlib1g zlib1g-dev zlibc libgcrypt11 libgcrypt11-dev

现在是抓住小吃的好时机,因为它可能需要一段时间,包管理器下载并安装所有的包。

一旦完成,我们可以下载并安装UnrealIRCd并开始构建过程。

第三步 - 安装UnrealIRCd

默认情况下,UnrealIRCd不可用作Debian或任何主要发行版的包,所以我们将手动下载并从源代码构建它。

我们将使用Debian中内置的wget实用程序下载UnrealIRCd的源码包。 如果需要下载wget,请运行以下命令:

sudo apt-get install wget

您需要从UnrealIRCd的网站获取下载链接,以便继续安装。 头向官方UnrealIRCd下载页面并下载最新的稳定源分支。

当您向我们显示下载页面时,您可能会看到一个链接,其中显示“下载应该在5秒内开始,如果它不点击这里。 这是链接到包含虚幻的源代码文件和URL,你应该用wget使用。

在写这篇文章的时候,URL是http://unrealircd.org/downloads/Unreal3.2.10.4.tar.gz

虽然身份登录我们的ircd的用户,让我们确保我们在我们的主目录:

cd ~

现在,让我们下载源代码警告:使用--no-check-certificatewget标志是获得该文件一个不太安全的方式。 如果你的目标是安全超过速度,你应该使用不同的方法:

wget --no-check-certificate http://unrealircd.org/downloads/Unreal3.2.10.4.tar.gz

将源代码提取到其自己的文件夹:

tar xzvf Unreal3.2.10.4.tar.gz

现在我们可以切换到新目录:

cd Unreal3.2.10.4

最后,让我们开始构建过程。 使用内置的源代码包的./config中脚本:

./Config

通过阅读发行说明,按回车键继续滚动浏览。 留意底部的百分比数字,这样你就不会错过任何问题。 一旦发布说明结束并且配置脚本启动,UnrealIRCd将开始询问您的问题。

What directory are all the server configuration files in?

您可以保留此默认值。 Enter键继续。

What is the path to the ircd binary including the name of the binary?

将此保留为默认值。 Enter键

What should the default permissions for your configurations files be?  (Set this to 0 to disable)

再次,保留默认。 下一个问题很重要:

Do you want to support SSL (Secure Sockets Layer) connections?

回答:

Yes

默认情况下UnrealIRCd的配置脚本不支持SSL连接,但在这里输入Yes将启用它。 这就是我们之前安装OpenSSL的原因。

然后系统将提示您输入OpenSSL的路径。 因为我们让APT更早的处理这个问题,我们可以默认。

If you know the path to OpenSSL on your system, enter it here. If not
leave this blank (in most cases it will be detected automatically).

Enter键

下一个问题对于在其Droplet上使用IPv6的某些用户很重要。

Do you want to enable IPv6 support?

如果启用了IPv6时,初始设置飞沫您应该只回答这个问题。 如果你没有对你的Droplet支持IPv6呢,你可以在默认情况下(“否”),然后按Enter离开这个。

下一个问题涉及将在IRC网络中使用多个链接服务器操作IRC守护程序的用户。 Ziplinks本质上是一种在IRC服务器之间通过压缩数据在发送之前交换数据时节省带宽的方法。 您不需要回答是的 ,但我们建议你这样做。 如果遇到构建UnrealIRCd在这篇文章中没有记录的困难,尝试再次运行./config中 ,并没有回答这个问题。

Do you want to enable ziplinks support?

回答:

Yes

当被问及路径,然后按Enter键

If you know the path to zlib on your system, enter it here. If not
leave this blank

接下来的几个问题都可以用默认按Enter回答:

Do you want to enable remote includes?
Do you want to enable prefixes for chanadmin and chanowner?
What listen() backlog value do you wish to use?
How far back do you want to keep the nickname history?
What is the maximum sendq length you wish to have?
How many buffer pools would you like?
How many file descriptors (or sockets) can the IRCd use?
Would you like to pass any custom parameters to configure?

一旦您完成回答问题,配置脚本将开始为构建过程准备源目录。 这可能需要一些时间,所以请随时休息一下。

最终将提示您为IRCd生成SSL证书。 除非您已经拥有由正确的证书颁发机构颁发的SSL证书,否则您可能只想将此选项保留为默认值(应为“是”),这是我们将在本教程中执行的操作。

系统会要求您提供有关服务器的信息,例如国家/地区,省/市/自治区/直辖市和组织。 你可以输入任何你觉得有意义在这里。 当要求输入您的服务器的域名时,应输入您的域名。

Enter键继续。 您将看到有关签名证书的快速消息。 再次按Enter键 ,配置过程就完成了。

第四步 - 构建UnrealIRCd

这是他们最简单的一步! 移动到〜/虚幻[你下载任何版本]目录:

cd ~/Unreal3.2.10.4

构建它!

make

构建过程应该开始。 这是最长的一步,如果你还没有在最后两个休息时间喝茶或咖啡,现在绝对是时候这样做 - 它将需要几分钟来完成构建过程。

第五步 - 配置UnrealIRCd

构建过程完成后,您现在可以配置新的UnrealIRCd服务器。 配置文件用类似C语法编写。 它很长,但相当简单。

复制示例配置文件的副本:

cp ~/Unreal3.2.10.4/doc/example.conf ~/Unreal3.2.10.4/unrealircd.conf

这将把英语示例配置文件复制到根虚幻目录。 如果您的服务器将使用英语以外的语言操作,欢迎您使用两个字母的语言代码,无论您的目标受众将使用什么; FR的.conf ./doc.example。在写这篇文章,德语,西班牙语,法语,匈牙利语,荷兰语,俄语和土耳其语的时间一起支持英语,但在本教程中我们将解决英语示例配置。

使用您喜欢的文本编辑器打开配置文件:

nano ~/Unreal3.2.10.4/unrealircd.conf

现在,让我们开始编辑我们喜欢的配置文件。 我们将从上到下依次遍历配置文件,因此这些段的顺序可能有点奇怪。 从上到下是我们目的最直接的方法。

请注意,此配置文件中有大量注释掉的部分,以及一些不影响大多数用户的设置,我们不会详细显示。

模块

UnrealIRCd被吹捧为一个模块化的IRCD,因为你可以无需重新编译整个源代码库和装载/卸载它在飞行的守护进程创造功能。 因此,一些核心功能存储在两个股票模块虚幻的命令模块,和外衣模块。 寻找这两行:

// loadmodule “src/modules/commands.so”;
// loadmodule “src/modules/cloak.so”;

对于那些不熟悉C的语法,双斜杠( // )告诉虚幻忽略一行斜线后无坚不摧。 多条线路可以通过添加注释掉/**/周围的材料。

取消注释这两个模块,使它们看起来像这样:

/* FOR *NIX, uncomment the following 2lines: */
loadmodule "src/modules/commands.so";
loadmodule "src/modules/cloak.so";

me {} - 服务器名称

继续通过配置文件滚动,直到你看到一个标有节me {} 首先会有一个注释的例子部分。 你想要的注释一个。

此部分(以前称为M行)定义了用户连接时服务器的特定详细信息。

设置的名称的服务器的主机名。

信息字段应该包含您的IRC服务器,比如一个正式的名称为“MYDOMAIN IRC。”这个名字和信息域必须用引号括起来。

数字字段应保留使用默认号码,除非你打算将多个IRC服务器连接在一起。 使用多个服务器,您绝对必须确保网络中的所有服务器在此字段中具有不同的值。 这是UnrealIRCd在它下面的唯一标识符。

me
{
        name "unreal.example.com";
        info "Unreal Chat Server";
        numeric 1;
};

admin {} - 管理员联系信息

接下来的部分是admin {}块或:行。 再次,滚动,直到你到达取消注释的例子。

这应该包含您作为服务器管理员的联系信息。 你可以放在或多或少在这里,你想要,但你需要有至少一行。

大多数用户将他们的真实姓名放在第一行(在示例中为“Bob Smith”),第二行上的昵称(示例中为“bob”)和第三行上的电子邮件地址。 唯一的要求是,每行的内容被用引号括起来,并用分号结束( ; )。

admin {
        "Will Preston";
        "will";
        "will@example.com";
};

现在我们可以继续进行更具体的服务器相关配置,而不仅仅是简单的联系信息。

class {} - 客户端和服务器连接设置

接下来的块中, class {}块,定义了服务器会记得“客户”连接到网络(用户)和“服务器”与网络连接(如果您的IRC服务器添加到服务器网络) 。

通常,对于大多数小网络场景,这些设置可以保留默认值。 但是,如果您正在运行大型网络操作,则可能需要阅读有关这些块中的值的文档,因为它们具有实用性,但仅在非常具体的情况下。

默认设置很好:

class           clients
{
        pingfreq 90;
        maxclients 500;
        sendq 100000;
        recvq 8000;
};      

class           servers
{
        pingfreq 90;
        maxclients 10;          /* Max servers we can have linked at a time */
        sendq 1000000;
        connfreq 100; /* How many seconds between each connection attempt */
};

allow {} - 服务器密码,异常

allow {}块配置谁可以连接到网络。

通常,对于任何人都可以加入的大型,开放的IRC服务器,您应该保留默认值。

对于要保密或受密码保护的服务器,你应该添加密码线,如第二个例子allow {}块,到了第一个全球块。 第一个allow {}块都有一个用于客户端连接的全局设置。 你可以看到,IP主机名的值均设置为*@* ,意思是“来自世界各地的每一个人。”

这允许您在连接时提示用户输入密码。

allow {
        ip             *@*;
        hostname       *@*;
        class           clients;
        maxperip 5;
        password "yourpasswordhere";    
};      

/* Passworded allow line */
allow {
        ip             *@255.255.255.255;
        hostname       *@*.passworded.people;
        class           clients;
        password "f00Ness";
        maxperip 1;
};

您也可以注释掉第二块你不必微调允许具有不同的IP或其它连接参数设置。

接下来的块中, allow channel {}块,定义了什么样的渠道,或聊天室,从后来的配置文件中设置的限制豁免。

有点解释:在后面的块中,我们将能够定义通道名称中的哪些通道或关键字被禁止,并且此块允许我们从这些禁止中定义豁免。 除非有特殊情况,通常可以单独使用,示例配置向我们展示了它的工作原理:

    allow channel {
        channel "#WarezSucks";
        class "clients";
    };

这个例子使服务器允许所有客户端访问#WarezSucks通道,尽管渠道相匹配的通配符字符串的事实*warez*后的配置文件中都受到限制。

除非你有一个特定的情况,你想禁止某个频道,但不是某些其他渠道,你可以留下这个单独没有问题。

oper {} - 运算符设置

下一个程序段是其中最重要的远远之一: oper {}块,或o:line ,它定义您的凭据作为服务器的所有者,或者大多数用户拨打IRCop什么。

仔细地穿过这个部分,因为你需要确保你得到一切正确。

oper {}块定义你和任何其他特权用户被允许做作为IRCop什么。 这是您的管理员定义的地方,包括您自己,因此有很多选择。 但是,现在,我们将开始一个示例块。

配置文件目前包含了一个样本oper {}块,以用户名bobsmith 不过,我建议你干脆完全删除这一点,并用自己的替换oper {}块。 您需要为您希望在服务器上作为运算符的每个用户添加一个新块。

下面,我有一个例子o:你可以复制并粘贴到配置文件中。 红色表示的值是由你来改变。

oper username {
    class clients;
    from {
        userhost *@*;
    };
    password "yourpasswordhere";
    flags {
        global;
        netadmin;
        can_gkline;
        can_gzline;
        can_zline;
        can_kline;
        can_unkline;
        can_restart;
        can_die;
        can_rehash;
    };
    swhois "This will appear when users run a /WHOIS on you";
};

每个项目的解释如下:

  • 定义这个用户是什么样的运营商,如果你指定了“客户端”或“服务器”以前其他的类。 你不需要改变这个。
  • from {}子块包含的主机名(由指定的userhost )被允许使用此○:行。 通常情况下,你可以在@离开这个,因为大多数客户端(包括你自己)有一个动态的IP地址,因此,不断变化的主机名。
  • 密码定义,你会用什么密码,以确定自己的服务器作为运营商。 密码必须用引号括起来,与任何字符串一样。
  • flags {}子块包含当确定为操作员指定IRCop将有哪些特权。 官方文件有什么每个这些特权指标呢,不过我们很快就会过去他们给你什么样的期待一个基本的想法列表。
  • 全球定义,这是否会IRCop所有服务器上被认为是一个IRCop。 另外,您也可以使用local ,他们只会有超过连接到服务器的O,用户的影响力:行,但你自己○:行,你一定要使用global
  • NETADMIN定义什么水平(或“等级”)的IRCop是当用户请求操作员的帮助。 netadmin为最高,其次是servicesadmin ,接着admin ,随后coadmin ,随后没有秩指示符的。
  • can_gkline ,can_gzline,can_zline,can_klinecan_unkline所有定义的权限可以申请某些类型的用户禁令的情况下,你必须删除有问题的用户。 在IRC行话,AK-线refers to a ban from connecting to the server the line is applied to. A refers to a ban from connecting to the server the line is applied to. A Z线, also called a g线on other types of non-Unreal servers, is like a k-line, except it applies to all servers on the network (while being stored locally on the server the ban is applied on). A on other types of non-Unreal servers, is like a k-line, except it applies to all servers on the network (while being stored locally on the server the ban is applied on). A GZ-线and GK-线are all the same, except their respective -lines are applied across all servers in the network--so if the server the ban is applied on delinks or disconnects from the network, the ban is still considered active. can_unkline`让您免去这些禁令设置一次。
  • can_restart指定你被允许到/ RESTART命令发送到服务器重启IRCD,断开所有用户的进程。
  • can_die指定你被允许到/ DIE命令发送到服务器停止运行的IRCD,从而断开所有用户。
  • can_rehash指定你被允许发送/翻版命令,该命令重新加载当前激活的配置,实用的,因为当你需要进行更改无需重新启动服务器
  • 最后,swhois选项指定希望用户看到他们的时候你跑/ WHOIS当你被确定为操作人员的任何特殊消息。 这行可以完全省略,但我喜欢用这个机会,把一个有趣的消息,“你在看什么?

欢迎您复制上述o:行如有必要,以适应所有您想成为IRCops的用户。 小型网络一般只需要1-2个运营商; 然而,您可能觉得有必要添加更多的o:行随着您的网络的增长,以帮助保持用户的检查。

listen {} - IP,端口和SSL

现在,您的o:行已设置,我们可以继续到配置的更多的关键部分。 listen {}块,您可以设置的端口的用户将能够连接上。

默认设置应该适用于大多数服务器。

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

listen *:8067;
listen *:6667;

*:在每个声明意味着“所有”。 这可以替换为您要绑定UnrealIRCd的任何IP地址。 如果您的服务器有多个IP地址,你需要为每个地址单独声明。

在大多数情况下,但是,你只需使用listen *:6667*通配符将试图有UnrealIRCd绑定到任何及所有后指定的端口上的IP地址:在这种情况下,端口6667

注意:为了支持UnrealIRCd IPv6地址,您必须在上面的构建指令IPv6的支持编译它,你的Droplet必须支持IPv6连接。 但是,请注意,当指定IPv6地址时,必须将地址本身包含在[括号]中,以便守护程序可以区分IP是什么和端口是什么:

listen [fd3a::a1c9:b311:985e]:6667

options {}子块的ssl标志定义服务器是否将允许SSL连接。 clientsonly标志(相对于serversonly )允许你指定此端口是否是唯一的客户端或服务器。 否则,默认情况下,客户端和服务器都将能够在此端口上连接。 clientsonly设置为精细。

注意:如果“使用地址已”收到错误第一次启动时UnrealIRCd,你就需要更换*您Droplet的IP地址(ES)通配符,因为虚幻可能会或可能不能够推断出主IP绑定到。

下一个块, link {}可以留下默认设置。 当将两个服务器连接在一起以形成IRC网络时,将使用此块,本教程中未介绍。

link            hub.mynet.com
{
        username        *;
        hostname        1.2.3.4;
        bind-ip         *;
        port            7029;
        hub             *;
        password-connect "LiNk";
        password-receive "LiNk";
        class           servers;
                options {
                        /* Note: You should not use autoconnect when linking services */
                        autoconnect;
                        ssl;
                        zip;
                };
};

ulines {} - 具有权限的服务

ulines {}哪些服务器连接到我们的网络块定义需要有提升权限。

通常情况下,当你的服务连接IRC网络(服务是一组特殊的,为了不被RFC标准,如昵称注册指定的IRC添加的功能一大堆的程序和后台程序),你用这个来确保服务“权限高于正常服务器的权限。

应该为一个普通的服务器使用。 使用您自己的服务服务器替换示例服务器:

ulines {
        services.roxnet.org;
        stats.roxnet.org;
};

drpass {} - / RESTART和/ DIE的密码

下一个块, drpass {}定义了密码应在情况下设置IRCop选择使用/ DIE或服务器上/ RESTART命令。

即使IRCop有执行此操作的权限,最好的做法是为此设置一个密码,以防他们的IRCop权限受损。 这样,受损的操作员帐户无法使用简单的IRCop访问来关闭服务器。

drpass {
    restart "your-restart-password-here";
    die "your-die-password-here";
};

log {} - 日志设置

接下来的块中, log {}块,还能剩下的默认设置。

您可以在文档上阅读起来的,如果你想在日志块的信息,但通常它的罚款离开这个,因为它是。 UnrealIRCd在其日志记录中非常彻底。

alias {} - 命令别名

接下来的一系列块中, alias {}块,包含万一你打算一起新的IRC服务器上安装服务命令别名定义。

如果您不打算使用新服务器启动服务,您可以保留这些块,因为他们没有担心。

files {} - 包括配置文件

接下来的块中,我们将调整为files {}块,其中您可以指定某些特殊的文件被列入配置。

大多数这些被注释掉了,但你至少应该寻找,取消注释,并指定以下警告:如果在此处指定的任何文件不存在UnrealIRCd将无法启动。 完成配置编辑后,您将需要创建这些文件。 我们将在本教程的后面创建这两个文件。

找到并取消注释这两个文件:

motd ircd.motd;

...

rules ircd.rules
  • motd参数指定服务器MOTD, 或一天 ,这将会在连接发送给用户,或者当他们使用/ MOTD命令的消息
  • rules参数指定包含由/规则的命令提供的服务器规则的文件。 我建议你考虑你的服务器的规则,因为IRC在过去,臭名昭着的一些不那么合法的文件共享等。

tld {} - 国际异常

接下来的块中, tld {}块,在功能上相同files块,除了它允许您为来自不同国家的用户连接设置特殊的例外,其顶级域名所指示的(如.au澳大利亚, .ru俄罗斯等)。

你可能想出去评论此部分,如文件创建在本节只是尽可能多的需要作为在适当找到的文件files {}块。 将此部分包含在C风格的注释中:

/*
tld {
    ...
};
*/

这样,它不再适用于当前配置。

下一部分是完全可选的; 然而,因为我们顺序覆盖配置,所以最好至少省略指令,以便了解每个块的作用。

ban {} - 禁止昵称,IP和名称

这些部分都可以保留默认设置。

在本节中,我们将介绍各种通过服务器配置来保护服务器免受恶意用户攻击的方法。

接下来的块中, ban {}块,允许你从被用来连接到服务器,以及其他选项的一大堆禁止特定的昵称,或者,一个特定的IP地址。

请注意,您应为个别禁止块选择昵称或IP(而不是两者)。

ban nick/ip {
    mask ["nickname*goes*here"/12.223.98.1]; // Banned nick or IP
    reason "Put your reason for the ban here";
};

或者只是注释:

/*
ban nick {
        mask "*C*h*a*n*S*e*r*v*";
        reason "Reserved for Services";
};
*/

请注意,您也可以使用真正的IRC主机遮罩( user@host.name在面具领域,而不是一个缺口或IP),以禁止特定用户-只是一定要指定ban user ,而不是ban ipban nick

最后,你也可以禁止特定的realname被使用。 当用户首次设置其客户端时,他们可以在其用户设置中指定其“真实姓名”。 此设置适用于这些设置。 例如,禁止名为Jack的所有用户:

ban realname {
    mask "Jack";
    reason "Go away!";
};

注:以上的禁令有点没用的,考虑到用户可以改变他们的真实姓名在客户端设置,但它在这里的完整性。

您还可以设置禁止例外,例如:

except ban {
    // My username is sigtau--don't ban me!
    mask    *sigtau*@*
};

现在,我们已经看了一眼ban {}块,这是对用户使用的,让我们来看看另一种类型的块,可以对其他类型恶意软件活动中使用。

deny {} - 限制非用户活动

默认deny {}块设置可以保持原样对于大多数服务器。

当IRC是80年代,90年代和21世纪初的高度主流协议时,另一个附加协议需要用户希望直接通过IRC进行通信,而不需要中间人集中式服务器。 DCC(直接客户端到客户端)协议诞生了,允许用户做正常IRC无法实现的事情,例如直接发送聊天消息到彼此,以及文件共享。

文件共享方面打开了一个安全漏洞,然而,随着DCC越来越受欢迎的用户谁不聪明,足以区分可能有害或恶意的文件。 因此,一些IRC守护进程开始限制某些种类的DCC请求,以防止这种活动。

UnrealIRCd是这些IRC守护进程之一。 deny块是能够做不同的限制的任务,其中包括阻止这些类型的文件传输的主机。 例如,在示例配置中,您将找到此块:

deny dcc {
    filename "*sub7*"; // note that this supports wildcards
    reason "Possible Sub7 Virus";
};

这将导致发送的包含字符串“Sub7划”(基于臭名昭著服务器的任何DCC请求Sub7划木马从早期的IRC天)被禁止。

一个deny块还可以防止用户加入或创建某些类型的渠道。 还记得前面我们允许用户加入一个叫做通道#WarezSucks 这是deny ,我们是抵制块:

deny channel {
    channel "*warez*";
    reason "Warez is illegal";
    class "clients";
};

这可防止任何用户创建名称中包含单词“warez”的频道。

vhost {} - 隐藏用户主机名

大多数服务器可以使用默认的vhost {}块。

虽然一些流行的IRC服务包允许您在不编辑配置文件的情况下执行此操作,但是用户隐藏用户主机名的老式方法是自动的,并且不要求用户具有注册的昵称。

这对于通过bouncer连接但使用他们不想注册的昵称,或者您的服务器没有开始服务的用户很有用。

可选的vhost块设置为指定的用户一个假的主机名。 我们来看看示例配置中的一个预设:

vhost {
    vhost       i.hate.microsefrs.com;
    from {
        userhost *@*.image.dk;
    };
    login       stskeeps;
    password    moocowsrulemyworld;
};

这使得从主机连接的用户*@*.image.dk设置自己的主机名*@i.hate.microsefrs.com 用户通常使用/ CHGHOST命令执行此操作。

使用此命令已经大大减少了使用执行相同功能的IRC服务包,因此对于大多数目的,您不需要透彻了解此块如何工作以设置正常运行的IRC网络。

set {} - 网络配置

这部分是绝对必要的! 在IRC守护进程将无法启动,除非你正确配置本节!

如果你一直在关注沿,下一个块中的最后应该之一,讽刺的是,最重要的之一: set {}块。

set {}块包含一吨的配置选项,服务器将需要操作。 下面是您将看到的示例配置的副本,添加了在线注释,解释每个选项的作用。 您不需要将注释复制到配置文件中,除非您发现它们有用。

大多数(如果不是所有这些选项都是必需的),所以只需根据自己的喜好编辑它们,而不是批量删除它们。 请注意,如果您计划将多个服务器链接在一起,最好在所有服务器之间保持这些一致和完全相同。 如果您不打算链接服务器,则仍必须配置这些选项。

这些选项中的大多数仅涉及用您自己的域名替换示例域名。

请注意,您将不得不生成三个三个随机值cloak-keys

set {
    network-name "ROXnet"; // This is the name of the network reported to clients
                   // upon joining, and in many popular IRC clients, is the
                   // formal name used for tabbed view and logs.
    default-server "irc.roxnet.org"; // Replace this with your server's domain--the
                     // daemon reports this to the client as being
                     // the network's proper hostname.
    services-server "services.roxnet.org"; // If you plan to add services to your
                           // IRC server, use the same domain as
                           // above, e.g. services.mydomain.com.
                           // Even if you aren't going to run
                           // services, you should do this anyway.
    stats-server "stats.roxnet.org"; // Same as the above, except with stats
                     // stats servers.
    help-channel "#ROXnet"; // Set this to a be your network's official "help
                // channel" so that users have a place to go in case
                // they need help with something that only an IRCop
                // or server administrator could do.
    hiddenhost-prefix "rox"; // For anonimity purposes, UnrealIRCd masks users'
                 // IP addresses using 'hidden hosts'--i.e. the host
                 // user331.newyork.someISP.com is converted to
                 // hiddenhost-3AB66E2-newyork.someISP.com.  This value
                 // can be customized--change "rox" to whatever you
                 // want (generally, alphanumeric lowercase) the hidden
                 // host mask to be.  This is sometimes referred to as
                 // "cloaking."
    cloak-keys {
        "brespumuste6ewR";
        "fUkAChekEswu6ed";
        "4aFachehetawedR";
    };

    // The above block are the random seeds used to generate unique cloaks for
    // each user without revealing their hostname to one another.  Generally, a
    // 10-20 character random alphanumeric mixed-case string will do.  Any online
    // password generator will work, or if you're in a pinch, just type whatever
    // alphanumeric string you want in all three string fields.
    //
    // THERE MUST BE EXACTLY THREE STRINGS.

    hosts {
        local       "locops.roxnet.org";
        global      "ircops.roxnet.org";
        coadmin     "admin.roxnet.org";
        admin       "admin.roxnet.org";
        servicesadmin   "csops.roxnet.org";
        netadmin    "netadmin.roxnet.org";
        host-on-oper-up "no";
    };

    // The above block can go mostly unchanged, apart from changing "roxnet.org"
    // to your domain of choice.  Setting host-on-oper-up automatically changes
    // the hostname of the IRCop user to be one of the above based on their rank
    // indicators in their o:line flags (`local`, `global`, `admin`, etc.).
};

The final block in the configuration should be yet another set {} block, but this time, the options are exclusive to this server instance instead of being consistent across the whole network.

You must set the kline-address email or the server will not start.

The rest of these settings can be left as default for most servers.

set {
    kline-address "contact@example.com"; // When k-lines are applied, users are sometimes
                    // instructed to contact a particular e-mail for
                    // more information.  This should be that e-mail.
    modes-on-connect "+ixw"; // Leave these at default; however if you need to tweak
                 // what modes users are automatically assigned upon
                 // connecting, you can view the full mode reference
                 // here: http://www.unrealircd.com/files/docs/unreal32docs.html#userchannelmodes
    modes-on-oper "+xwgs";   // These are modes that are applied when a user first
                 // authenticates as an IRCop.  These are generally left
                 // alone as well, but you can use the above link again
                 // if you, for some reason, need to tweak these.
    oper-auto-join "#opers"; // This is the channel that IRCops are set to
                 // be force-joined to as soon as they authenticate as
                 // an IRCop.  You can set multiple channels by
                 // delimiting them with commas: #chan1,#chan2,...
    maxchannelsperuser 10; // This is the maximum number of channels any one user
                   // session can be joined to.  You may raise or lower this
                   // as needed, however it must be greater than or equal
                   // to 1.
    options {
        hide-ulines; // This means any server specified in the ulines {} block
                 // will not appear when a connected user uses /list.
                 // IRCops automatically override this when they use /list.
        show-connect-info; // This allows a user to see messages such as
                   // "Looking up your hostname..." and "Requesting
                   // identd..." when they are connecting.  Generally a
                   // good idea to keep this.
    };

    anti-spam-quit-message-time 10s; // In the past, IRC servers have had issues
                     // with users joining and quitting with long
                     // quit messages in rapid succession to spam
                     // the server.  This helps combat that by
                     // specifying how long a user must be 
                     // connected before the server will allow them
                     // to specify a message when using /QUIT.
                     // You can leave this as it is or change it.
    oper-only-stats "okfGsMRUEelLCXzdD"; // You should probably leave this alone,
                         // it defines which server stats are
                         // restricted to be viewable by IRCops only.
                         // Since there's too many stat modes to list
                         // for an article, here's a hint: once your
                         // server is up and running, use the /stats
                         // command (while authenticated as an IRCop)
                         // to get a list of character->stat pairs,
                         // which can be used to modify this list.
    throttle { // When users disconnect, their clients will try to reconnect them.
           // This prevents it from happening too quickly, potentially putting
           // the server under high load.
        connections 3; // The number of connections allowed...
        period 60s; // ...per x seconds, as specified here.
    };

    anti-flood { // This configures anti-flood settings to prevent users from
             // flooding the server with unnecessary commands.
        nick-flood 3:60; // Allows 3 nick changes per 60 seconds.

        // Some other useful options to read up on are away-flood for how
        // many times a user can use /AWAY, or unknown-flood-amount for
        // users that send unknown garbage data to the server.
    };

    spamfilter { // This controls settings for spam filtering and default ban info.
        ban-time 1d; // This is the default duration of a k-line/z-line ban when
                 // automatically set by a spam filter.
        ban-reason "Spam/Advertising" // The message used by automatic bans.
        virus-help-channel "#help"; // The channel users can turn to if they
                        // need help with viruses such as those
                        // sent over DCC.
    };
};

而已!

Save your changes to the configuration file, ensure that it is saved as unrealircd.conf . Press CTRL-x , then y , then Enter .

Congrats, you're done editing the configuration file! Let's complete the few final steps before we can start the server.

Step Six — Creating ircd.rules and ircd.motd

Two files need to be created before UnrealIRCd will boot: ircd.rules and ircd.motd . At your shell prompt, type the following to create the file for your server rules:

nano ~/Unreal3.2.10.4/ircd.rules

Now, you can type your server rules as plain text. Users will be presented with these upon typing the /RULES command. Do keep in mind that you should keep the lines in this file less than 80 characters long to prevent them from getting automatically wrapped by the IRCd (if you use indentation, this can be a pain).

Save your changes. Create the message of the day file:

nano ~/Unreal3.2.10.4/ircd.motd

This is where you can type your MOTD, which will be shown the moment users connect to the server. The same 80-character line length limit applies here as well. Useful information to put in this file would be featured channels, a quick breakdown of server rules, the current IRCops, and so on. You can put whatever you want here in plain text.

Save your changes.

If you listed any other files in your configuration, create them now, too.

Step Seven — IRCd Log File

To ensure that the IRCd has a place to store its logs, let's go ahead and create a blank file specifically for that.

touch ~/Unreal3.2.10.4/ircd.log

Step Eight — Starting UnrealIRCd

恭喜! You've successfully set up your own IRC daemon.

Move to the Unreal directory:

cd ~/Unreal3.2.10.4

Start the chat server:

./unreal start

You should see a message like this:

* Loading IRCd configuration ..
* Configuration loaded without any problems ..
* Initializing SSL.
* Dynamic configuration initialized .. booting IRCd.

If there's a startup error, check the line number and setting mentioned in the error. You should be able to locate the problem in your configuration file.

Once the server starts, you will be able to connect to your server via your favorite IRC client. I recommend you do so on your local machine rather than on a Droplet, to ensure other users can connect.

Step Nine — Connecting an IRC Client

In your favorite IRC client, type:

/server your Droplet IP address or domain here 6667

You'll need your domain or IP address, and the port number (6667 in this example). If you set a global password for the server in the allow {} block, you'll need to use that, too.

A few popular IRC clients for Windows are mIRC , HexChat , and Pidgin . If you are on Linux, X-Chat is freely available. For OS X, X-Chat Azure and a few paid applications on the App Store are available.

Step Ten — Operator Authentication

Once connected, you will need to authenticate as an IRCop. To authenticate as an operator, type:

/oper your-oline-username your-oline-password

These are the credentials you set in the oper {} block.

You should then be force-joined to the channels we previously specified in oper-auto-join , indicating that you are now an IRC operator.

A Note about Connecting via SSL

Because the server instance was set up using a self-signed SSL certificate, some clients may not allow you to connect via SSL due to an "invalid" or "untrusted" certificate. It is recommended that you seek a means of generating a valid SSL certificate with a free service such as CACert.org or a paid certificate authority (CA) of your choice.

Enjoy your new IRC server! From here, you can now set up services or start inviting users. Happy chatting!