cs1.6服务器搭建正版盗版通用,顾名思义,不仅支持正版steam的cs1.6客户端加入游戏,也支持非正版的cs1.6客户端是加入游戏。

本篇文章将在linux(centos 7.5)的环境下搭建正盗版通用的cs1.6服务器,原理就是通过插件模块的方式,打通正盗版之间的协议差异。

将会用到rehlds(开源的cs1.6服务端增强版),以及rehlds配套的metamod和amxx的模块插件。

大致方法步骤就是先安装正版的cs1.6服务端,然后在此基础上安装rehlds以及配套的mtamod和amxx模块插件。

环境需求

一台具有独立外网IP的服务器,可以租用阿里云或者腾讯云的,比较稳定,配置要求如下:

  • CPU:2核
  • 内存:4GB
  • 网络:1MB/s(支持10人),5MB/s支持(32人),建议选择2MB/s及以上的
  • 硬盘:10GB以上
  • 系统:linux(centos 7.5)

系统配置

开放防火墙端口

这里为了安全考虑,并没有把防火墙关闭,而是开放cs1.6服务器可能用到的端口号。

1
2
3
4
5
6
7
8
9
10
11
iptables -A INPUT -p udp -m udp --sport 26000:28000 --dport 1025:65355 -j ACCEPT
iptables -A INPUT -p udp -m udp --sport 4380 --dport 1025:65355 -j ACCEPT

firewall-cmd --zone=public --add-port=26000-28000/udp --permanent
firewall-cmd --zone=public --add-port=26000-28000/tcp --permanent
firewall-cmd --zone=public --add-port=4380/udp --permanent
firewall-cmd --zone=public --add-port=4380/tcp --permanent

systemctl status firewalld.service
systemctl stop firewalld.service
systemctl start firewalld.service

安装运行时库

安装i686运行时库,兼容steamcmd和cs1.6服务器执行程序。

1
2
yum install glibc.i686
yum install libstdc++.i686

其他安装问题

如果在此过程中遇到问题,可以参考官方文档:

下载steamcmd

创建csserver文件夹,并下载解压steamcmd执行程序。

1
2
3
4
5
6
mkdir cssever
cd csserver

wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz

tar xvfz steamcmd_linux.tar.gz

如果缺少wget程序,可以先通过yum install wget进行安装。

安装cs1.6服务端

运行steamcmd,登录正版steam账户,并正确输入密码和验证码。然后配置安装cs1.6服务端程序。

1
2
3
4
5
6
7
8
9
10
11
12
13

./steamcmd.sh # 运行steamcmd程序

login wudics # 登录正版steam账户,然后按提示输入密码和验证码完成登录

force_install_dir ./cs1.6/ # 配置cs1.6服务端安装目录

app_set_config 90 mod cstrike # 初始化cs1.6服务端安装脚本
app_update 90 validate # 执行cs1.6服务端下载安装

exit # 安装完成退出steamcmd命令行

cd cs1.6 # 进入cs1.6服务端安装目录

通过上述步骤完成安装之后,cs1.6服务端程序将会安装在csserver/cs1.6目录下

运行cs1.6服务端

1
2
chmod a+x hlds_run hlds_linux hltv      # 为cs1.6服务端程序新增可执行权限
./hlds_run -console -game cstrike +port 27015 +map de_dust2 +maxplayers 10 -pingboots 3 +sys_ticrate 1100 # 运行cs1.6服务端程序

后台运行cs1.6服务端程序

通过上面的方式运行服务端的话,如果关闭了ssl远程管理窗口,那么服务器也会随之终止关闭。我们这时就需要让服务端在后台保持持续运行,这里提供一个方法,就是screen软件,这个软件可以让你的服务端程序保持在后台运行不会因为会话管制终止而关闭。

我们现在先按ctrl+c终止正在运行的服务端,然后分别执行以下指令,安装screen和创建screen会话,在screen会话中运行cs1.6服务端程序,退出screen会话,此时cs1.6服务端就在后台运行了,现在关闭ssl远程管理也不会影响服务端的运行。

1
2
3
yum install screen
screen -S csserver
./hlds_run -console -game cstrike +port 27015 +map de_dust2 +maxplayers 10 -pingboots 3 +sys_ticrate 1100 # 运行cs1.6服务端程序

按下ctrl+A+D键(即,按住ctrl键,然后分别按一下A键,按一下D键),退出screen会话。

steamclient.so无法打开问题

在运行服务器时,我们可能会出现如下错误,虽然目前还是能够正常运行,但是随着后续插件模块安装时,有可能会导致服务器崩溃。

~/.steam/sdk32/steamclient.so: cannot open shared object file: No such file or directory

这里有两种解决办法(推荐先使用方法一)

方法一:建立链接

首先在~/.steam/下创建sdk32文件夹,然后把csserver/cs1.6(或csserver/cs1.6/linux64)下的steamclient.so链接到~/.steam/sdk32/steamclient.so即可。

