如何使用InspIRCd和Anope构建自己的IRC服务器

在本教程中,我将指导您在CentOS 7服务器上从源代码安装InspIRCd。然后我们将把InspIRCd与anope s

InspIRCd是一款现代化,快速的IRC服务器,也是少数几个IRC服务器应用程序之一,可提供高性能和稳定性,并以C ++编写。 它是在您的服务器上构建自己的IRC的最佳解决方案之一。 它支持两个加密库,OpenSSL和gnutls,并支持许多服务,如anope主题。 InspIRCd基于提供许多模块的模块化IRCd。 如果要在InspIRCd上启用模块,则只需编辑modules.conf文件,并为模块添加新行。

在本教程中,我将引导您从CentOS 7服务器上的源安装InspIRCd。 然后,我们将将InspIRCd与anope服务集成,并在其上启用gnutls加密。

先决条件

  • CentOS 7服务器 - 64位。
  • 根权限

第1步 - 安装软件包

在这一步中,我们将安装一些RPM软件包。 这些软件包用于模块管理器(基于perl)和InspIRCd安装的软件包。 登录到服务器并使用sudo命令切换到root:

ssh inspircd@192.168.1.102
sudo su

安装Perl扩展,以便稍后使用模块管理器。

yum -y install perl perl-libwww-perl perl-Crypt-SSLeay perl-LWP-Protocol-https

然后为InspIRCd安装安装gnutls和gcc编译器:

yum -y install gcc-c++ gnutls gnutls-devel gnutls-utils pkgconfig wget

第2步 - 添加新的系统用户

我们希望以irc用户身份运行InspIRCd ,因此我们需要在系统上创建一个新帐户。 使用useradd命令添加新用户:

useradd -m -s /bin/bash irc

-m =为用户创建一个主文件夹。
-s =定义shell - 我们使用/ bin / bash shell。

第3步 - 安装InspIRCd

从root用户切换到新帐号irc:

su - irc

现在我们在irc用户的主目录中,使用wget命令下载inpircd源代码,并解压缩:

wget https://github.com/inspircd/inspircd/archive/v2.0.21.tar.gz
tar -xzvf v2.0.21.tar.gz

转到inspircd目录:

cd inspircd-2.0.21/

启用对inspIRCd的gnutls支持:

./configure --enable-extras=m_ssl_gnutls.cpp

然后安装它,我们将在主目录“”上安装InspIRCd

./configure

您将被要求安装目录,我们将使用“/ home / irc / inspircd /”作为安装目录。 键入目录的完整路径,然后按y或输入。

建立ircd

现在运行:

make
make install

等待安装过程完成,然后删除inspircd-2目录:

cd ~/
rm -rf inspircd-2.0.21/

第4步 - 配置InspIRCd

如果所有安装完成,请转到inspircd目录。

cd inspircd/

为证书文件创建一个新的“cert”目录,并使用certtool命令创建新证书 - 或者您可以使用openssl生成证书文件。

mkdir cert; cd cert
certtool --generate-privkey --outfile key.pem
certtool --generate-self-signed --load-privkey key.pem --outfile cert.pem

现在我们在cert目录中有一个证书和密钥文件:

cert.pem
key.pem

接下来,转到conf目录并创建一个新的配置文件inspircd.conf:

cd ~/inspircd/conf/
vi inspircd.conf

粘贴以下配置:


<config format="xml">
<define name="bindip" value="1.2.2.3">
<define name="localips" value="&bindip;/24">

####### SERVER CONFIGURATION #######

<server
        name="chat.inspircd.co"
        description="Welcome to inspird World"
        id="97K"
        network="chat.inspircd.co">


####### ADMIN INFO #######

<admin
       name="jun naruse"
       nick="naruse"
       email="naruse@inspircd.co">

####### PORT CONFIGURATION #######

<bind
      address=""
      port="6697"
      type="clients"
      ssl="gnutls">

<module name="m_ssl_gnutls.so">
<gnutls certfile="/home/irc/inspircd/cert/cert.pem" keyfile="/home/irc/inspircd/cert/key.pem" priority="NORMAL:-MD5" hash="sha1">

<bind
       address=""
       port="7000"
       type="servers">

####### DIE and RESTART CONFIGRATION #######

<power
       diepass="mypassword"
       restartpass="mypassword">

####### CONNECT CONFIGURATION #######

<connect deny="3ffe::0/32" reason="The 6bone address space is deprecated">

<connect
         name="main"
         allow="*"
         #maxchans="30"
         timeout="10"
         pingfreq="120"
         hardsendq="1M"
         softsendq="8192"
         recvq="8K"
         threshold="10"
         commandrate="1000"
         fakelag="on"
         localmax="10"
         globalmax="10"
         useident="no"
         limit="5000"
         modes="+x">

####### CIDR CONFIGURATION #######

