如何建立一个IRC服务器在Ubuntu 14.04与InspIRCd 2.0和Shaltúre

介绍

本指南介绍如何在Ubuntu 14.04上安装和配置InspIRCd 2.0(IRC服务器)。 在自己的服务器上安装可让您灵活地管理用户,更改其缺刻,更改通道属性等。

在本教程的最后,您应该有一个完整的IRC服务器,您可以通过大多数IRC客户端连接到。

先决条件

请注意,标记为可选的项目将有所帮助,但不是必需的。

  • Ubuntu 14.04 Droplet
  • 使用sudo特权的非root用户( 与Ubuntu 14.04初始服务器设置介绍了如何设置起来。)
  • RVM安装了最新的Ruby版本。 查看本教程的帮助。
  • 如果你有一个域名,您可以配置irc. your_domain_nameservices. your_domain_name指向Droplet。 进入本教程设置一个域名和A和AAAA记录它。 如果你想重定向只有两个子域,使用本教程
  • (可选)已在本地计算机上安装的IRC客户端
  • (可选)SSL证书

为了让您的IRC服务器使用一个免费的SSL证书,请按照如何设置Apache与自由签名SSL证书上的VPS ,并请求证书irc. your_domain_name

如果你有从证书颁发机构付费的SSL证书已经,你需要的*.pem*.crt*.key文件与它来了。

本教程中的所有命令都应以非root用户身份运行。 如果需要该命令的root访问权限,它会在前面加sudo

第1步 - 安装InspIRCd

要安装InspIRCd,我们需要为它创建一个新的包。 不幸的是,对于我们来说,在Ubuntu 14.04存储库中的InspIRCd包过时了。 幸运的是,有可用的脚本,创建一个安装.deb从源码包文件。 它是开源的,所以我们可以根据我们的要求修改它。

我们首先安装一些脚本使用的包:

sudo apt-get install rake git gnutls-bin libgnutls-dev

现在克隆用于创建包的Git存储库:

git clone https://github.com/SaberUK/inspircd-packages.git

然后,切换到克隆到的目录:

cd ./inspircd-packages

我们需要告诉脚本使用稳定版本的InspIRCd,它是2.0版本。 我们还需要告诉它我们需要SSL支持。 为此,我们导出两个环境变量,脚本将读取并相应地执行。

export INSPIRCD_REVISION=insp20
export INSPIRCD_MODULES="regex_posix ssl_gnutls"

此外,删除一个额外的补丁,但会导致2.0版本的问题。

rm ./extras/fix-data-and-log-paths.patch

生成.deb的安装文件:

rake deb

这将需要一段时间,所以去抓一杯咖啡,而它运行。 完成后,运行以下命令查看创建的文件的文件名:

ls *.deb

然后安装.deb用下面的命令文件(使用文件名,你只是在最后一步找到):

sudo dpkg -i ./inspircd_2.0.20_amd64.deb

我们现在将删除InspIRCd的源文件,所以如果一个黑客获得访问,他们不能重新编译恶意代码。

cd ~
rm -rf ./inspircd-packages

第2步 - 配置InspIRCd

在InspIRCd可以真正运行之前,我们需要正确配置它。 为此,我们还设置了一些对我们的服务器的功能至关重要的选项。 有些事情是我们独有的,例如网络名称。

创建inspircd.conf文件:

sudo nano /etc/inspircd/inspircd.conf

现在,将以下示例配置文件复制到其中。 红色的值需要定制。 当您将内容复制到inspircd.conf ,我们将开始在顶部,并将其更改为正确的值。

/etc/inspircd/inspircd.conf
# This is just a more or less working example configuration file, please
# customize it for your needs!
<server name="irc.example.com"
        description="Example IRC Server"
        network="ExampleNet"
        id="00A">

<admin name="Hameer Abbasi"
       nick="habbasi"
       email="admin@example.com">

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