1
2
3
4
5
mkdir -p ~/.steam/sdk32
ln -s ~/csserver/cs1.6/steamclient.so ~/.steam/sdk32/steamclient.so

# 或者,如果是linux64位的系统,也可以选择,因为这里之前已经安装了glibc.i686和libstdc++.i686,不用这条命令也是可以的
# ln -s ~/csserver/cs1.6/linux64/steamclient.so ~/.steam/sdk32/steamclient.so

方法二:直接拷贝

我们解决的方法也很简单,我们可以看到,在csserver/cs1.6文件夹下,也有文件名叫做steamclient.so的文件,我们只要把它拷贝到~/.steam/sdk32/文件夹下即可。

1
2
3
4
5
cd ~/.steam/
mkdir sdk32

cd ~/csserver/cs1.6/
cp steamclient.so ~/.steam/sdk32/steamclient.so

其他screen操作说明

  • 安装yum install screen
  • 创建会话screen -S name
  • 查看会话screen -ls
  • 进入会话screen -r id或者name
  • 退出会话ctrl+A+D,先按A,再按D
  • 终止会话,在会话窗口输入quit结束会话进程

改造正版服务端,同时支持正盗版

安装rehlds

好了,我们先ctrl+c关闭正在运行的服务器,回到服务器安装目录csserver/cs1.6,然后开始安装rehlds,将原cs1.6服务端执行程序升级改造成增强版。

首先,下载已经编译好的rehlds-bin-3.12.0.780.zip文件(也可以在github上下载源码自行编译),然后解压,并将/bin/linux32/下的所有文件上传到csserver/cs1.6下,并覆盖原有文件。

这里推荐使用windterm来管理linux服务器和上传文件,当然你也可以使用winscp或者其他的。

1
2
3
4
5
6
7
8
value/dlls/director.so
core.so
demoplayer.so
engine_i486.so
filesystem_stdio.so
hlds_linux
hltv
proxy.so

安装metamod-r

同样我们需要下载metamod-bin-1.3.0.131.zip文件,或者编译得到metamod-r程序,下载后解压出来,将addons文件夹上传到csserver/cs1.6/cstrike文件夹下,并在addons/metamod文件夹下,创建空文件plugins.ini,后续会用到。

1
touch ~/csserver/cs1.6/cstrike/addons/metamod/plugins.ini

然后修改cstrike文件夹下的liblist.game文件。

找到gamedll_linux,将路径修改为addons/metamod/metamod_i386.so。

1
gamedll_linux "addons/metamod/metamod_i386.so"

这里可以运行一下服务器测试一下,成功运行服务器后,输入meta version看一下是否成功加载了metamod。

1
2
3
4
meta version
Metamod-r v1.3.0.131, API (5:13)
Metamod-r build: 18:51:02 Jul 11 2022
Metamod-r from: https://github.com/theAsmodai/metamod-r/commit/adc9414

安装amxmodx

这里需要同时下载amxmodx-1.9.0-git5294-base-linux.tar.gz和amxmodx-1.9.0-git5294-cstrike-linux.tar.gz

首先把amxmodx-1.9.0-git5294-base-linux解压得到的addons文件夹上传到cstrike目录下,然后把amxmodx-1.9.0-git5294-cstrike-linux解压得到的addons文件夹也上传到cstrike目录下即可。

安装regamedll

下载regamedll-bin-5.21.0.575.zip解压后,将bin/linux32/cstrike文件夹的内容,上传到服务器的cstrike目录替换原有文件即可。

安装reapi

下载reapi-bin-5.22.0.254.zip解压后,将addons/amxmodx文件夹的内容上传到服务器的cstrike/addons/amxmodx目录。

然后进入cstrike/addons/amxmodx/scripting目录,执行如下命令编译reapi插件。

1
2
3
4
5
cd ~/csserver/cs1.6/cstrike/addons/amxmodx/scripting
chmod 755 amxxpc
chmod 755 amxxpc32.so
chmod 755 compile.sh
./compile.sh

等待编译完成后按q键退出编译日志,将amxmodx/scripting/compiled目录下的reapi_test.amxx文件拷贝到amxmodx/plugins下

1
cp ~/csserver/cs1.6/cstrike/addons/amxmodx/scripting/compiled/reapi_test.amxx ~/csserver/cs1.6/cstrike/addons/amxmodx/plugins/reapi_test.amxx

接着,修改amxmodx/configs/plugins.ini文件,在末尾处另起一行,添加reapi_test.amxx即可。

启动服务器测试一下,分别使用命令meta list和amxx list看看reapi是否加载成功。

安装reunion

下载解压reunion_0.1.0.92d.zip并将解压得到的reunion文件夹上传到服务器的cstrike/addons/目录下,把reunion.cfg上传到服务器的cstrike目录下。

然后修改cstrike/addons/metamod/plugins.ini文件,在末尾另起一行,添加linux addons/reunion/reunion_mm_i386.so即可。

启动服务器测试一下,分别测试一下正版和盗版的客户端是否能同时加入游戏。

