在Ubuntu 16.04 LTS上设置InspIRCd IRC服务器

自Internet诞生以来,Internet中继聊天(IRC)一直存在。在本指南中,我将向您展示如何使用带有IntheIRCd和Atheme的IRC服务器设置其他IRC服务。InspIRCd是从头开始编写的为数不多的IRC服务器之一,并且是通过使用高级模块系统提供可调节的功能数量的仅有的IRC服务器之一。

先决条件

InspIRCd应该可以与任何实例大小一起使用。它的最低系统要求是700MHz CPU和300MB RAM。

更新系统

以sudo用户身份登录时,可以将系统更新为最新的稳定状态,如下所示:

apt-get update && apt-get upgrade 

配置防火墙

首先,让我们稍微加强一下VPS。我们将启用ufw并添加一些规则。让我们从配置端口开始:

ufw allow 22/tcp
ufw allow 6667/tcp
ufw enable

防火墙将提示对话框接受更改。只需按Y是。

Command may disrupt existing ssh connections. Proceed with operation (y|n)?

安装和配置InspIRCd

接下来,我们可以安装InspIRCd,对于Ubuntu 16.04,可通过主存储库获得此软件包。

apt-get install inspircd 

安装完成后,我们可以开始配置服务。主要配置可以在该/etc/inspircd/inspircd.conf文件中找到,并具有XML文件的布局。

nano /etc/inspircd/inspircd.conf

首先搜索server标签。在此标记中,您可以输入服务器/网络的详细信息,其中大多数设置对用户可见。

  • name:服务器的主机名。它不需要解析,但是确实需要正确的语法(例如:)sub.example.net
  • description:服务器说明。
  • id:用于此服务器的SID。除非存在SID冲突,否则不应取消注释。这必须是三个字符长。第一个字符必须是数字[0-9],其余两个字符可以是字母[AZ]或数字。
  • network:连接到客户端时给出的网络名称。在网络上的所有服务器上应该相同,并且不能包含空格。

在我们的指南中,我们将使用以下内容:

<server name="irc.example.net"
        description="My EXAMPLE.NET server"
        id="5AA"            
        network="ExampleNET">

将原始标签替换为上面的标签。

接下来,搜索admin标签。这些设置是服务器的管理详细信息。当您键入/ADMIN命令时将显示它们。

  • name: 真正的名字
  • nick:昵称(最好是您在网络上使用的昵称)。
  • email: 电子邮件地址。不一定有效,但此地址将是您的用户在遇到麻烦时应与您联系的地址。

让我们使用管理员Xenial

<admin name="Xenial Xerius"
   nick="xenial"
   email="[email protected]">

现在移到bind address。该标签用于打开服务。默认情况下,您将看到localhost IP(127.0.0.1)。这意味着外界无法联系该服务。让我们通过完全不使用地址来打开我们的服务。这将导致服务绑定到计算机拥有的任何以太网接口:

<bind address="" port="6667" type="clients">

下一个标签将是power标签。该标签定义了两个密码。

  • diepass:操作员要关闭服务器时使用的密码。
  • restartpass:操作员需要重新启动服务器时使用的密码。

最好更改以下默认密码:

<power diepass="die123" restartpass="restart123" pause="2">

我们将要更改的最后一个设置是oper设置。这些定义了操作员登录名。

  • name:用于操作的操作员登录名(例如:)/oper name password
  • password:纯文本
  • host:允许使用哪些主机名/ IP。多个选项可以用空格分隔,并且允许使用CIDR。您可以仅在本部分中使用*@
  • type:这是什么歌剧类型。上面介绍的块应该已经定义了三类:NetAdminGlobalOpHelper。这NetAdmin是我们将要使用的那个。

oper使用以下内容更改标签。请注意,在我们的示例中,我们将对@主机使用“ ”。在生产环境中,不希望使用此方法:

<oper name="xenial"
   password="mypassword"
   host="*@*"
   type="NetAdmin">

在重新启动服务之前,请编辑motdrules文件:

nano /etc/inspircd/inspircd.motd

用您自己的替换,例如:

This is the motd of example.net. Here you can list planned outages or information your users need to know about this IRC server.

最后编辑规则文件。

nano /etc/inspircd/inspircd.rules

添加您自己的规则,例如:

The first rule of Fight Club is: You do not talk about Fight Club. The second rule of Fight Club is: You DO NOT TALK ABOUT FIGHT CLUB! 

现在一切都已设置完毕,重新启动IRC服务:

service inspircd restart

要验证一切都在运行,请查询该netstat工具:

netstat -tulpn | grep -i inspircd

它应该列出程序inspircd,在端口上监听6666

tcp6       0      0 :::6667                 :::*                    LISTEN      31313/inspircd
udp        0      0 0.0.0.0:39335           0.0.0.0:*                           31313/inspircd

为了测试服务器,我们可以安装一个终端IRC客户端。在Windows上,您可以使用诸如mIRC之类的程序。在我们的示例中,我们将使用weechat。这是可在终端会话中使用的基于文本的IRC客户端。

