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

介绍

在本文中,我们将学习如何使用Unreal IRC daemon(IRCd)构建,安装和配置IRC服务器:该服务允许用户通过IRC(Internet Relay Chat)连接。

特别是,我们将在这个教程中使用Debian 7 x64** Droplet。

步骤一:创建ircd用户

我们将假设你刚刚发布了一款新 Debian 7 x64 片段,并且你已登录为 root. 如果你目前不是 root 用户,请使用:

1su

正如任何外部用户可以看到的 DAEMON 或服务一样,最好不要将 UnrealIRCd 作为 root 运行,无论是出于安全性还是性能原因。

1adduser ircd

我建议使用 XKCD创建密码方法创建一个密码 - 即将 3-5 个相当常见的字典单词合并到一个令人难忘的组合中,其长度将为密码增加足够的力(强度),使计算机难以猜测,但人类容易记住。

如果您没有被要求创建密码,只需输入:

1passwd ircd

然后,您将被要求创建密码。

赋予用户特权

我们现在需要确保服务器配备了 sudo,这是一个流行的UNIX系统(如Linux)的实用程序。对于那些不熟悉的人来说, sudo 命令允许用户执行具有 root (susuperuser) 特权的命令,因此我们在设置前提库时需要的名称 - superuser do

Debian 7 已默认安装 sudo. 如果您需要安装它,请输入:

1apt-get install sudo

现在我们知道 sudo 已安装,您需要将我们之前创建的 ircd 用户添加到 sudo 组,以允许它访问 sudo 命令。

要做到这一点,请运行这个命令:

1adduser ircd sudo

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

1su ircd

更改到用户的 ircd 主目录。

1cd ~

步骤二:安装前提条件

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

这些软件包包括:make**、gcc、build-essential、openssl、libcurl4-openssl-dev、zlib1g、zlib1g-dev、zlibc、libgcrypt11和libgcrypt11。

我们将使用 APT 在 Debian 中安装它们. 运行以下命令来更新您的包管理器:

1sudo apt-get update

运行以下命令来安装前提条件。在提示时输入是。你可能会发现一些这些包已经安装了 — 在写作时,zlib1g 和 openssl 已经包含在 Debian 中 — 但它们在这里列出以获取完整性。

1sudo 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,请运行以下命令:

1sudo apt-get install wget

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