<cidr
      ipv4clone="32"
      ipv6clone="128">

####### INCLUDE FILE #######

<include file="conf/opers.conf">
#<include file="conf/examples/links.conf.example">

####### MISCELLANEOUS CONFIGURATION #######

<files motd="conf/motd.txt" rules="conf/rules.txt">

####### MAXIMUM CHANNELS #######

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

####### PID FILE #######

<pid file="/home/irc/inspircd/inspircd.pid">

####### BANLIST LIMITS #######

<banlist chan="#largechan" limit="128">
<banlist chan="*" limit="69">

####### SERVER OPTIONS #######

<options
         prefixquit="Quit: "
         suffixquit=""
         prefixpart="&quot;"
         suffixpart="&quot;"
         syntaxhints="no"
         cyclehosts="yes"
         cyclehostsfromuser="no"
         ircumsgprefix="no"
         announcets="yes"
         allowmismatch="no"
         defaultbind="auto"
         hostintopic="yes"
         pingwarning="15"
         serverpingfreq="60"
         defaultmodes="nt"
         moronbanner="You're banned! Email yone@natsu.com with the ERROR line below for help."
         exemptchanops="nonick:v flood:o"
         invitebypassmodes="yes"
         nosnoticestack="no"
         welcomenotice="yes">


####### PERFORMANCE CONFIGURATION #######

<performance
             netbuffersize="10240"
             somaxconn="128"
             limitsomaxconn="true"
             softlimit="12800"
             quietbursts="yes"
             nouserdns="no">

####### SECURITY CONFIGURATION #######

<security
          announceinvites="dynamic"
          hidemodes="eI"
          hideulines="no"
          flatlinks="no"
          hidewhois=""
          hidebans="no"
          hidekills=""
          hidesplits="no"
          maxtargets="20"
          customversion=""
          operspywhois="no"
          restrictbannedusers="yes"
          genericoper="no"
          userstats="Pu">

####### LIMITS CONFIGURATION #######

<limits
        maxnick="31"
        maxchan="64"
        maxmodes="20"
        maxident="11"
        maxquit="255"
        maxtopic="307"
        maxkick="255"
        maxgecos="128"
        maxaway="200">

####### LOGGING #######

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

####### WHOWAS OPTIONS #######

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

####### BAN OPTIONS #######

<badip
       ipmask="192.0.2.69"
       reason="No porn here thanks.">

<badnick
         nick="ChanServ"
         reason="Reserved For Services">

<badnick nick="NickServ" reason="Reserved For Services">
<badnick nick="OperServ" reason="Reserved For Services">
<badnick nick="MemoServ" reason="Reserved For Services">

<badhost
         host="*@banneduser.example.net">

<badhost host="root@*" reason="Don't IRC as root!">
<badhost host="*@198.51.100.0/24" reason="This subnet is bad.">

# exception: Hosts that are exempt from [kgz]lines.
<exception
           host="*@ircop.example.com"
           reason="Oper's hostname">

####### INSANE BAN OPTIONS #######

<insane
        hostmasks="no"
        ipmasks="no"
        nickmasks="no"
        trigger="95.5">

编辑服务器的服务器配置块:

name :服务器的主机名或FQDN

描述 :您的服务器描述

id :服务器的SID - 2个字母

网络 :您的网络的名称

编辑管理员信息。

名字 :真名

nick :nick用于IRC网络

电子邮件 :admin的电子邮件

编辑端口和ssl配置的绑定地址。

地址 :服务器IP地址 - 不是主机名

端口 :端口使用

键入 :客户端或服务器类型

ssl :加密使用 - openssl或gnutls

编辑死机并重启配置。

此配置用于设置密码以重新启动或关闭可信赖的密码。

diepass =“mypassword”

restartpass =“mypassword”

保存文件并退出。

现在为操作员配置创建新的文件opers.conf。

vi opers.conf

粘贴下面的操作配置:

<class
     name="Shutdown"
     commands="DIE RESTART REHASH LOADMODULE UNLOADMODULE RELOADMODULE GLOADMODULE GUNLOADMODULE GRELOADMODULE"
     usermodes="*"
     chanmodes="*">

<class name="SACommands" commands="SAJOIN SAPART SANICK SAQUIT SATOPIC SAKICK SAMODE OJOIN">
<class name="ServerLink" commands="CONNECT SQUIT RCONNECT RSQUIT MKPASSWD ALLTIME SWHOIS JUMPSERVER LOCKSERV UNLOCKSERV" usermodes="*" chanmodes="*" privs="servers/auspex">
<class name="BanControl" commands="KILL GLINE KLINE ZLINE QLINE ELINE TLINE RLINE CHECK NICKLOCK NICKUNLOCK SHUN CLONES CBAN CLOSE" usermodes="*" chanmodes="*">
<class name="OperChat" commands="WALLOPS GLOBOPS" usermodes="*" chanmodes="*" privs="users/mass-message">
<class name="HostCloak" commands="SETHOST SETIDENT SETIDLE CHGNAME CHGHOST CHGIDENT" usermodes="*" chanmodes="*" privs="users/auspex">