通过存储库安装weechat应用程序:

apt-get install weechat 

安装此应用程序后,运行此IRC客户端:

weechat

要查看weechat必须提供的所有命令,您可以请求help命令:

/help

要退出weechat,可以输入以下命令:

/quit    

将我们的本地服务器添加到weechat中的连接中:

/server add local localhost

现在,我们可以连接到名为“ local”的连接配置文件:

/connect local

您将在终端窗口中看到我们的motd和规则弹出。

要将自己提升为操作员,请键入以下内容:

/oper xenial mypassword

这将向我们显示成功的确认:

22:40:34   local  -- | User mode [+o] by irc.example.net
22:40:34   local  -- | You are now a NetAdmin

我们的IRC服务器就是这样。

安装IRC服务-Atheme

Atheme是针对IRC网络的一组服务,这些服务是为具有较高可伸缩性要求的大型IRC网络设计的。它将其他服务(例如NickServ(昵称注册))添加到IRC网络。

可以在Ubuntu存储库中找到Atheme:

apt-get install atheme-services

安装二进制文件后,解压缩示例配置文件并将其复制到atheme文件夹:

gunzip /usr/share/doc/atheme-services/examples/atheme.conf.example.gz
cp /usr/share/doc/atheme-services/examples/atheme.conf.example /etc/atheme/atheme.conf

接下来,编辑此配置文件:

nano /etc/atheme/atheme.conf

首先搜索loadmodule协议命令。定义如下:

loadmodule "modules/protocol/charybdis";

替换charybdis为以下协议inspircd

loadmodule "modules/protocol/inspircd12";

接下来搜索服务name

name = "services.int";

更改services.int以匹配您的IRC服务器的域名或IP地址:

name = "services.irc.example.net";

完成此操作后,搜索数字:

numeric = "00A";

现在,将其更改为与以前使用的服务器标记中使用的数字不同的值。

numeric = "77C";

完成此操作后,让我们配置网络名称。搜索netname

netname = "misconfigured network";

将此值更改为服务器标记中的网络参数。

netname = "ExampleNET";

更改的值hidehostsuffix

hidehostsuffix = "users.misconfigured";

删除.misconfigured

hidehostsuffix = "users";

接下来,将管理员名称更改为我们之前使用的名称:

adminname = "xenial";

将匹配adminemail到之前使用的关联电子邮件:

adminemail = "[email protected]";

现在已经完成了,我们需要为我们的服务创建一个上行链路。找到两个uplink代码块并将其全部注释掉。/*uplink{命令前和*/右括号的末尾添加。

它将如下所示:

/* this is an example for using an IPv6 address as an uplink */
/*
uplink "irc6.example.net" {
        host = "::1";
        password = "linkage";
        port = 6667;
};
*/

接下来,添加我们自己的上行链路。此上行链路仅在我们本地主机的IP和端口上运行7001。指定一个超级秘密密码(我们将在以后使用):

uplink "services.irc.example.net" {
    host = "127.0.0.1";

    // password
    // If you want to have same send_password and accept_password, you
    // can specify both using 'password' instead of individually.
    password = "SuperSecret123456";

    port = 7001;
 };

最后搜索我们的服务定义。首先从nickserv块开始。

在nickserv块中,搜索host标签并将其更改为ExampleNet/services/NickServ