当下载页面呈现给您时,您可能会看到一个链接,该链接表示`下载应该在5秒内开始,如果它不点击这里。

在写作时,URL是http://unrealircd.org/downloads/Unreal3.2.10.4.tar.gz**。

当您作为我们的ircd用户登录时,让我们确保我们在我们的主目录中:

1cd ~

现在,让我们下载源代码。 ** 警告:** 使用 wget 的 --no-check-certificate 旗帜是获取此文件的更不安全的方式。

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

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

1tar xzvf Unreal3.2.10.4.tar.gz

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

1cd Unreal3.2.10.4

最后,让我们开始构建过程. 使用嵌入到源包中的./Config 脚本:

1./Config

阅读发布笔记并按 Enter 继续滚动。 留意底部的百分比数字,以便您不要错过问题。 一旦发布笔记结束并启动配置脚本,UnrealIRCd 将开始向您提问。

1What directory are all the server configuration files in?

您可以将此留在默认状态下。 按 Enter 继续。

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

将此留为默认值。 按 Enter

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

再一次,把它留在默认位置上. 下一个问题很重要:

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

答案:

1Yes

默认情况下,UnrealIRCd的配置脚本不会支持SSL连接,但在这里输入将允许它。

然后,您应该被提示在系统上找到通往 OpenSSL 的路径,因为我们让 APT 早些时候为我们处理此事,所以我们可以将其留在默认情况下。

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

点击进入

下一个问题对某些使用 IPv6 的用户来说很重要。

1Do you want to enable IPv6 support?

如果您没有在您的Droplet上启用IPv6,您可以将此留在默认位置()并按 Enter

下一个问题是有关将 IRC 服务器与 IRC 网络中的多个链接服务器操作的用户。Ziplinks 基本上是通过在发送数据之前压缩 IRC 服务器之间的数据来节省带宽的手段。

1Do you want to enable ziplinks support?

答案:

1Yes

当被问及路径时,请按 Enter

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

下面的几个问题都可以通过按 Enter来回答:

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

一旦您完成了回答问题,配置脚本将开始为构建过程准备源目录。

您最终将被要求为 IRCd 生成 SSL 证书,除非您已经拥有由适当的认证机构颁发的 SSL 证书,否则您可能只想在默认情况下留下此选项(该选项应该是) - 这就是我们在本教程中所做的。

您将被要求提供有关服务器的信息,例如国家、省、城市和组织。您可以在这里输入任何您认为有意义的信息。

点击 Enter 以继续,您将看到有关已签名的证书的快速消息。

第四步:构建UnrealIRCd

这是他们中最简单的步骤! 移动到 **~/Unreal[您下载的任何版本]**目录:

1cd ~/Unreal3.2.10.4

建造它!

1make

这是最长的步骤,如果你在过去的两次休息期间还没有去喝茶或咖啡,现在肯定是时候这样做 - 完成建设过程需要几分钟。

步骤五:配置 UnrealIRCd

完成构建过程后,您现在已经准备好配置新的 UnrealIRCd 服务器. 配置文件是用 C 类语法编写的。

创建示例配置文件的副本:

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

这将复制英语示例配置文件到 root Unreal 目录. 如果您的服务器将运行在英语以外的语言,您可以使用两个字母的语言代码,无论您的目标受众将使用; 例如 ./doc.example.fr.conf 在写作时,德语,西班牙语,法语,匈牙利语,荷兰语,俄语和土耳其语都支持与英语,但在本教程中,我们将处理英语示例配置。

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

1nano ~/Unreal3.2.10.4/unrealircd.conf

现在,让我们以我们喜欢的方式开始编辑配置文件。我们将从顶部到底部顺序通过配置文件,所以部分的排序可能有点奇怪。

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

模块

UnrealIRCd被宣称为一个 modular IRCd,因为你可以为 DAEMON 创建功能,而无需重新编译整个源代码库,并在飞机上加载/下载。

1// loadmodule src/modules/commands.so;
2// loadmodule src/modules/cloak.so;

对于那些不熟悉C类语法的人来说,双切削(//)告诉Unreal忽略在线上的切削后出现的任何事情。

把两个模块分成这样看:

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

服务器名称

继续浏览配置文件,直到你看到一个标记为我 {}的部分。 首先会有一个评论的示例部分。

此部分在过去被称为M行,定义了用户连接时服务器的具体细节。

将 **name 设置为服务器的主机名称。

info字段应该包含您的IRC服务器的正式名称,例如MyDomain IRC

如果您打算连接多个IRC服务器,则必须确保网络中的所有服务器在该领域中具有不同的值。

1me
2{
3        name "unreal.example.com";
4        info "Unreal Chat Server";
5        numeric 1;
6};

admin {} — 管理员联系信息

下一节是admin {} 块或 a:line. 再次滚动,直到您到达未评论的示例。

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

大多数用户把他们的真实姓名放在第一行(Bob Smith在示例中),在第二行(bob在示例中),并在第三行一个电子邮件地址。

1admin {
2        "Will Preston";
3        "will";
4        "[email protected]";
5};

现在我们可以转向更具体的服务器相关配置,超越简单的联系信息。

类 {} — 客户端和服务器连接设置

下一个块,即类 {}块,定义了服务器将记住的客户端连接到网络(您的用户)和服务器连接到网络(如果您将您的IRC服务器添加到服务器网络)。

一般来说,这些设置可以在大多数小型网络场景的默认情况下保留,但是,如果您正在运行大型网络操作,您可能需要阅读有关这些区块中的值的文档,因为它们有其用处,但仅在非常特定的情况下。

默认设置是好的:

 1class clients
 2{
 3        pingfreq 90;
 4        maxclients 500;
 5        sendq 100000;
 6        recvq 8000;
 7};      
 8
 9class servers
10{
11        pingfreq 90;
12        maxclients 10;          /* Max servers we can have linked at a time */
13        sendq 1000000;
14        connfreq 100; /* How many seconds between each connection attempt */
15};

允许 {} — 服务器密码, 例外

允许 {} 块配置谁被允许连接到网络。

一般来说,对于任何人都可以加入的大型,开放的IRC服务器,您应该将此留在默认情况下。

对于您想要保留私密或密码保护的服务器,您应该将密码行,如在第二个示例中所示的允许 {}块,添加到第一个全球区块。

这允许您在连接时要求用户提供密码。

 1allow {
 2        ip             *@*;
 3        hostname       *@*;
 4        class clients;
 5        maxperip 5;
 6        password "yourpasswordhere";    
 7};      
 8
 9/* Passworded allow line */
10allow {
11        ip             *@255.255.255.255;
12        hostname       *@*.passworded.people;
13        class clients;
14        password "f00Ness";
15        maxperip 1;
16};

您还可以评论第二个 **允许 ** 块,如果您不需要对不同 IP 或其他连接参数的允许设置进行调整。

下一个块,‘允许频道 {}’块,定义了哪些类型的频道,或聊天室,不受配置文件中稍后设置的限制。

稍微解释:在以后的块中,我们将能够定义在频道名称中禁止的渠道或关键字,而这个块允许我们定义这些禁令的豁免。

1allow channel {
2    	channel "#WarezSucks";
3    	class "clients";
4    };

此示例使服务器允许所有客户端访问 #WarezSucks 频道,尽管在配置文件中稍后匹配 wildcard 字符串 `warez' 的频道受到限制。