<type
    name="NetAdmin"
    classes="SACommands OperChat BanControl HostCloak Shutdown ServerLink"
    vhost="netadmin.inspircd.co"
    modes="+s +cCqQ">

<type name="GlobalOp" classes="SACommands OperChat BanControl HostCloak ServerLink" vhost="ircop.inspircd.co">
<type name="Helper" classes="HostCloak" vhost="helper.inspircd.co">

####### OPERATOR CONFIGURATION #######

<oper
      name="naruse"
      password="mypassword"
      host="brain@dialup15.isp.test.com *@localhost *@example.com *@*"
      type="NetAdmin">

保存文件并退出。

Eedit操作配置如下:

名称 :网上使用的名称

密码 :获取操作密码

主机 :定义您的主机,如果要让所有主机或IP都可以获得操作访问权限,请定义为“* @ *”。

type :运算符的类型 - NetAdmin,Helper,GlobalOp。

接下来,从examples目录复制motd和rules文件的样本。

cp examples/motd.txt.example motd.txt
cp examples/rules.txt.example rules.txt

然后创建inspircd配置,您必须为服务配置创建一个新的文件links.conf。 我们将使用anope服务。

vi links.conf

粘贴配置如下:

<link name="services.inspircd.co"
      ipaddr="127.0.0.1"
      port="7000"
      sid="3AX"
      allowmask="127.0.0.0/8"
      sendpass="iamalive"
      recvpass="iamalive">

<uline server="services.inspircd.co" silent="yes">

保存并退出。

然后从examples目录复制模块配置。

cp examples/modules.conf.example modules.conf

编辑modules.conf并取消注释以下模块:

m_alias - line 65
m_chghost.so - line 463
m_customprefix - line 628
m_globops - line 814
m_hidechans - line 842
m_services_account - line 1630
m_svshold.so - line 1795
m_spanningtree - line 1902

保存并退出。

最后,回到inspircd目录,然后启动inspircd。

cd ~/inspircd/
./inspircd start

开始ircd

如果要检查inspircd端口,可以使用下面的netstat命令:

netstat -plntu

您可以看到端口6697和7000打开。

Inspircd已成功安装。

第5步 - 安装和配置Anope服务

从irc用户,通过键入“退出”或按ctrl + d切换到根,然后安装cmake。 需要安装anope

exit
yum -y install cmake

现在回到irc用户下载anope:

su - irc
wget https://github.com/anope/anope/archive/2.0.3.tar.gz

提取anope并编译它。

tar -xzvf 2.0.3.tar.gz
cd anope-2.0.3/

编译安装anope服务:

./Config

系统会询问您是否安装目录,只需按Enter键即可。

建立Anope

转到构建目录并安装它:

cd build/
make
make install

这将需要一些时间,不要中断这个过程。

当anope安装完成后,得到主目录,删除anope并转到services目录。

cd ~/
rm -rf anope-2.0.3/
cd services/

服务配置在conf目录中可用,因此请转到该目录,并将example.conf复制到services.conf。

cd conf/
cp example.conf services.conf

使用vi编辑配置文件:

vi services.conf

行92和93,定义您的IRC服务,它必须与inspircd.configuration匹配。

name = "services.inspircd.co"
value = "services.inspircd.co"

第195行,配置到IRC服务器的链接。

host = "127.0.0.1"
ssl = no
port = 7000
password = "iamalive"

第198行服务器信息:

name = "services.inspircd.co"

现在263行,定义使用的ircd软件:

name = "inspircd20"

行293,给出网络信息名称:

name = "services.inspircd.co"

保存并退出。

当所有这些都完成后,在bin目录中启动anope服务:

cd ~/services/bin/
./anoperc start

如果您看到这样的结果,您已经成功地为inspircd配置了anope服务。

开始Anope

第5步 - 测试

为了确保一切正常运行,我们现在应该测试我们创建的IRC服务器。

我们在IP上运行IRC 192.168.1.102和6697上的IRC SSL端口。

打开一个IRC客户端,如xchat,hexchat或irssi,并连接到服务器。

在本教程中,我们将使用hexchat。

连接到服务器。

/server -ssl 192.168.1.104 6697

将用户设置为netadmin或operator。

/oper naruse mypassword

测试anope服务。

/msg NickServ HELP

IRC服务器正在运行

InspIRCd和Anope已成功安装和配置。

结论

InspIRCd是以C ++编写的最佳IRC服务器之一。 它提供高性能和稳定性,是可定制的,并有许多现成的模块可用。 Anope提供灵活的IRC服务,易于使用和配置。