nickserv {

    ...<<truncated>>...

    /* (*)host
     * The hostname we want NickServ to have.
     */
    host = "ExampleNet/services/NickServ";

    /* (*)real
     * The realname (gecos) information we want NickServ to have.
     */
    real = "Nickname Services";

    ...<<truncated>>...

同时更改hostname tag所有其他服务的:

nickserv:  ExampleNet/services/NickServ
chanserv:  ExampleNet/services/ChanServ
global:    ExampleNet/services/Global
infoserv:  ExampleNet/services/InfoServ
operserv:  ExampleNet/services/OperServ
saslserv:  ExampleNet/services/SaslServ
memoserv:  ExampleNet/services/MemoServ
gameserv:  ExampleNet/services/GameServ
botserv:   ExampleNet/services/BotServ
groupserv: ExampleNet/services/GroupServ
hostserv:  ExampleNet/services/HostServ
helpserv:  ExampleNet/services/HelpServ
alis:      ExampleNet/services/ALIS

完成此操作后,保存并退出配置文件。

要全部测试,请运行atheme-services二进制文件:

atheme-services

这应该确切告诉您它是否有效。如果没有收到如下所示的输出,请返回并检查配置文件中是否有错误:

[19/02/2018 23:06:24] db-open-read: database '/var/lib/atheme/services.db' does not yet exist; a new one will be created.
[19/02/2018 23:06:24] pid 1929
[19/02/2018 23:06:24] running in background mode from /

现在,通过编辑服务文件来启用服务:

nano /etc/default/atheme-services

更改ENABLED值:

DAEMON_OPTS=""
ENABLED=1

现在我们可以启动服务了:

service atheme-services restart

检查其状态:

service atheme-services status

这将返回类似的结果:

● atheme-services.service - LSB: Atheme-services daemon init.d script
   Loaded: loaded (/etc/init.d/atheme-services; bad; vendor preset: enabled)
   Active: active (running) since Wed 2018-02-19 23:45:05 UTC; 8s ago
     Docs: man:systemd-sysv-generator(8)

Feb 19 23:45:05 vultr.guest atheme-services[2810]: Starting Atheme IRC Services: atheme-service
Feb 19 23:45:05 vultr.guest atheme-services[2810]: [19/02/2018 23:45:05] atheme 6.0.11 is start
Feb 19 23:45:05 vultr.guest atheme-services[2810]: [19/02/2018 23:45:05] Module operserv/sgline
Feb 19 23:45:05 vultr.guest atheme-services[2810]: [19/02/2018 23:45:05] module_load(): module
Feb 19 23:45:05 vultr.guest atheme-services[2810]: [19/02/2018 23:45:05] /etc/atheme/atheme.con
Feb 19 23:45:05 vultr.guest atheme-services[2810]: [19/02/2018 23:45:05] db-open-read: database
Feb 19 23:45:05 vultr.guest atheme-services[2810]: [19/02/2018 23:45:05] pid 2824
Feb 19 23:45:05 vultr.guest atheme-services[2810]: [19/02/2018 23:45:05] running in background
Feb 19 23:45:05 vultr.guest atheme-services[2810]: .
Feb 19 23:45:05 vultr.guest systemd[1]: Started LSB: Atheme-services daemon init.d script.

在完成之前,我们需要将我们的Atheme服务添加到InspIRCd:

nano /etc/inspircd/inspircd.conf

在文件末尾添加以下行:

<bind address="127.0.0.1" port="7001" type="servers">

<uline server="services.irc.example.net">

<link name="services.irc.example.net"
  ipaddr="127.0.0.1"
  port="7001"
  allowmask="127.0.0.1"
  sendpass="SuperSecret123456"
  recvpass="SuperSecret123456">

<chanprotect noservices="no"
         qprefix="~"
         aprefix="&">

# Modules needed for services to function
<module name="m_chanprotect.so">
<module name="m_halfop.so">
<module name="m_services_account.so">
<module name="m_deaf.so">
<module name="m_spanningtree.so">
<module name="m_globops.so">
<module name="m_cban.so">
<module name="m_svshold.so">
<module name="m_hidechans.so">
<module name="m_servprotect.so">
<module name="m_chghost.so">
<module name="m_namesx.so">
<module name="m_uhnames.so">    

现在重新启动InspIRCd服务:

service inspircd restart

确保一切运行正常:

service inspircd status

现在再次启动我们的weechat客户程序:

weechat

连接到我们的本地服务器:

/connect local

您将立即弹出我们的一项Atheme服务:NickServ。它将向您提供有关其自身的信息。

23:12:48   local  -- | NickServ (NickServ@ExampleNet/services/NickServ): Welcome to ExampleNet,
                 | root! Here on ExampleNet, we provide services to enable the registration of
                 | nicknames and channels! For details, type /msg NickServ help and /msg
                 | ChanServ help.

您可以使用以下命令查询NickServ并找到其可用命令:

/msg NickServ help


Leave a Comment

AI 能否應對越來越多的勒索軟件攻擊?

AI 能否應對越來越多的勒索軟件攻擊?

勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根

ReactOS:這是 Windows 的未來嗎?

ReactOS:這是 Windows 的未來嗎?

ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+

人工智能如何將流程自動化提升到新的水平?

人工智能如何將流程自動化提升到新的水平?

閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。

macOS Catalina 10.15.4 補充更新引發的問題多於解決

macOS Catalina 10.15.4 補充更新引發的問題多於解決

最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息

大數據的13個商業數據提取工具

大數據的13個商業數據提取工具

大數據的13個商業數據提取工具

什麼是日誌文件系統,它是如何工作的?

什麼是日誌文件系統,它是如何工作的?

我們的計算機以稱為日誌文件系統的有組織的方式存儲所有數據。這是一種有效的方法,可以讓計算機在您點擊搜索時立即搜索和顯示文件。 https://wethegeek.com/?p=94116&preview=true

技術奇點:人類文明的遙遠未來?

技術奇點:人類文明的遙遠未來?

隨著科學的快速發展,接管了我們的大量工作,我們陷入無法解釋的奇點的風險也在增加。閱讀,奇點對我們意味著什麼。

洞察 26 種大數據分析技術:第 1 部分

洞察 26 種大數據分析技術:第 1 部分

洞察 26 種大數據分析技術:第 1 部分

2021 年人工智能對醫療保健的影響

2021 年人工智能對醫療保健的影響

過去幾十年,醫療保健領域的人工智能取得了巨大飛躍。因此,醫療保健中人工智能的未來仍在日益增長。