帮酷LOGO
0 0 评论
文章标签:IRC  Ubuntu  SET  Setting  Server  lts  

互联网中继聊天(IRC )是自互联网早期起就出现的东西,在本指南中我会向你展示如何使用InspirCD和Atheme设置IRC服务器以获得其他IRC服务。

前提条件

  • An Ubuntu 16.04的x64服务器实例,
  • sudo(或root帐户)用户。
  • (可选)实例的DNS名称,

最小系统需求是700MHz CPU和300MB内存。

更新系统

作为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],其余两个字符可以是字母[A-Z]或数字,
  • 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="admin@irc.example.net">

现在移动到bind address ,此标记用于打开服务,默认情况下你会看到本地主机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 :这是什么操作类型,上面的块应该已经定义了三个类: NetAdminGlobalOpHelperNetAdmin是我们将要使用的,

使用以下内容更改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

 

要退出weechat你可以键入以下命令:


/quit 

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


/server add local localhost

现在我们可以连接到名为'本地'的连接配置文件:

 
/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服务A名称

ATHEME是为有高可扩展性要求的大型IRC网络设计的一组IRC网络服务,它将额外的服务如NickServ (昵称注册)添加到你的。

可以在Ubuntu存储库中找到:


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 ="admin@irc.example.net";

至此,我们需要为我们的服务创建一个上行链路,找到两个uplink代码块并将它们全部注释出来,在uplink{命令之前添加/*,在右大括号的末尾添加*/

它将如下所示:


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

接下来,添加我们自己的上行链路,此上行链路仅在我们的主机主机上运行,并且在端口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 tag并将它更改为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

 


文章标签:Server  SET  Ubuntu  Setting  IRC  lts  

Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语