安装VoiceTranscoder

下载解压VoiceTranscoder_2017RC5.zip,将VoiceTranscoder文件夹上传到cstrike/addons/目录下。

然后修改cstrike/addons/metamod/plugins.ini文件,在末尾另起一行,添加linux addons/VoiceTranscoder/VoiceTranscoder.so即可。

启动服务器测试一下,用两台电脑打开正版和盗版的客户端加入游戏,按K键说话,测试一下正版和盗版客户端是否正常使用语音。

安装revoice

如果安装了VoiceTranscoder,就不需要安装revoice了,两者功能一样,这里个人推荐使用VoiceTranscoder,更稳定。

首先在cstrike/addons目录下创建revoice文件夹,然后下载revoice_0.1.0.34.zip并将解压得到的revoice_mm_i386.so和revoice.cfg文件上传到revoice目录下。

然后修改cstrike/addons/metamod/plugins.ini文件,在末尾另起一行,添加linux addons/revoice/reunion_mm_i386.so即可。

启动服务器测试一下,用两台电脑打开正版和盗版的客户端加入游戏,按K键说话,测试一下正版和盗版客户端是否正常使用语音。

安装其他功能型插件

安装reaimdetector

此插件能够一定程度上检测出使用自动瞄准作弊器的客户端。

下载reaimdetector_0.2.2.rar解压后将linux/addons/amxmodx目录下的内容上传到服务器对应的目录。

然后进入cstrike/addons/amxmodx/scripting目录,执行如下命令编译reaimdetector插件。

1
./compile.sh

然后将编译好的amxmodx/scripting/compiled/reaimdetector.amxx插件拷贝到amxmodx/plugins目录下

1
cp ~/csserver/cs1.6/cstrike/addons/amxmodx/scripting/compiled/reaimdetector.amxx ~/csserver/cs1.6/cstrike/addons/amxmodx/plugins/reaimdetector.amxx

接着,修改amxmodx/configs/plugins.ini文件,在末尾处另起一行,添加reaimdetector.amxx即可。

启动服务器测试一下,分别使用命令meta list和amxx list看看reaimdetector是否加载成功。

安装whblocker

此插件能够一定程度上检测出使用透视作弊的客户端。

首先在cstrike/addons目录下创建whblocker文件夹,然后下载whblocker_1_5_697.zip并将解压得到的linux文件夹下的文件全部上传到whblocker目录下。

然后修改cstrike/addons/metamod/plugins.ini文件,在末尾另起一行,添加linux addons/whblocker/whblocker_mm_i386.so即可。

安装rechecker

此插件能够为其他插件提供文件检测的功能,允许您通过 md5 哈希检查客户端文件,例如通过调用该插件接口实现检测游戏目录中的作弊库、检测游戏所需的丢失文件、检测禁止的玩家模型,或创建允许的白名单等等。

下载rechecker_2_7.zip文件,解压后把rechecker文件夹上传到cstrike/addons目录下。

然后修改cstrike/addons/metamod/plugins.ini文件,在末尾另起一行,添加linux addons/rechecker/rechecker_mm_i386.so即可。

安装reauthcheck

此插件能够对玩家客户端的有效性授权进行一系列检查,从而加强对服务器的保护,免受第三方程序(如虚假机器人)的攻击。

下载reauthcheck_0.1.6.rar文件,解压后把reauthcheck文件夹上传到cstrike/addons目录下。

然后修改cstrike/addons/metamod/plugins.ini文件,在末尾另起一行,添加linux addons/reauthcheck/reauthcheck_mm_i386.so即可。

安装resemiclip

此插件可以实现同队伍之间的角色能够穿越移动,不受队友卡位置,但仍然可以跳跃到队友的头顶上。

下载resemiclip_2_3_9.rar文件,解压后把resemiclip文件夹上传到cstrike/addons目录下。

然后修改cstrike/addons/metamod/plugins.ini文件,在末尾另起一行,添加linux addons/resemiclip/resemiclip_mm_i386.so即可。

安装SafeNameAndChat

此插件能够检测玩家名称和文字聊天内容中的特殊符号和恶意代码,提高服务器的安全性。

下载SafeNameAndChat-1.2_Beta_3a.zip文件,解压后把SafeNameAndChat文件夹上传到cstrike/addons目录下。

然后修改cstrike/addons/metamod/plugins.ini文件,在末尾另起一行,添加linux addons/SafeNameAndChat/SafeNameAndChat.so即可。

资源下载

本文所使用的插件模块

下载rehlds插件模块v20230310

已支持正盗版的服务器

通过本文所搭建的rehlds服务端 ( 555 MB )
ReHLDS Linux Server ( 27.08.2022 ) ( 421 MB )

参考文献

用于 ReHLDS 的模块 - Dev-CS.ru
ReHLDS tutorial - آموزش راه اندازی سرور cs 1.6 با Linux
官方steamcmd控制台客户端使用说明
rehlds.ru已整合的服务端下载