<power diepass="SecretPassword" restartpass="OtherSecretPassword" pause="2">

<connect allow="*"
         timeout="60"
         flood="20"
         threshold="1"
         pingfreq="120"
         sendq="262144"
         recvq="8192"
         localmax="3"
         globalmax="3">

<class name="Shutdown"
       commands="DIE RESTART REHASH LOADMODULE UNLOADMODULE RELOAD">
<class name="ServerLink"
       commands="CONNECT SQUIT RCONNECT MKPASSWD MKSHA256">
<class name="BanControl"
       commands="KILL GLINE KLINE ZLINE QLINE ELINE">
<class name="OperChat"
       commands="WALLOPS GLOBOPS SETIDLE SPYLIST SPYNAMES">
<class name="HostCloak"
       commands="SETHOST SETIDENT SETNAME CHGHOST CHGIDENT">

<type name="NetAdmin"
      classes="OperChat BanControl HostCloak Shutdown ServerLink"
      host="netadmin.omega.org.za">
<type name="GlobalOp"
      classes="OperChat BanControl HostCloak ServerLink"
      host="ircop.omega.org.za">
<type name="Helper"
      classes="HostCloak"
      host="helper.omega.org.za">

<oper name="habbasi"
      password="secretpass"
      host="*@localhost"
      type="NetAdmin">

<files motd="/etc/inspircd/inspircd.motd"
       rules="/etc/inspircd/inspircd.rules">

<channels users="20"
          opers="60">

<dns server="208.67.222.222" timeout="5">
<dns server="208.67.220.220" timeout="5">

<options prefixquit="Quit: "
         noservices="no"
         qaprefixes="no"
         deprotectself="no"
         deprotectothers="no"
         flatlinks="no"
         hideulines="no"
         syntaxhints="no"
         cyclehosts="yes"
         ircumsgprefix="no"
         announcets="yes"
         disablehmac="no"
         hostintopic="yes"
         quietbursts="yes"
         pingwarning="15"
         allowhalfop="yes"
         exemptchanops="">

<security hidewhois=""
          userstats="Pu"
          customversion=""
          hidesplits="no"
          hidebans="no"
          operspywhois="no"
          hidemodes="eI"
          maxtargets="20">

<performance nouserdns="no"
             maxwho="128"
             softlimit="1024"      
             somaxconn="128"
             netbuffersize="10240">

<log method="file"
     type="* -USERINPUT -USEROUTPUT"
     level="default"
     target="/var/log/inspircd.log">

<whowas groupsize="10"
        maxgroups="100000"
        maxkeep="3d">

<timesync enable="no" master="no">

<badnick nick="NickServ" reason="Reserved For Services">    
<badnick nick="ChanServ" reason="Reserved For Services">
<badnick nick="Global" reason="Reserved For S
ervices">
<badnick nick="InfoServ" reason="Reserved For Services">
<badnick nick="OperServ" reason="Reserved For Services">
<badnick nick="SaslServ" reason="Reserved For Services">
<badnick nick="StatServ" reason="Reserved For Services">
<badnick nick="ALIS" reason="Reserved For Services">

我们需要更改一些特定于您和您的Droplet的值。 在顶部,找到server部分。 将其更改为所需的主机名,描述和网络名称。 id应该改变所以它有两个数字和一个字母。 例如:

/etc/inspircd/inspircd.conf
<server name="irc.yourdomain.com"
        description="Example description for the IRC server"
        network="ExampleNet"
        id="46T">

现在,找到admin模块。 将值更改为IRC网络运营商的信息。 操作员用户将能够在网络上做任何事情。

/etc/inspircd/inspircd.conf
<admin name="Hameer Abbasi"
       nick="habbasi"
       email="admin@example.com">