除非您有一个特定的案例,您想禁止某个频道,而不是某些其他频道,您可以单独留下这个问题。

操作员设置 - Operator Settings

下一个块是最重要的块之一:oper {}的块,或o:line,它定义了您的身份证作为服务器所有者,或大多数用户称之为 _IRCop。

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

oper {}块定义了你和任何其他特权用户可以做什么作为IRCop. 这是你的管理员定义的地方,包括你自己,这就是为什么有很多选项在游戏中。

配置文件目前包含一个样本 oper {} 块,使用用户名 bobsmith. 然而,我建议你简单地完全删除它,并用自己的 oper {} 块代替它. 你需要为你想要在你的服务器上作为操作员的每个用户添加一个新的块。

下面,我有一个例子 o:line,你可以复制并粘贴到配置文件中。

 1oper username {
 2	class clients;
 3	from {
 4		userhost *@*;
 5	};
 6	password "yourpasswordhere";
 7	flags {
 8		global;
 9		netadmin;
10		can_gkline;
11		can_gzline;
12		can_zline;
13		can_kline;
14		can_unkline;
15		can_restart;
16		can_die;
17		can_rehash;
18	};
19	swhois "This will appear when users run a /WHOIS on you";
20};

对每个项目的解释稍微如下:

类定义了该用户是什么样的运算符,如果您指定了之前的"客户"或"服务器"以外的一个类. 你不需要改变这个。 (_ ( ) QQ子块中的 包含哪些主机名( 由 userhost 指定) 允许使用此 o: line 。 一般来说,您可以将此保留在QQ上,因为大多数客户端(包括您本人)拥有动态的IP地址,因此是一个不断变化的主机名. () ) * 密码定义了您要用什么密码来向服务器显示自己是操作员. 密码必须与任何字符串字词一样,用引文附上。 () ( )* lags QQ子块中包含指定IRCop在被确定为操作员时将拥有的特权 。 [官方文档] (http://www.unrealircd.com/files/docs/unreal32docs.html#operblock) 列出了这些特权指标中的每一个都做了些什么,但我们会很快翻阅它们,给大家一个可以期待的基本想法. (- )* 全球范围定义了这个IRCop是否会在所有服务器上被视为IRCop. 或者,您可以使用 本地 , 他们只会对连接到服务器的用户施加影响, 而对于您自己的 o: line, 您绝对应该使用 global 。 ( ) * netadmin 定义 IRCop 当用户请求操作员帮助时的级别( 或 排名 ) 。netadmin'是最高的,其次是servicesadmin',其次是admin',其次是coadmin',然后是完全没有等级指标。 *can_gkline、can_gzline、can_zline、can_kline和can_unkline都界定了在必须删除有问题的用户时能够适用某些类型的用户禁令的特权。 在IRC语言中,k行是指禁止连接到服务器。 az-line',也叫g-line',在其他类型的非真实服务器上,类似于k-line,但适用于网络上的所有服务器(同时在当地储存在服务器上,实施禁令)。 gz-line'和gk-line'是完全相同的,但其各自的-line适用于网络中的所有服务器 -- -- 因此,如果服务器在与网络脱钩或断开时适用禁令,禁令仍被视为活动。 允许您在设置后删除这些禁入 。

  • 可以重新启动 指定您可以将 /RESTART 命令发送到服务器以重新启动 IRCd , 断开进程内的所有用户 。
  • can_die 指定您可以将 /DIE 命令发送到服务器以阻止 IRCd 运行, 从而断开所有用户 。
  • 可以重新指定您可以发送 /REHASH 命令, 该命令可以重新装入当前激活的配置, 当您需要修改而无需重新启动服务器时有用
  • 最后,选项指定了任何您想要用户在您被确定为操作员时在您身上运行 / WHOIS 时看到的特殊消息 。 这条线可以完全省略,但我喜欢利用这个机会发表"你在看什么?"这样的搞笑信息(-). (英语)

您可以根据需要复制上述o:line,以容纳您想要成为IRCops的所有用户。小型网络通常只需要 1-2 个运营商;然而,您可能觉得需要随着网络的增长添加更多o:line,以帮助用户保持控制。

听 {} — IP, 端口和 SSL

现在您的 o:line 已经设置了,我们可以转到配置的更为关键的部分. 在倾听 {}块中,您可以设置用户将能够连接的端口。

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

 1listen		*:6697
 2{
 3	options
 4	{
 5		ssl;
 6		clientsonly;
 7	};
 8};
 9
10listen *:8067;
11listen *:6667;

在每个 listen 声明中的 : 之前的 * 意味着所有。这可以被您想将 UnrealIRCd 绑定到的任何 IP 地址所取代。

然而,对于大多数用途,你只会使用倾听 *:6667,而* wildcard 将尝试将 UnrealIRCd 绑定到指定的端口上的任何和所有 IP 地址之后的 :,在这种情况下,端口是 `6667。

** 注意:** 为了在 UnrealIRCd 中支持 IPv6 地址,您必须在上面的构建说明中与 IPv6 支持一起编译,并且您的 Droplet 必须支持 IPv6 连接。

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

选项 {}子块中,ssl标志定义了服务器是否允许 SSL 连接。clientsonly标志(与server personally不同)允许您指定此端口是否仅适用于客户端或服务器。

** 注意: 如果您在首次启动 UnrealIRCd 时收到已使用的地址错误,则需要用您的 Droplet 的 IP 地址替换 `*’ 野卡,因为Unreal 可能无法推断要绑定的主要 IP。

联系 {} - 聊天服务器网络

下一个区块,链接 {},可以留下默认设置. 此区块用于连接两个服务器一起形成IRC网络时,这不是本教程所涵盖的。

 1link hub.mynet.com
 2{
 3        username        *;
 4        hostname 1.2.3.4;
 5        bind-ip         *;
 6        port 7029;
 7        hub             *;
 8        password-connect "LiNk";
 9        password-receive "LiNk";
10        class servers;
11                options {
12                        /* Note: You should not use autoconnect when linking services */
13                        autoconnect;
14                        ssl;
15                        zip;
16                };
17};

特权服务 - 特权服务

ulines {}块定义了哪些连接到我们的网络的服务器需要具有更高的特权。

一般来说,当您将 _services 连接到 IRC 网络时(服务是一个特殊的程序和 Daemons 集合,可以为 IRC 添加一整套不由 RFC 标准指定的功能,例如称呼注册),您会使用此功能来确保服务的特权高于正常服务器的特权。

您不应该**将此用于正常服务器. 用您自己的服务器替换示例服务器:

1ulines {
2        services.roxnet.org;
3        stats.roxnet.org;
4};

drpass {} — 对 /RESTART 和 /DIE 的密码

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

即使IRCop有权限这样做,在他们的IRCop权限受到威胁的情况下,为此设置密码是很好的做法,这样一来,受威胁的运营商帐户无法通过简单的IRCop访问来降低服务器。

1drpass {
2	restart "your-restart-password-here";
3	die "your-die-password-here";
4};

标签:Log Settings

下一个块,即log {}块,可以留在默认设置中。

如果您愿意,您可以 阅读文档获取有关日志块的信息,但一般来说,留下这一点是好的。

命令名称 - 命令名称

下一系列的块,名称 {} 的块,包含命令名称的定义,如果您计划在新 IRC 服务器旁边安装服务。

如果您不打算在新服务器上启动服务,您可以简单地将这些块留下来,因为它们没有担心。

文件 {} — 包括配置文件

我们将调整的下一个块是文件 {}块,在其中您指定某些特殊文件将被包含在配置中。

大多数这些都被评论了,但你至少应该搜索,不评论,并指定以下内容。 ** 警告:** UnrealIRCd不会启动,如果在这里指定任何不存在的文件。

查找和删除这两个文件:

1motd ircd.motd;

...

规则 ircd.rules

  • motd 参数指定服务器 MOTD,或 day 消息,在连接时发送给用户,或者当他们使用 /MOTD 命令时
  • rules 参数指定包含由 /RULES 命令提供的服务器规则的文件。

tld {} — 国际例外

下一个区块,即tld {}的区块,在功能上与文件区块相同,但它允许您为来自不同国家的用户设置特殊的例外,如其顶级域(例如澳大利亚的.au,俄罗斯的.ru等)。

您可能想评论此部分,因为您在本节中创建的文件和在适当的文件 {}块中找到的文件一样需要。

1/*
2tld {
3	...
4};
5*/

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

下一个部分是完全可选的;然而,因为我们正在连续覆盖配置,最好至少扫描指令,以便您了解每个块的功能。

ban {} — 禁止姓名、IP和姓名

所有这些部分都可以留下默认设置。

在本节中,我们将看看通过服务器配置来保护您的服务器免受恶意用户的影响的各种方法。

下一个区块,禁令区块,允许你禁止使用某个号,或者替代,某个特定IP地址连接到服务器,以及一系列其他选项。

请注意,您应该为单个禁令块选择号或IP,而不是两者。

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

或者只是评论它:

1/*
2ban nick {
3        mask "*C*h*a*n*S*e*r*v*";
4        reason "Reserved for Services";
5};
6*/

请注意,您也可以使用实际的 IRC 主机面具([email protected])在面具字段中,而不是号或 IP,以禁止特定用户 - 只需确保指定禁止用户而不是禁止 ip禁止号

最后,您还可以禁止使用特定的实名。当用户首次设置客户端时,他们可以在用户设置中指定自己的实名

1ban realname {
2	mask "Jack";
3	reason "Go away!";
4};

** 注意: ** 上面的禁令有点无用,考虑到用户可以在客户端设置中更改真实姓名,但这是为了完整性。

您还可以设置禁令例外,如下列:

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

现在我们已经看到了禁止块,这些块被用来对付用户,让我们看看可以用来对付其他类型的恶意活动的另一种类型的块。

拒绝 {} — 限制非用户活动

默认的 deny {} 区块设置可以留在大多数服务器中。

当IRC在80年代、90年代和2000年代初成为一个高度主流的协议时,另一个额外的协议对那些希望通过IRC直接通信而没有中间人集中服务器的用户有需求。

然而,文件共享方面打开了一些安全漏洞,因为DCC在用户中越来越受欢迎,他们没有足够的知识来识别可能有害或有害的文件,因此,一些IRC恶魔开始限制某些类型的DCC请求,以防止这种类型的活动。

UnrealIRCd 是这些 IRC 恶魔之一. 该否定块能够执行各种不同的限制任务,包括阻止这些类型的文件传输。

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

这导致任何通过服务器发送的DCC请求含有字符串sub7(基于早期IRC日期的臭名昭著的Sub7木马(LINK0)被禁止。

一个拒绝块还可以阻止用户加入或创建某些类型的频道。记住以前我们在哪里允许用户加入名为#WarezSucks的频道?这是我们反对的拒绝块:

1deny channel {
2	channel "*warez*";
3	reason "Warez is illegal";
4	class "clients";
5};

这会阻止任何用户在名称中创建一个有warez字的频道。

vhost {} — 隐藏用户主机名

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

虽然一些流行的IRC服务包允许您在不编辑配置文件的情况下这样做,但隐藏用户主机名之间的旧方式是自动的,不需要用户注册名称。

这对通过反弹器连接但使用他们不希望注册的口号的用户有用,或者如果您的服务器没有服务开始使用。

可选的vhost块为指定的用户设置了假主机名,我们将看看样本配置中的一个预设:

1vhost {
2	vhost		i.hate.microsefrs.com;
3	from {
4		userhost *@*.image.dk;
5	};
6	login		stskeeps;
7	password	moocowsrulemyworld;
8};

这允许用户从主机名称*@*.image.dk连接,将他们的主机名设置为*@i.hate.microsefrs.com

使用此命令已大幅减少,有利于使用具有相同功能的IRC服务包,因此对于大多数目的,您不需要对该块如何工作的全面了解,以便建立一个正常运作的IRC网络。

设置 {} — 网络配置

这个部分是绝对必要的!如果您正确配置此部分,IRC DAEMON 将不会启动!

如果你一直在跟进,下一个块应该是最后一个,讽刺的是,最重要的一个:‘设置 {}’块。

设置 {}块包含大量的配置选项,服务器将需要操作。下面是您看到的示例配置的副本,并添加了内线评论,解释了每个选项的功能。

大多数情况下,如果不是所有这些选项都需要,所以只需将它们编辑为您的喜好,而不是卸载它们。 请注意,如果您打算连接多个服务器,最好在所有服务器上保持一致和相同。

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

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

 1set {
 2	network-name "ROXnet"; // This is the name of the network reported to clients
 3			       // upon joining, and in many popular IRC clients, is the
 4			       // formal name used for tabbed view and logs.
 5	default-server "irc.roxnet.org"; // Replace this with your server's domain--the
 6					 // daemon reports this to the client as being
 7					 // the network's proper hostname.
 8	services-server "services.roxnet.org"; // If you plan to add services to your
 9					       // IRC server, use the same domain as
10					       // above, e.g. services.mydomain.com.
11					       // Even if you aren't going to run
12					       // services, you should do this anyway.
13	stats-server "stats.roxnet.org"; // Same as the above, except with stats
14					 // stats servers.
15 	help-channel "#ROXnet"; // Set this to a be your network's official "help
16				// channel" so that users have a place to go in case
17				// they need help with something that only an IRCop
18				// or server administrator could do.
19	hiddenhost-prefix "rox"; // For anonimity purposes, UnrealIRCd masks users'
20				 // IP addresses using 'hidden hosts'--i.e. the host
21				 // user331.newyork.someISP.com is converted to
22				 // hiddenhost-3AB66E2-newyork.someISP.com. This value
23				 // can be customized--change "rox" to whatever you
24				 // want (generally, alphanumeric lowercase) the hidden
25				 // host mask to be. This is sometimes referred to as
26				 // "cloaking."
27	cloak-keys {
28		"brespumuste6ewR";
29		"fUkAChekEswu6ed";
30		"4aFachehetawedR";
31	};
32	
33	// The above block are the random seeds used to generate unique cloaks for
34	// each user without revealing their hostname to one another. Generally, a
35	// 10-20 character random alphanumeric mixed-case string will do. Any online
36	// password generator will work, or if you're in a pinch, just type whatever
37	// alphanumeric string you want in all three string fields.
38	//
39	// THERE MUST BE EXACTLY THREE STRINGS.
40
41	hosts {
42		local		"locops.roxnet.org";
43		global		"ircops.roxnet.org";
44		coadmin		"admin.roxnet.org";
45		admin		"admin.roxnet.org";
46		servicesadmin	"csops.roxnet.org";
47		netadmin	"netadmin.roxnet.org";
48		host-on-oper-up "no";
49	};
50	
51	// The above block can go mostly unchanged, apart from changing "roxnet.org"
52	// to your domain of choice. Setting host-on-oper-up automatically changes
53	// the hostname of the IRCop user to be one of the above based on their rank
54	// indicators in their o:line flags (`local`, `global`, `admin`, etc.).
55};

配置中的最后一个块应该是另一个设置 {}块,但这一次,选项仅限于此服务器实例,而不是在整个网络中一致。

**您必须设置临床地址电子邮件,否则服务器将无法启动。

这些设置的其余部分可以作为大多数服务器的默认留下。

 1set {
 2	kline-address "[email protected]"; // When k-lines are applied, users are sometimes
 3					// instructed to contact a particular e-mail for
 4					// more information. This should be that e-mail.
 5	modes-on-connect "+ixw"; // Leave these at default; however if you need to tweak
 6				 // what modes users are automatically assigned upon
 7				 // connecting, you can view the full mode reference
 8				 // here: http://www.unrealircd.com/files/docs/unreal32docs.html#userchannelmodes
 9	modes-on-oper "+xwgs";   // These are modes that are applied when a user first
10				 // authenticates as an IRCop. These are generally left
11				 // alone as well, but you can use the above link again
12				 // if you, for some reason, need to tweak these.
13	oper-auto-join "#opers"; // This is the channel that IRCops are set to
14				 // be force-joined to as soon as they authenticate as
15				 // an IRCop. You can set multiple channels by
16				 // delimiting them with commas: #chan1,#chan2,...
17	maxchannelsperuser 10; // This is the maximum number of channels any one user
18			       // session can be joined to. You may raise or lower this
19			       // as needed, however it must be greater than or equal
20			       // to 1.
21	options {
22		hide-ulines; // This means any server specified in the ulines {} block
23			     // will not appear when a connected user uses /list.
24			     // IRCops automatically override this when they use /list.
25		show-connect-info; // This allows a user to see messages such as
26				   // "Looking up your hostname..." and "Requesting
27				   // identd..." when they are connecting. Generally a
28				   // good idea to keep this.
29	};
30	
31	anti-spam-quit-message-time 10s; // In the past, IRC servers have had issues
32					 // with users joining and quitting with long
33					 // quit messages in rapid succession to spam
34					 // the server. This helps combat that by
35					 // specifying how long a user must be 
36					 // connected before the server will allow them
37					 // to specify a message when using /QUIT.
38					 // You can leave this as it is or change it.
39	oper-only-stats "okfGsMRUEelLCXzdD"; // You should probably leave this alone,
40					     // it defines which server stats are
41					     // restricted to be viewable by IRCops only.
42					     // Since there's too many stat modes to list
43					     // for an article, here's a hint: once your
44					     // server is up and running, use the /stats
45					     // command (while authenticated as an IRCop)
46					     // to get a list of character->stat pairs,
47					     // which can be used to modify this list.
48	throttle { // When users disconnect, their clients will try to reconnect them.
49		   // This prevents it from happening too quickly, potentially putting
50		   // the server under high load.
51		connections 3; // The number of connections allowed...
52		period 60s; // ...per x seconds, as specified here.
53	};
54
55	anti-flood { // This configures anti-flood settings to prevent users from
56		     // flooding the server with unnecessary commands.
57		nick-flood 3:60; // Allows 3 nick changes per 60 seconds.
58
59		// Some other useful options to read up on are away-flood for how
60		// many times a user can use /AWAY, or unknown-flood-amount for
61		// users that send unknown garbage data to the server.
62	};
63	
64	spamfilter { // This controls settings for spam filtering and default ban info.
65		ban-time 1d; // This is the default duration of a k-line/z-line ban when
66			     // automatically set by a spam filter.
67		ban-reason "Spam/Advertising" // The message used by automatic bans.
68		virus-help-channel "#help"; // The channel users can turn to if they
69					    // need help with viruses such as those
70					    // sent over DCC.
71	};
72};

这就是它!

将您的更改保存到配置文件中,确保将其保存为 unrealircd.conf. 按 CTRL-x,然后 y,然后 Enter

Congrats,你已经完成了编辑配置文件!让我们完成最后几个步骤,然后我们就可以启动服务器。

第六步:创建 ircd.rules 和 ircd.motd

在 UnrealIRCd 启动之前需要创建两个文件: ircd.rulesircd.motd. 在您的壳提示中,键入以下内容来为您的服务器规则创建文件:

1nano ~/Unreal3.2.10.4/ircd.rules

现在,你可以输入你的服务器规则作为简单的文本. 用户将在输入 /RULES 命令时呈现这些规则. 请记住,你应该把这个文件中的行长小于 80 个字符,以防止它们被 IRCd 自动包裹(如果你使用入口,这可能是痛苦的)。

保存您的更改. 创建日期文件的消息:

1nano ~/Unreal3.2.10.4/ircd.motd

这是你可以输入你的MOTD,这将显示用户连接到服务器的时刻。同样的80个字符的行长限制也适用于这里。在这个文件中放置的有用的信息将包括渠道,服务器规则的快速分解,当前的IRCops等。

保存你的变化

如果您在配置中列出了任何其他文件,请现在也创建它们。

步骤七:IRCd日志文件

为了确保IRCd有地方存储其日志,让我们继续创建一个专门为此而空的文件。

1touch ~/Unreal3.2.10.4/ircd.log

步骤八 - 开始 UnrealIRCd

恭喜您!您已经成功设置了自己的IRC DAEMON。

转到 Unreal 目录:

1cd ~/Unreal3.2.10.4

启动聊天服务器:

1./unreal start

你应该看到这样的信息:

1* Loading IRCd configuration ..
2* Configuration loaded without any problems ..
3* Initializing SSL.
4* Dynamic configuration initialized .. booting IRCd.

如果出现启动错误,请检查错误中提到的行号和设置,您应该能够在配置文件中找到问题。

一旦服务器启动,您将能够通过您最喜欢的IRC客户端连接到您的服务器,我建议您在本地机器上进行连接,而不是在Droplet上,以确保其他用户可以连接。

步骤九:连接IRC客户端

在您最喜欢的 IRC 客户端中,键入:

1/server your Droplet IP address or domain here 6667

您需要您的域名或 IP 地址以及端口号码(在本示例中为6667)。

对于 Windows 来说,一些流行的 IRC 客户端是 mIRC, HexChatPidgin.如果你在 Linux 上, X-Chat是免费的,对于 OS X, X-Chat Azure和一些在 App Store 上的付费应用程序是可用的。

第十步:操作员身份验证

一旦连接,您需要作为 IRCop 进行身份验证. 要作为操作员进行身份验证,键入:

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

这些是您在oper {}块中设置的凭证。

然后,你应该被强迫加入我们之前在oper-auto-join中指定的渠道,这表明你现在是一个IRC操作员。

关于通过SSL连接的注意事项

由于服务器实例是使用自签名的SSL证书设置的,有些客户端可能不允许您通过SSL连接,因为无效不受信任的证书。

享受你的新的IRC服务器!从这里,你现在可以设置服务或开始邀请用户。

Published At
Categories with 技术
comments powered by Disqus