在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

如何在CentOS 7上安装Oxwall

如何在CentOS 7上安装Oxwall

Oxwall是一个开源社交网络软件平台,可用于免费构建自定义社交网站(SNS)。在这篇文章中,

如何在Ubuntu 16.10上安装Review Board

如何在Ubuntu 16.10上安装Review Board

使用其他系统?Review Board是一个免费且开源的工具,用于检查源代码,文档,图像等。这是基于网络的软件战

如何在Debian 9 LAMP VPS上安装October 1.0 CMS

如何在Debian 9 LAMP VPS上安装October 1.0 CMS

使用其他系统?October 1.0 CMS是基于Laravel框架构建的简单,可靠,免费和开源的内容管理系统(CMS)

如何使用Ubuntu 15.10在Vultr服务器上安装Xubuntu桌面

如何使用Ubuntu 15.10在Vultr服务器上安装Xubuntu桌面

Xubuntu是XFCE + Ubuntu!XFCE是Ubuntu的轻量级GUI /桌面。Vultr服务器需要其他依赖项,默认情况下未安装这些依赖项。

如何在Debian 9上安装Monica

如何在Debian 9上安装Monica

使用其他系统?Monica是一个开源的个人关系管理系统。可以将其视为CRM(销售团队使用的一种流行工具

如何使用SSL和安全密码保护由Nginx驱动的网站

如何使用SSL和安全密码保护由Nginx驱动的网站

简介SSL(代表安全套接字层)及其后续版本TLS(代表传输层安全性)是需要加密的加密协议。

如何在Fedora 26 LAMP VPS上安装MODX Revolution

如何在Fedora 26 LAMP VPS上安装MODX Revolution

使用其他系统?MODX Revolution是一种快速,灵活,可扩展,免费和开源的企业级内容管理系统(CMS),由

如何在Ubuntu 17.04上安装JuliaLang

如何在Ubuntu 17.04上安装JuliaLang

朱莉娅(Julia)通常称为JuliaLang,是一种用于数值计算的编程语言。Julia的速度和C一样快,但是却不牺牲可读性

在Ubuntu 14.04上安装Ruby on Rails

在Ubuntu 14.04上安装Ruby on Rails

Ruby on Rails(RoR)是用Ruby编程语言编写的框架,可让您将Ruby与HTML,CSS和类似的程序结合使用。

在Fedora 28上安装Anchor CMS

在Fedora 28上安装Anchor CMS

使用其他系统?Anchor是用PHP编写的轻量级开源博客CMS。Anchors源代码托管在GitHub上。本指南将向您展示

将Debian 9升级到Debian 10

将Debian 9升级到Debian 10

简介Debian 10(Buster)是Debian 9(Stretch)的后继产品。它于2019年7月6日发布。在本教程中,我们将升级一个existin

如何管理Linux服务器时区设置

如何管理Linux服务器时区设置

在Linux服务器上正确设置日期和时间非常重要。您的服务器日志和其他重要信息都将反映时区

如何在Ubuntu 16.04上安装Taiga项目管理工具

如何在Ubuntu 16.04上安装Taiga项目管理工具

使用其他系统?Taiga是用于项目管理的免费和开源应用程序。与其他项目管理工具不同,Taiga使用增量

在Ubuntu上配置Nagios:第1部分-Nagios服务器

在Ubuntu上配置Nagios:第1部分-Nagios服务器

本文是有关在Ubuntu 14.04上安装和配置Nagios的2部分系列文章的一部分。第1部分:Nagios服务器第2部分:远程主机概述Nagio

如何访问Vultr VPS

如何访问Vultr VPS

Vultr提供了几种不同的方式来访问VPS以进行配置,安装和使用。访问凭据VPS ar的默认访问凭据

如何在Debian 9上安装Grav CMS

如何在Debian 9上安装Grav CMS

使用其他系统?Grav是用PHP编写的开源平面文件CMS。Grav源代码公开托管在GitHub上。本指南将向您展示如何

如何在Fedora 26 LAMP VPS上安装Pagekit 1.0 CMS

如何在Fedora 26 LAMP VPS上安装Pagekit 1.0 CMS

使用其他系统?Pagekit 1.0 CMS是一个美观,模块化,可扩展,轻量级,免费和开源的内容管理系统(CMS),具有

如何在Ubuntu 16.04 LAMP VPS上安装BigTree CMS

如何在Ubuntu 16.04 LAMP VPS上安装BigTree CMS

使用其他系统?BigTree CMS 4.2是一种快速,轻量级,免费和开源的企业级内容管理系统(CMS),具有广泛的功能。

如何在CentOS 7上设置vsFTPd

如何在CentOS 7上设置vsFTPd

FTP是用于通过Internet传输文件的有用协议,本指南将向您展示如何设置vsFTPd(非常安全的文件传输协议守护程序)o

在Debian / Ubuntu中使用Rsync设置文件镜像

在Debian / Ubuntu中使用Rsync设置文件镜像

简介如果您经营一个重要的网站,则最好将文件镜像到辅助服务器。如果您的主服务器有网络

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg可以避免系统污染,确保仅安装必要的依赖关系。

如何在Ubuntu 16.04上安装OpenSIPS控制面板

如何在Ubuntu 16.04上安装OpenSIPS控制面板

快速学习如何在Ubuntu 16.04上安装OpenSIPS控制面板,为VoIP提供商提供支持的功能。

在Fedora 28上安装Akaunting

在Fedora 28上安装Akaunting

学习如何在Fedora 28上安装Akaunting,一款适合小型企业和自由职业者的开源会计软件。

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

使用其他系统?Mailtrain是一个基于Node.js和MySQL / MariaDB构建的开源自托管新闻通讯应用程序。

诊断Minecraft服务器延迟和低TPS

诊断Minecraft服务器延迟和低TPS

了解導致Minecraft延遲的原因和解決方案,包括優化伺服器性能和減少滯後的步驟。

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 機器變磚。閱讀這篇文章以了解更多信息