我们需要能够重新启动或关闭服务器。 这是在做power模块。 在这里,您需要更改密码。 价值diepass是密码网络管理员将用于关闭服务器,和值restartpass是,他们将使用重新启动它的密码。 价值pause讲述从如果输入的密码错误执行这些操作的服务器多长时间来阻止OPER(以秒为单位)。 继续并更改密码。 保留pause其默认值。

/etc/inspircd/inspircd.conf
<power diepass="SecretPassword" restartpass="OtherSecretPassword" pause="2">

找到oper块。 我们需要定义操作员帐户和密码。 您之前定义的管理员和操作员可以是同一个人。 如果您有静态IP地址或信任的域名,请更改主机以包括它。 如果可能的话,不要将该值设置为*@* ,这使得运营商能够从任何地方连接。

/etc/inspircd/inspircd.conf
<oper name="habbasi"
      password="secretPassword"
      host="*@localhost *@your.local.ip.here *@your.local.domain.here"
      type="NetAdmin">

对于host值,独立多个IP地址和空间域。 您还应该添加当前Droplet的IP地址和域(如果有)。 保存更改,然后关闭文件。

第3步 - 编辑当天的消息

每次用户连接到IRC网络时,都会显示该日的消息。 要自定义,创建一个inspircd.motd文件/etc/inspircd/

sudo nano /etc/inspircd/inspircd.motd

在此文件中,添加您要显示用户的日期的消息。 通常,您需要一个友好的提醒通知用户规则。 此外,如果任何事情正在改变网络范围,这是通知他们的地方。 例如:

/etc/inspircd/inspircd.motd
<^>This is ExampleNet. We are the world's newest IRC network.

Support us by joining and becoming regular!

Be sure to view the rules by typing "/rules" and hitting ENTER.<^>

接下来,编辑规则文件。

sudo nano /etc/inspircd/inspircd.rules

在这个文件中,放任何规则。 这些将被显示给用户每次输入时间/rules命令。 例如,

/etc/inspircd/inspircd.rules
1. No children under 13 are allowed to be on this network without the knowledge and consent of their parent or legal guardian.
2. No discussion or links involving pirated software is allowed on the network.
3. No discussion of drugs or other narcotics.
4. No trading of weapons.
5. No porn. There are minors on this network.

第4步 - 启动IRC服务器

在启动IRC服务器之前,我们需要修正权限和文件所有权:

sudo find /etc/inspircd -type d -exec chmod 770 {} \;
sudo find /etc/inspircd -type f -exec chmod 644 {} \;
sudo chown -R irc:irc /etc/inspircd

接下来,我们需要为PID文件和日志文件目录设置正确的权限。

sudo chown -R irc:irc /var/inspircd/
sudo chown -R irc:irc /var/log/inspircd

您现在读的是启动InspIRCd:

sudo service inspircd start

您应该在结束附近收到以下消息,这意味着我们成功启动了InspIRCd:

InspIRCd is now running as 'irc.example.com'[46T] with 1024 max open sockets

第5步 - 测试基本功能

由于基本功能应该已经启动,请尝试连接到新创建的IRC网络。 我们将指导您在Droplet上安装一个基于命令行的IRC客户端。 首先,安装IRSSI。

sudo apt-get install irssi

然后启动IRC客户端:

irssi

你应该能够在输入上面写着底部窗口[(status)] 注意,所有IRC命令都以正斜杠开头。 要连接到IRC网络,请键入:

/connect irc.example.com

如果未配置服务器的主机名,则可以使用Droplet的IP地址。 如果您正确配置了服务器,您应该看到类似以下的屏幕:

已成功连接!

现在通过键入以下命令作为运算符登录:

/oper habbasi secretPassword

如果它工作,你应该看到“你现在是NetAdmin”的单词。 这意味着您的操作员权限正在工作。 要退出,我们将使用另一个命令:

/quit

推荐IRC客户端

几乎任何设备都有各种各样的IRC客户端。 这里是一个小的推荐客户列表:

  • 适用于Windows,Mac OS X和Linux的HexChat
  • mIRC for Windows
  • Mac OS X和iOS的Colloquy
  • 适用于Linux和Mac OS X的IRSSI
  • AndChat为Android
  • Kiwi IRC(网络浏览器客户端)

请注意,使用Kiwi IRC时,您将遇到使用oper权限的问题。 Kiwi通过代理连接,不维护您的IP地址。 如果您选择仅列出为操作员操作允许连接的特定IP地址(建议用于安全性),操作员权限将无法与Kiwi IRC一起使用。

第6步 - 设置SSL(可选)

此部分的目标是保护用户的隐私,并保护密码和其他任何人都可以看到的数据传输,如ISP。 这当然是可选的,但强烈推荐。

首先,我们需要将您的SSL证书复制到正确的目录。 为此,我们需要在IRC服务器配置目录中创建一个目录。

sudo mkdir /etc/inspircd/sslcerts

接下来,我们需要将相关的SSL证书和密钥复制到新创建的配置目录:

sudo cp /path/to/ssl/private.key /etc/inspircd/sslcerts/private.key
sudo cp /path/to/ssl/certificate.crt /etc/inspircd/sslcerts/cert.pem
sudo cp /path/to/ca/validation.crt /etc/inspircd/sslcerts/ca.pem

如果您使用的是自签名证书,则可以省略复制ca.pem文件。 这在上面的最后一个命令中完成。

设置了适当的权限inspircd目录来保护您的证书,所以InspIRCd就能阅读。

sudo find /etc/inspircd -type d -exec chmod 770 {} \;
sudo find /etc/inspircd -type f -exec chmod 644 {} \;
sudo chown -R irc:irc /etc/inspircd

编辑配置文件以使其使用SSL:

sudo nano /etc/inspircd/inspircd.conf

查找:

/etc/inspircd/inspircd.conf
<bind address="" port="6667" type="clients">

在绑定部分下面,添加以下行:

/etc/inspircd/inspircd.conf
<bind address="" port="6697" type="clients" ssl="gnutls">
<gnutls cafile="/etc/inspircd/sslcerts/ca.pem"
        certfile="/etc/inspircd/sslcerts/cert.pem"
        keyfile="/etc/inspircd/sslcerts/private.key"
        priority="SECURE192:-VERS-SSL3.0">

<module name="m_ssl_gnutls.so">

如果您使用的是自签名证书,则可以省略cafile指令。

重新启动服务器以启用更改。

sudo service inspircd restart

现在应在端口6697上启用SSL。

第7步 - 测试SSL(可选)

再次,为了测试SSL,我们将使用IRSSI。 键入如前所示启动IRSSI:

irssi

接下来,键入以下命令以启用SSL连接:

/connect -SSL -SSL_Verify irc.example.com 6697

如果您使用的是自签名的证书,您应该忽略-SSL_Verify选项。

如果成功,你应该看到这样的屏幕:

您的服务器使用SSL

来吧,退出客户端/quit

第8步 - 安装Shaltúre服务

您的IRC服务器工作,您可以连接到它。 但猜猜什么? 您不能注册缺刻。 您无法管理频道所有权和角色。 您不能发送或接收记事。 对于所有这一切,我们使用服务。 最流行的服务平台是Atheme,但是它的开发已经停止,它不会被更新,除了补丁严重的安全漏洞。 为此,我将解释如何安装一个积极开发的Atheme的叉Shaltúre。

我们首先安装一个必备软件包:

sudo apt-get install gettext

Shaltúre最好不要以root身份运行。 但是,如果我们作为我们的主要用户运行,可能会有安全隐患。 因此,我们将为Shaltúre创建一个没有密码的用户。 您无法登录到该帐户,只能用访问sudo

sudo adduser --disabled-password shalture

这将给你一些提示,但你可以只按enter键通过他们。 现在切换到用户:

sudo -i -u shalture

我们继续通过更改目录到你的主目录,并克隆shalture库。 我们将复制到不同的目录,因为我们要在安装~/shalture目录。

git clone git://github.com/shalture/shalture.git shalture-devel

改变你的活动目录的shalture-devel目录和克隆一些其他必要的库。

cd ./shalture-devel
git submodule init
git submodule update

运行设置编译阶段的配置,然后编译和安装:

./configure --enable-contrib
make
make install

它将需要一些时间后,第二个命令,当它编译,所以走动,伸展你的腿有点。 完成后,删除源文件。

cd ~
rm -rf ./shalture-devel/

第9步 - 配置Shaltúre服务

安装完成后,将目录更改为Shaltúre配置目录,以便我们可以对其进行配置。 我们将从示例配置文件开始。

cd ~/shalture/etc
cp shalture.conf.example shalture.conf
nano shalture.conf

在文件中找到:

/home/shalture/shalture/etc/shalture.conf
#loadmodule "modules/protocol/charybdis";

通过在该行的开头删除字符去掉注释,并替换inspircd

/home/shalture/shalture/etc/shalture.conf
loadmodule "modules/protocol/inspircd";

接下来,找到:

/home/shalture/shalture/etc/shalture.conf
name = "services.int";

更改int相匹配的域名或你的IRC服务器的IP地址:

/home/shalture/shalture/etc/shalture.conf
name = "services.your_domain_name_or_IP";

查找此行:

/home/shalture/shalture/etc/shalture.conf
numeric = "00A";

变化值numeric所以它的服务器不同的id前面了,但它必须包含两个数字,像这样的信:

/home/shalture/shalture/etc/shalture.conf
numeric = "07C";

现在找到:

/home/shalture/shalture/etc/shalture.conf
netname = "misconfigured network";

的值更改netname您在设定网络名称server的InspIRCd配置文件的块。 例如:

/home/shalture/shalture/etc/shalture.conf
netname = "ExampleNet";

也找到:

/home/shalture/shalture/etc/shalture.conf
hidehostsuffix = "users.misconfigured";

而在后引号去掉一切users

/home/shalture/shalture/etc/shalture.conf
hidehostsuffix = "users";

接下来,找到这个:

/home/shalture/shalture/etc/shalture.conf
adminname = "misconfigured admin";

将引号内的部分更改为您的姓名或化名。

现在,更改网络的联系人电子邮件。 找:

/home/shalture/shalture/etc/shalture.conf
adminemail = "admin@example.com";

的值更改adminemail到您的电子邮件地址。

接下来,找到这个:

/home/shalture/shalture/etc/shalture.conf
registeremail = "noreply@admin.tld";

变化值registeremailnoreply@ your_domain_name 这是当用户首次在您的网络上注册其昵称时,在用户的欢迎电子邮件中显示的电子邮件地址。 它也是发送密码重置说明和激活说明的电子邮件。 我们已将其设置为不存在的电子邮件,因此它不会占用您的真实收件箱,因为不需要回复这些电子邮件。

找到第一个uplink代码块,并通过添加注释掉整个块/*之前和*/后。 它应该看起来像这样:

/home/shalture/shalture/etc/shalture.conf
/* uplink "irc.example.net" {
    // The server name of the ircd you're linking to goes above.

    // host
    // The hostname to connect to.
    host = "127.0.0.1";

    // vhost
    // The source IP to connect from, used on machines with multiple interfaces.
    #vhost = "192.0.2.5";

    // send_password
    // The password sent for linking.
    send_password = "mypassword";

    // receive_password
    // The password received for linking.
    receive_password = "theirpassword";

    // port
    // The port to connect to.
    port = 6667;
}; */

在下一节(在您注释过的部分之后)中,找到:

/home/shalture/shalture/etc/shalture.conf
uplink "irc6.example.net" {
        host = "::1";

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

        port = 6667;
};

更改irc6.example.netservices. your_domain_name (你应该有一个设置为一个服务记录。 您的域名作为先决条件的一部分。)更改密码的东西安全。 将端口更改为7001 它现在应该类似于以下内容:

/home/shalture/shalture/etc/shalture.conf
uplink "services.your_domain_name" {
        host = "::1";

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

        port = 7001;
};

接下来,找到在以下nickserv块:

/home/shalture/shalture/etc/shalture.conf
nickserv {
...
host = "services.int";
...
};

将其更改为您希望NickServ拥有的主机。 像这样:

/home/shalture/shalture/etc/shalture.conf
host = "ExampleNet/services/NickServ"

对以下服务执行与上一个类似的更改。 每个配置文件中都有一个块:

  • ChanServ
  • 全球
  • InfoServ
  • OperServ
  • SaslServ
  • MemoServ
  • GroupServ
  • StatServ
  • ALIS

这些服务是Shaltúre默认启用的服务。 接下来,找到这一行:

/home/shalture/shalture/etc/shalture.conf
operator "jilles" {

并改变它,所以它有您在选择的缺口oper在InspIRCd配置块:

/home/shalture/shalture/etc/shalture.conf
operator "habbasi" {

最后,复制要在以后使用的默认cron配置文件:

cp /home/shalture/shalture/etc/shalture.cron.example /home/shalture/shalture/etc/shalture.cron

我们已经成功配置服务! 现在,将退出提示回到你的sudo非root用户。

exit

第10步 - 配置InspireCd以使用Shaltúre

接下来,我们需要配置InspireCd与Shaltúre玩得很好。 再次编辑InspIRCd配置文件:

sudo nano /etc/inspircd/inspircd.conf

在文件末尾添加以下行:

/etc/inspircd/inspircd.conf
<bind address="::1" port="7001" type="servers">

<uline server="services.example.com">

<link name="services.example.com"
      ipaddr="::1"
      port="7001"
      allowmask="::1"
      sendpass="password"
      recvpass="password">

<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">

对于值以红色突出显示,值更改为您的域名,都sendpassrecvpass您在使用的密码uplink的Shaltúre配置的部分。

保存并退出文本编辑器。

我们都配置了! 我们现在要做的是重新启动服务器和服务!

sudo service inspircd restart
sudo -i -u shalture /home/shalture/shalture/bin/shalture-services

您应该在末尾看到一条类似于以下内容的消息:

[2015-07-24 22:21:10] running in background mode from /home/shalture/shalture

这意味着Shaltúre已经成功启动。

第1步1 - 测试Shaltúre服务

再次,使用IRSSI连接到您的服务器,如第5步或7中所示。您应该看到类似以下的屏幕:

Shaltúre工作

这意味着Shaltúre工作正常,并已成功链接到InspIRCd。

第1步2 - 使InspIRCd和Shaltúre在重新启动后持续存在

我们已经配置了您的IRC服务器。 怎么办? 好吧,Shaltúre没有安装作为服务,这意味着它不会生存重新启动。 要做到这一点,请键入:

sudo -i -u shalture crontab -e

如果你得到一个提示哪些编辑器使用,按2选择nano ,或任何你想要的其他编辑器。

并在文件的结尾,添加:

*/5 * * * * /home/shalture/shalture/etc/shalture.cron >/dev/null 2>&1

这将每五分钟检查一次服务是否正在运行。 如果没有,它启动它们。 不幸的是,InspIRCd也没有添加到启动列表,但将它添加到列表是一个简单的命令:

sudo update-rc.d inspircd defaults

现在InspIRCd和Shaltúre将开机运行!

结论

InspIRCd允许您设置定制的IRC网络,您可以管理和管理自己。 Shaltúre通过添加昵称所有权,频道所有权,备忘录等功能进行补充。

为了进一步配置您的IRC服务器,检查出InspIRCd维基或包括在Shaltúre示例配置文件。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