求生之路2服务器搭建(Linux-Debian)
KOFXIII
编辑于 2026年04月26日 23:53
收录于文集
共3篇

1 前言&目录

1.1 前言

        l4d2是发行于2009年的老游戏,搭建l4d2服务器本身没有难度,难点在于学习linux的基础操作,学会搭建纯净服务器只是入门,后续还要学习调整服务器各项参数、添加插件等。本文内容较多,可用浏览器的搜索功能(快捷键 Ctrl+F)进行查找

        对于新手的建议: 对自己充满信心,对教程充满信任。游戏发行十几年了网上教程一大堆,你在百度、B站、CSDN等网站能搜到的热门教程都没啥大问题,选一篇你看的顺眼的就行  完全依照教程步骤进行,不要漏看任何一句话,99%的失败原因都是没有按教程操作  同时参考多个教程进行搭建是大忌。如同你在A\B\C三家买了零件组装电脑,出了问题后你自己没有排查故障的能力,A\B\C三家也不乐意帮你检查其他家提供的零件是否故障

        本文使用debian-11系统(也适用于debian-12 和 ubuntu系统),另外还有在CentOS 7系统下搭建l4d2服务器的专栏

1.2 目录

  • 2.x章节 ==> 搭建服务器前的准备工作

  • 3.x章节 ==> 搭建服务器的详细步骤(含插件)

  • 4.x章节 ==> 服务器的日常使用方法

  • 4.3章节 ==> MetaMOD和SourceMOD插件的用法

  • 4.4章节 ==> 服务器更换地图关卡或游戏模式

  • 4.5章节 ==> 服务器开启作弊

  • 5.x章节 ==> 服务器设置60tick/100tick

  • 6.x章节 ==> 服务器保持后台运行的方法(screen)

  • 7.1章节 ==> 服务器常见故障的处理办法

  • 7.2章节 ==> server.cfg的补充指令

  • 7.3章节 ==> MetaMOD和SourceMOD的故障处理

  • 7.4章节 ==> lerp相关说明

  • 7.5章节 ==> 对net_graph网络参数的说明

  • 7.6章节 ==> 服务器端插件获取渠道

  • 7.7章节 ==> 服务器端插件的安装方法

  • 7.8章节 ==> 添加第三方地图到服务器

  • 7.9章节 ==> 查看地图的关卡名

  • 7.10章节 ==> 更新l4d2服务器

  • 7.11章节 ==> WinSCP和Putty使用方法

  • 7.12章节 ==> 云服务器的安全组设置

  • 7.13章节 ==> Debian的防火墙相关命令

  • 7.14章节 ==> Debian的常用命令

  • 7.15章节 ==> Debian系统大版本升级

  • 8.x章节 ==> 服务器浏览窗口的使用方法


2 准备工作

2.1 准备debian系统

带公网IP的电脑或云服务器,安装debian-11 x64版本的系统(也适用于debian-12 和 ubuntu系统)

注:

没有公网IP,则搭建的服务器只能在局域网内使用,解决办法是内网穿透​

服务器硬盘可用空间最好不低于15G(l4d2服务器文件约9.5G,其他空间预留给游戏更新包、插件、Mod、第三方地图)

建议安装无图形化界面的debian系统以节省资源开销,提高服务器性能

有些云服务器提供的系统镜像是旧版本debian,例如我使用的百度云轻量应用服务器只提供debian-10.8版本系统镜像,可参考本文7.15章节升级到最新版,也可参考我的视频教程第2节​

2.2 准备插件

以下是常用的3个插件,均下载linux版本,注意分辨 “l4d” 和 “l4d2”

SourceMOD 下载地址:https://www.sourcemod.net/downloads.php?branch=stable

MetaMOD 下载地址:http://metamodsource.net/downloads.php?branch=stable

Tickrate Enabler 下载地址:https://github.com/accelerator74/Tickrate-Enabler/releases/tag/build

注:

SourceMOD和MetaMOD是大多数插件运行的基础,强烈建议安装

 Tickrate Enabler 用于解锁服务器最高30tick的限制,不需要可不装

SourceMOD下载页面

MetaMOD下载页面

Tickrate-Enabler下载页面

2.3 下载安装WinSCP和Putty软件

WinSCP用途: windows与debian之间传输插件、地图、Mod等文件  如果不喜欢使用linux命令的话,可以在WinSCP里进行新建文件夹、解压文件、编辑文档等操作

Putty用途:通过ssh连接debian系统

WinSCP下载页面:https://winscp.net/eng/docs/lang:chs

WinSCP中文语言包下载页面:https://winscp.net/eng/translations.php

Putty下载页面(仅下载putty.exe即可):https://www.putty.be/latest.html

注:

WinSCP和Putty使用方法在本文7.11章节。同类型的软件组合还有Xshell和Xftp

另外也推荐使用FinalShell来代替WinSCP和Putty,FinalShell免费版的功能就够用了

FinalShell下载页面:http://www.hostbuf.com/t/988.html

FinalShell相比其他终端的优点是能方便的监控CPU、内存、磁盘和网络等资源的使用情况

也可参考我的另一专栏:ssh终端推荐​


3 搭建l4d2服务器

3.1 更新apt源

使用Putty连接到debian,以root用户登陆,首先更新apt源列表,命令:apt update

更新apt源列表 并 升级现有的软件

注:

root用户本身具有管理员权限,因此以root用户执行命令时不需要加sudo,当然,将命令写成sudo apt update也没问题

对于国内的云服务器,例如百度云轻量应用服务器提供的系统镜像的apt源默认是百度镜像源,这样执行apt upgrade升级命令时的下载速度会很快。如果是从debian官网下载的系统镜像,它的apt源一般在国外,因此下载速度较慢,请自行搜索更换apt源的方法,也可以参考本文7.15.2-7.15.4章节的方法更换为清华软件源

3.2 安装SteamCMD所需的依赖库

安装命令:sudo apt install lib32gcc-s1

安装SteamCMD所需的依赖

3.3 安装vim文本编辑器

安装vim命令:sudo apt install vim -y

注:

debian自带的vi和nano也可用于编辑文本,我习惯用vim

用WinSCP连接debian系统后,直接双击文件调用自带编辑器编辑文本更方便

3.4 新建一个普通用户

新建一个普通权限的用户aaa,命令:adduser aaa

然后输入两次密码,会提示填Full Name等信息,直接按回车键略过,最后输入y确认

注:

有些人觉得新建普通用户没啥用就跳过此步骤,全程用root用户来操作,表面上也能正常运行服务器,实则暗藏了很多隐患

新建一个普通用户aaa

3.5 为用户aaa添加权限

作为普通用户,aaa有时需要执行一些需较高权限的命令,切换root用户又麻烦,所以执行以下操作后,在aaa的命令前加sudo即可暂时拥有管理员权限

 在root用户下安装sudo,命令:apt install sudo

给sudoers文件添加“写”权限,命令:chmod u+w /etc/sudoers

使用vim编辑sudoers文件,命令:vim /etc/sudoers

先按i键进入编辑模式,将光标移到要改写的位置输入内容,写完后按键盘esc键退出编辑模式,输入:wq执行保存和退出操作(w代表保存,q代表退出)

在sudoers里添加用户aaa

vim编辑器的 保存并退出 命令

  撤销sudoers文件的“写”权限,命令:chmod u-w /etc/sudoers

注:

其实root用户可以直接编辑sudoers文件,最后用:wq! 强制保存并退出即可,无需修改sudoers的写权限,但考虑到linux系统版本众多可能有不适用的情况,所以两种方式任选一种即可

3.6 安装wget

安装wget命令:sudo apt install wget -y

注:

wget相当于windows系统下的迅雷,就是一个下载工具,接下来要用wget下载SteamCMD安装包

3.7 下载并安装SteamCMD

从用户root切换到用户aaa,命令:su aaa

在/home/aaa路径下新建Steam文件夹,SteamCMD相关的东西都放这里,命令:mkdir /home/aaa/Steam

注:SteamCMD相当于windows系统下的steam客户端,只不过它没有图形化界面,只能通过输入命令来执行各种操作

打开Steam文件夹,命令:cd /home/aaa/Steam

下载SteamCMD安装包,命令:sudo wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz

此时可能需要输入用户aaa的密码

⑤ 解压并删除SteamCMD安装包,命令:tar xvf steamcmd_linux.tar.gz && rm steamcmd_linux.tar.gz 

解压并删除压缩包

保持当前路径/home/aaa/Steam,继续安装SteamCMD,命令:./steamcmd.sh

安装完成后,命令行会变成以Steam>开头 

安装SteamCMD

注:

接下来3.8章节的操作均是在Steam>后输入命令

3.8 下载并校验l4d2服务器文件

指定服务器端的l4d2的安装目录,命令:force_install_dir /home/aaa/Steam/l4d2-ds

如果输入过程中写错字,要删除字母时出现 ^H^H^H 的情况,需要按住 Ctrl Shift 键再删除

匿名登录steam,命令:login anonymous

此步骤如出现报错请见下方 “注③”

下载并校验l4d2,命令:app_update 222860 validate

要下载的游戏文件大小约9.2G

④ 下载和校验完成后退出Steam>,命令:quit 或 exit 

下载并校验l4d2服务器文件

下载并校验完成

 注:

 如果下载时报错,错误代码0x2,可多次重试下载或改天再试,可能是网络问题

如果下载时报错:Error! app '222860' state is 0x202 after update job.,错误代码0x202,原因是安装l4d2的磁盘分区可用空间不足

③ 大约从2024年11月起,使用匿名账户下载L4D2服务器时会报错:ERROR! Failed to install app '222860' (Invalid platform) 

解决办法:使用个人steam账号(确认此账号已购买L4D2)登录SteamCMD后再下载,原来的 login anonymous 替换为 login abc 123 ,其中 abc 替换为自己的steam账户名,将 123 替换为steam密码。如果有绑定steam手机令牌,接下来会显示 Two-factor code: ,这里填上验证码即可登录,登录后再输入命令 app_update 222860 validate 继续下载安装L4D2服务器

(根据我搭建CS2服务器的经验,使用个人账户下载游戏服务器时,有可能将已订阅的创意工坊文件一起下载,浪费硬盘空间,如果发现你下载的L4D2服务器文件远大于10G,可能就是这个原因,不过我简单测试了一下,暂时未出现此问题)

3.9 安装SourceMOD和MetaMOD

按本文2.2章节提供的网址下载SourceMOD和MetaMOD的linux版插件,然后解压

以安装SourceMOD为例,解压后得到addons和cfg两个文件夹,将这两个文件夹里的所有东西通过WinSCP分别传输到debian系统/home/aaa/Steam/l4d2-ds/left4dead2/路径下的addons和cfg中即可

同样的操作也适用于安装MetaMOD

cfg文件夹里的sourcemod文件夹

注:

SourceMOD和MetaMOD有一些文件是相同名称的,如果传输过程中有提示文件重复,选择全部覆盖(一般情况下,重复的文件夹是默认自动合并其中的内容,而重复的文件是默认自动用新文件替换旧文件)

3.10 设置插件的管理员权限

需要修改插件的配置文件,命令:vim /home/aaa/Steam/l4d2-ds/left4dead2/addons/sourcemod/configs/admins_simple.ini

在文档末端另起一行,写入:

"STEAM_x:x:xxxxxx"  "99:z"

保存并退出,对应steamID的玩家就有管理员权限了

为玩家添加插件的管理员权限

注:

这里的STEAM_x:x:xxxxxx要替换为自己的steamID

如果还要添加更多的管理员,再另起一行按同样格式进行书写

99:z指的是权限大小,一般不需要调整权限,照抄就行

有两种获取steamID的方法

方法一:打开l4d2游戏进入任意地图关卡,控制台输入status就会显示玩家的steamID

方法二:在浏览器中登录steam网站,打开个人资料页面,将地址栏的网址复制到查询网站的搜索框即可搜索出steamID,SteamID查询网址:https://steamid.io/lookup/ 

查看steamID

3.11 配置server.cfg

server.cfg文件里包含服务器的各种设置选项

将当前目录切换到cfg文件夹,命令:cd /home/aaa/Steam/l4d2-ds/left4dead2/cfg

新建server.cfg文件并编辑它,命令:vim server.cfg

写入以下内容(//代表注释,可以不写)

代码块
JavaScript
自动换行
复制代码
rcon_password "" //在引号内填写远程管理密码,引号内不填即为不设密码。使用rcon的两个必要条件:① 在服务器端开放游戏端口的tcp协议 ② 在l4d2服务器启动项里添加一条 +ip 0.0.0.0
sv_password "" //在引号内填写服务器密码,引号内不填即为不设密码
sv_allow_lobby_connect_only 0 //不允许从大厅选择组服务器来连接
sv_tags hidden //在服务器浏览列表的中隐藏(防止别人恶意攻击服务器)
//coop合作;versus对抗;survival生还者;realism写实;scavenge清道夫
sv_gametypes "coop,versus,survival" //设定服务器可用的游戏模式
sm_cvar mp_gamemode coop //设定当前游戏模式为合作战役
z_difficulty Normal //游戏难度:easy简单;normal普通;hard高级;impossible专家
sv_region 4 //设定服务器地区为亚洲
sv_lan 0 //非局域网
sv_consistency 0 //关闭模型(MOD)冲突
motd_enabled 1 //玩家进入服务器自动打开[今日消息]界面
sv_cheats 0 //关闭作弊
复制成功

注:

以上是基础的开服配置指令,更多指令在本文7.2章节

任何涉及 sm_cvar 的命令,例如 mp_gamemode,其生效的前提是l4d2服务器已安装MetaMOD和SourceMOD插件。其他更换游戏模式的方法在考本文4.4章节

 暂不清楚 sv_password 的用法。如果是在隐藏服务器前提下设置密码,会导致所有玩家连接不上l4d2服务器;如果是在公开服务器前提下设置密码,任何玩家不用密码也能连接到l4d2服务器

可从V社的wiki查看l4d2可用的游戏模式,网址:https://developer.valvesoftware.com/wiki/L4D2_Gamemodes.txt_File

3.12 两种方式启动l4d2服务器

3.12.1 方式一(不推荐)

使用srcds_run配合启动项来启动l4d2服务器,

打开srcds_run文件所在目录,命令:cd /home/aaa/Steam/l4d2-ds

启动l4d2服务器,命令:

./srcds_run -game left4dead2 -insecure +hostport 27015 -condebug +map c1m2_streets +exec server.cfg -nomaster

稍等片刻,看到Connection to Steam servers successful.   VAC secure mode disabled.,代表l4d2服务器启动完成

3.12.2 方式二(推荐)

新建一个启动脚本,命令:vim /home/aaa/Steam/l4d2-ds/start.sh

写入以下内容后保存并退出:

/home/aaa/Steam/l4d2-ds/srcds_run -game left4dead2 -insecure +hostport 27015 -condebug +map c1m2_streets +exec server.cfg -nomaster

给start.sh赋予可执行权限,命令:chmod +x start.sh

运行start.sh启动l4d2服务器,命令:./start.sh

注:

 服务器启动项说明

代码块
JavaScript
自动换行
复制代码
-game left4dead2 //指定游戏为求生之路2
-insecure //禁用 VAC(-secure是启用VAC)
+hostport 27015 //服务器端口默认是27015,可更改端口号
+condebug //在left4dead2文件夹下生成console.log的记录文件
+exec server.cfg //服务器启动时自动执行server.cfg
-nomaster //隐匿服务器的公网IP(防止别人恶意攻击服务器)
+map c1m2_streets //设置默认打开的地图,这里c1m2_streets是官方地图关卡的名称
-tickrate 100 //设置服务器为100tick
复制成功

    其他启动项说明

代码块
JavaScript
自动换行
复制代码
-port 27015 //与 +hostport 功能相同,按自己喜好来选择用哪个启动项指定端口
+mp_gamemode coop //指定游戏模式为:战役模式
+ip 0.0.0.0 //具体作用不明确,但使用rcon的前提是要有这个启动项
+ip x.x.x.x //与 +ip 0.0.0.0 功能相同,将x.x.x.x替换为自己服务器的ip
复制成功

每个启动项之间只能有一个空格,连续的空格会使后面的启动项失效

 需要检查debian的防火墙和云服务器的安全组是否开放了27015端口的udp协议,参考本文7.12和7.13章节

服务器常见故障处理办法在本文7.1章节

服务器端更新l4d2的方法在本文7.10章节

官方战役各地图的名称,可查看V社的wiki,网址:

https://developer.valvesoftware.com/wiki/Zh/Left_4_Dead_2

3.13 关闭l4d2服务器

在服务器端输入命令:quit 或 exit

3.14 自定义今日消息内容

玩家连接服务器进入地图后会显示一个今日消息的显示窗口(按H键打开),此内容保存在服务器端的motd.txt中,文件所在路径为:/home/aaa/Steam/l4d2-ds/left4dead2

如需自定义内容,建议在同路径下新建一个motd1.txt文档,将要展示的内容写在里面,同时在服务器端的server.cfg中添加一条指令:motdfile "motd1.txt"

注:

今日消息的内容有字数限制,超出限制的部分不显示

 如文本显示乱码,需要将motd1.txt以utf-8编码进行保存

今日消息不仅能显示文本,也能显示图片和网页,B站其他UP主有视频教学


4 日常使用

4.1 启动服务器

启动方法在本文3.12章节

4.2 连接服务器 

玩家打开l4d2游戏,打开控制台,输入服务器ip地址和端口号,指令:connect xx.xx.xx.xx:27015

注:将xx.xx.xx.xx替换为服务器的公网IP,同时将27015替换为启动项里指定的端口号

4.3 MetaMOD和SourceMOD插件的用法

有插件管理员权限的玩家可以按键盘的【Y】键打开游戏内聊天框,输入命令 !admin 或 /admin 打开插件的功能菜单。也可以绑定键盘快捷键,例如绑定到键盘的【N】键,命令:bind n "say !admin"

注:

如果输入!admin没有出现菜单,可能的原因有

!admin命令要使用英文感叹号

插件没安装好,MetaMOD和SourceMOD相关内容在本文7.3章节

没有设置插件管理员权限,按本文3.10章节的步骤进行配置

4.4 更换地图关卡或游戏模式

4.4.1 方法一

更换地图关卡的命令格式:map 地图关卡名

示例:map c1m2_streets

更换游戏模式的命令格式:map 地图关卡名 游戏模式

示例:map c1m2_streets survival

以上命令需要在l4d2服务器端输入,运行命令后服务器会与所有玩家断开连接,需要重连

注:

 网上可查到官方地图的名称,查询第三方地图关卡名称的方法在本文7.9章节

切换游戏模式时要注意所选地图是否支持此模式,例如官方图c1m3_mall不支持survival模式

4.4.2 方法二

更换地图关卡的命令格式:rcon map 地图关卡名

示例:rcon map c1m2_streets

更换游戏模式的命令格式:rcon map 地图关卡名 游戏模式

示例:rcon map c1m2_streets survival

以上命令需要在游戏内控制台输入,运行命令后服务器会与所有玩家断开连接,需要重连

注:

使用rcon命令前需要先在控制台输入rcon密码,rcon的具体用法在本文7.1.4章节

4.4.3 方法三

更换地图关卡的命令格式:changelevel 地图关卡名

示例:changelevel c1m2_streets

此命令需要在l4d2服务器端输入,运行命令后玩家自动进入新地图关卡,无需重连

注:

此命令仅用于更换地图关卡,不能更换游戏模式

4.4.4 方法四

有SM插件管理员权限的玩家可以按Y键打开游戏内聊天框,输入!admin打开菜单更换地图关卡和游戏模式。如果有安装切换游戏模式的插件,也可以在游戏聊天框输入命令(一般是!mode)切换游戏模式

4.4.5 方法五

参考本文3.12章节,在启动项中分别用 +map+mp_gamemode 指定地图关卡和游戏模式

4.4.6 方法六

参考本文3.11章节,在server.cfg中,使用 sm_cvar mp_gamemode 指定游戏模式

注:

此方法可能存在bug,例如survival模式下的c1m2关卡,正常情况下玩家应在武器商店开始关卡,但异常情况下会在安全屋内开始关卡,解决方法是通过SM插件来投票重新开始此关卡,具体操作是【!admin】-->【4.其他功能】-->【2.更改模式】-->【1.重启章节】-->【1.确认】

4.5 开启作弊

4.5.1 方法一

启动l4d2服务器后,在l4d2服务器端输入命令:sv_cheats 1

4.5.2 方法二

有插件管理员权限的玩家在游戏内控制台使用指令:sm_cvar sv_cheats 1

4.5.2 方法三

知道rcon密码的玩家在游戏内控制台使用命令:rcon sv_cheats 1

注:

通过观察三种方法的命令格式可以发现规律,在l4d2服务器端通常是直接输入控制台命令,而在游戏端的控制台输入则需要在命令前添加 sm_cvar 或 rcon

在服务器开启作弊后(sv_cheats=1)玩家是无法解锁成就的。如果确实需要降低游戏难度来解锁成就,一些服务器插件能代替实现作弊指令的效果,或者借助 sm_cvar 也可以在不开启作弊的前提下使用某些作弊指令,例如无限子弹命令:sm_cvar sv_infinite_ammo 1,开启无敌命令:sm_cvar god 1


5 服务器设置60tick / 100tick

5.1 服务器端需要做的配置

5.1.1 安装Tickrate Enabler

按本文2.2章节下载 linux版Tickrate Enabler压缩包,然后解压得到一个addons文件夹

将addons文件夹内所有文件通过WinSCP传输到debian路径/home/aaa/Steam/l4d2-ds/left4dead2/addons文件夹内

5.1.2 修改server.cfg

打开debian的路径/home/aaa/Steam/l4d2-ds/left4dead2/cfg/,找到server.cfg

如果是设置60tick,则在server.cfg里新增以下指令:

代码块
JavaScript
自动换行
复制代码
sm_cvar net_splitpacket_maxrate 30000
sm_cvar nb_update_frequency 0.024
sm_cvar tick_door_speed 1.3
sm_cvar fps_max 0
sm_cvar sv_minrate 60000
sm_cvar sv_maxrate 60000
sm_cvar sv_mincmdrate 60
sm_cvar sv_maxcmdrate 60
sm_cvar sv_minupdaterate 60
sm_cvar sv_maxupdaterate 60
sm_cvar sv_client_min_interp_ratio -1
sm_cvar sv_client_max_interp_ratio 2
复制成功

如果是设置100tick,则在server.cfg里新增以下指令:

代码块
JavaScript
自动换行
复制代码
sm_cvar net_splitpacket_maxrate 50000
sm_cvar nb_update_frequency 0.024
sm_cvar tick_door_speed 1.3
sm_cvar fps_max 0
sm_cvar sv_minrate 100000
sm_cvar sv_maxrate 100000
sm_cvar sv_mincmdrate 100
sm_cvar sv_maxcmdrate 100
sm_cvar sv_minupdaterate 100
sm_cvar sv_maxupdaterate 100
sm_cvar sv_client_min_interp_ratio -1
sm_cvar sv_client_max_interp_ratio 2
复制成功

5.1.3 添加启动项

参照本文3.12章节,在启动项里添加一项:-tickrate 60-tickrate 100

5.2 玩家的电脑需要做的配置

5.2.1 新建autoexec.cfg

玩家打开自己的l4d2游戏安装路径:\Steam\steamapps\common\Left 4 Dead 2\left4dead2\cfg,在cfg文件夹中新建一个autoexec.cfg文件,写入以下命令:

代码块
JavaScript
自动换行
复制代码
rate 30000
cl_cmdrate 100
cl_updaterate 100
复制成功

5.2.2 设置客户端的lerp值

在autoexec.cfg中继续添加以下两条指令:

代码块
JavaScript
自动换行
复制代码
cl_interp_ratio 0
cl_interp 0
复制成功

注:

客户端较低的lerp值配合服务器端的100tick可以有效降低游戏延迟,关于lerp的说明在本文7.4章节


6 保持服务器后台运行

此部分内容在我的另一篇专栏:screen 软件介绍和用法​


7 补充说明

7.1 服务器常见故障的处理方法

7.1.1 无法启动l4d2服务器或l4d2服务器反复自动重启

 可能是Tickrate Enabler版本过旧造成的(2021年l4d2有一次大更新),按本文2.2章节提供的网址安装的最新版本Tickrate Enabler插件即可解决

 正常情况下l4d2服务器启动成功,最后一句是:Connection to Steam servers successful.   VAC secure mode disabled.,某次启动l4d2服务器后的最后一句变成:Master server communicatiion disabled.,向上翻看启动日志,看到一个提示(见下图),我误以为是缺少了什么文件导致的启动失败,在网上找了半天也没个解决办法,后来又过了一天再次启动l4d2服务器就恢复正常了,因此我猜测是l4d2服务器与steam之间的网络连接故障造成的启动失败

l4d2启动失败,提示只能在局域网使用

7.1.2 玩家无法连接到l4d2服务器

检查connect 公网ip:端口号是否写错,是否使用的是默认27015端口

是否在l4d2服务器端的server.cfg里设置了服务器连接密码,不设密码再试试

检查debian的防火墙是否有开启udp协议的端口,或者云服务器控制台的安全组有没有开放相应的udp协议的端口

特别说明:

linux的防火墙和云服务器的安全组是两个不同的东西,都要开放相应的端口。如果linux的防火墙是关闭状态或linux系统未安装防火墙,只开放安全组也是可以的。另外如果云服务器还安装了宝塔面板之类的工具,也要检查一下它自带的防火墙功能

如果玩的是第三方地图,玩家的addons文件夹里没有对应的地图文件,且地图版本号要与服务器端的地图版本号一致

⑤ 注意本文3.12章节,每个启动项之间只能有一个空格,连续的空格会使后面的启动项失效,导致服务器某些功能缺失甚至服务器启动失败

尝试更新一下l4d2服务器(保证游戏端和服务器端都是官方最新版本)

暂不清楚盗版l4d2游戏端是否能连接正版l4d2服务器。正版l4d2经常打折,史低4.2元

7.1.3 无法进入地图的下一章节

可能是第三方插件造成的,可以将addons文件夹重命名为addon,这样所有插件都会失效,此时再运行l4d2服务器,若能恢复正常,则需要挨个排查已安装的插件。

若仍不能进入地图的下一章节,使用sv_cheats 0关闭作弊再试

7.1.4 RCON无效

通过百度百科搜索RCON可以了解其功能,使用前需要在l4d2服务器的server.cfg中设置rcon密码。例如将rcon密码设置为1234,即:rcon_password "1234"

知道rcon密码的玩家可以在l4d2游戏控制台输入:rcon_password "1234",然后就可以通过控制台输入命令来远程控制l4d2服务器。例如打开作弊,即:rcon sv_cheats 1

如果输入rcon命令后控制台提示:Bad RCON password,可能是没有预先在控制台输入rcon密码 或 输入的rcon密码不正确

如果输入rcon命令后控制台提示:Unable to connect to remote server (ip:27015),则需要在debian的防火墙或云服务器的安全组里开放27015端口的tcp协议(如果l4d2服务器使用的不是27015端口,则开放自定义的端口的tcp协议);另外启动l4d2服务器时要有 +ip 启动项,详情请看本文3.12章节

如果输入rcon命令后控制台提示:Lost RCON connection, please retry command (UNKNOWN ERROR),可能是网络原因,多试几次

7.2 server.cfg的补充指令

代码块
JavaScript
自动换行
复制代码
sm_cvar sv_forcepreload 1 //强制所有客户端预加载
sm_cvar sv_client_predict 1 //强制所有客户端进行预测

sm_cvar survivor_burn_factor_easy 0 //关闭简单难度的火焰伤害
sm_cvar survivor_burn_factor_normal 0 //关闭普通难度的火焰伤害
sm_cvar survivor_burn_factor_hard 0 //关闭高级难度的火焰伤害
sm_cvar survivor_burn_factor_expert 0 //关闭专家难度的火焰伤害

sm_cvar survivor_allow_crawling 1 //倒地后可以移动(默认不可移动)
sm_cvar survivor_crawl_speed 100 //倒地后的移动速度为100
sm_cvar survivor_limp_health 25 //设置血量低于25后为减速状态(默认40)
sm_cvar survivor_revive_duration 2 //救起队友需要2秒(默认5秒)
sm_cvar first_aid_kit_use_duration 2 //使用急救包需要2秒(默认5秒)

sm_cvar ammo_smg_max 900 //冲锋枪备弹量(默认650)
sm_cvar ammo_assaultrifle_max 900 //步枪备弹量(默认360)
sm_cvar ammo_shotgun_max 500 //单喷备弹量(默认72)
sm_cvar ammo_autoshotgun_max 500 //连喷备弹量(默认90)
sm_cvar ammo_huntingRifle_max 500 //1代狙备弹量(默认150)
sm_cvar ammo_sniperrifle_max 500 //2代狙备弹量(默认180)
sm_cvar ammo_m60_max 900 //M60备弹量(默认0)
sm_cvar ammo_grenadelauncher_max 100 //榴弹发射器备弹量(默认30)

sm_cvar rescue_min_dead_time 10 //玩家死亡10秒后复活在任意房间(默认60s)
sm_cvar director_afk_timeout 60 //设置玩家60s无操作自动闲置(默认45秒)
sm_cvar sb_all_bot_game 1 // 防止人数不足而自动关闭
sm_cvar sb_melee_approach_victim 1 //启用bot使用近战武器(默认0不启用)
sm_cvar sb_max_team_melee_weapon 4 //设置能使用近战武器的bot数量(默认0)
sm_cvar sb_temp_health_think_factor 0.4 //设置血量低于40后bot使用医疗包(默认0.5)
sm_cvar allow_all_bot_survivor_team 1 //所有玩家死亡后bot继续游戏(默认0)
复制成功

注:

参考V社的wiki,网址:https://developer.valvesoftware.com/wiki/List_of_L4D2_Cvars

如果server.cfg里添加了上述指令,在启动l4d2服务器时会提示一些Unknown command "sm_cvar",这个可以忽略。如果删除指令前的sm_cvar会导致指令失效,因为其中大部分指令生效的前提是sv_cheats 1

7.3 MetaMOD和SourceMOD的故障处理

7.3.1 MetaMOD

MetaMOD是SourceMOD功能实现的基础,所以MetaMOD没有正常运行时,SourceMOD和其他大多数插件都会失效

当MetaMOD故障时,可以打开/addons/metamod/bin目录,找到metamod-fatal.log,里面会显示故障原因

故障示例:

MetaMOD故障示例

因为MetaMOD无故障时不会生成此文件,这里拿csgo服务器里的MetaMOD故障日志做示范

很明显是找不到libstdc++.so.6导致的故障,接下来以它为关键词在网上搜索解决方法即可

如果MetaMOD能正常运行,在启动l4d2服务器后可查看MetaMOD的菜单,命令:meta

查看MetaMOD下的所有已安装插件,命令:meta list

查看MetaMOD的版本信息,命令:meta version

MetaMOD菜单

7.3.2 SourceMOD

大多数插件都是安装在SourceMOD下的,如果插件出现故障,可以打开/addons/sourcemod/logs目录,查看名称含有errors的log文件,里面会显示故障原因

故障示例:

SourceMOD故障示例

通过错误日志可以判断是nextmap.smx插件与l4d2游戏不兼容,因为这个插件是安装SourceMOD时自带的,是为起源引擎相关游戏编写的通用插件,出现不兼容情况也可以理解,用l4d2专用的换图插件代替即可,当然也可以不作任何处理,忽略此故障

如果SourceMOD能正常运行,在启动l4d2服务器后可查看SourceMOD的菜单,命令:sm

查看SourceMOD下的所有已安装插件,命令:sm plugins list

查看SourceMOD的版本号,命令:sm version

SourceMOD菜单

7.4 客户端修改lerp

客户端一般指的是玩家所用的windows电脑,以修改50 lerp为例,在控制台输入以下两条指令(或者将指令添加到autoexec.cfg中)

代码块
JavaScript
自动换行
复制代码
cl_interp_ratio 1;
cl_interp 0.05;
复制成功

注:

cl_interp的默认值是0.1(即100 lerp),最大值0.5(即500 lerp) 最小值0(即0 lerp),数值越大,HitBox和贴图的偏离度就越大

cl_interp_ratio的默认值是2,最低为0

想要0~10 lerp的把此值设为0,其他情况下把值设成1

多数玩家的lerp值设为0或50,这个依自己实际游戏体验来设置;据说lerp值不合适会导致僵尸卡顿、瞬移(B站有视频详解lerp和rate这些参数,可以去搜索看看)

7.5 验证lerp和100tick是否设置成功

玩家在l4d2游戏中打开网络参数信息,控制台指令:net_graph 1

如果这些参数信息影响视线,可以使用以下指令调整其位置:

net_graphpos 3 //此参数控制其在水平方向的位置(1偏右、2居中、3偏左)

net_graphheight 1030 //此参数控制其在垂直方向的位置,与电脑屏幕显示分辨率有关

以下是对网络参数的解释

网络参数注解

rate 客户端每秒接收数据包大小的上限,默认值为10000(Byte字节)

cl_updaterate 客户端每秒向服务器请求刷新的次数,默认值为20 (即20tick)。如果值过大,超过了服务器的tick值的那部分算是浪费资源

cl_cmdrate 客户端每秒向服务器汇报的次数上限,默认值为30(即30tick),最大值为100。如果值过大,超过了服务器的tick值的那部分算是浪费资源

7.6 服务器端的插件获取渠道

7.6.1 方法一

从SourceMOD论坛获取,论坛网址:https://www.sourcemod.net/plugins.php

下图以夜视仪插件为例,下载完解压得到smx格式的夜视仪插件

SourceMOD论坛

在论坛搜索夜视仪插件

下载夜视仪插件

7.6.2 方法二

网上搜索大佬们制作的插件整合包

常用的有望夜插件整合包豆瓣酱插件整合包

在B站搜索求生之路2插件的视频能找到一些up主的游戏QQ群,可以从群里找各种功能的插件和插件整合包

我使用的豆瓣酱插件整合包是从维爱社区-求生之路论坛获取的,插件整合包的发布网址:http://l4d.vihh.net/forum.php?mod=viewthread&tid=75422

(没有下载链接?因为整理、搬运不易,请在论坛注册个账号顺便给贴主点个好评吧)

7.7 服务器端的插件安装方法

从各渠道获取的插件一般包含addons和cfg文件夹,按文件路径将其传输到l4d2服务器端的addons和cfg文件夹里对应路径即可完成安装,如果得到的插件没有addons文件夹,可按文件拓展名来分别放在l4d2服务器端的对应目录

代码块
JavaScript
自动换行
复制代码
【.smx】 插件的核心部分,安装位置为:\left4dead\addons\sourcemod\plugins
【.cfg】 配置文件,安装位置为:\left4dead\cfg\sourcemod
【.sp】  源码,可以不用安装,安装位置为:\left4dead\addons\sourcemod\scripting
【.txt】 安装位置为:\left4dead\addons\sourcemod\gamedata
复制成功

注:

① 一般在cfg格式的文件中可以找到插件的使用说明参数调整说明

② 按文件拓展名一个一个传输到服务器相应路径有些麻烦,可参考下图,直接将同名文件合并即可完成插件安装

豆瓣酱插件整合包——用法示例

7.8 添加第三方地图到服务器

7.8.1 下载第三方地图

第三方地图下载网站:https://www.gamemaps.com/

(多年前用过,不知道这网站是否还在运营,别的地图网站我也不知道,自己在B站搜索吧)

下载后解压得到vpk格式的地图文件

7.8.2 安装第三方地图

打开debian的路径/home/aaa/Steam/l4d2-ds/left4dead2/addons/,将vpk格式的地图文件通过WinSCP传输到addons文件夹

7.8.3 打开第三方地图

参照本文4.4章节更换到第三方地图

如果服务器提示找不到地图,或用插件更换地图时找不到对应地图关卡,可能是地图文件名含有特殊字符,例如“.”。经测试空格、汉字不会影响服务器识别地图

以地图“广州增城”为例,地图名中含有“Lv7.3”,把它改成“v7_3”就能被服务器识别了,这个只修改服务器端的地图名,游戏端不用修改

注:玩家也要在自己的l4d2游戏安装目录中的addons文件夹中放入相同版本的vpk地图文件,否则玩家会连接不上服务器

7.9 查看地图关卡名称

7.9.1 下载安装GCFScape

地图解包软件GCFScape的下载地址:https://nemstools.github.io/pages/GCFScape-Download.html

7.9.2 查看关卡名

在GCFScape中打开vpk格式的地图文件,找到missions文件夹,打开里面的txt文档,即可找到每个关卡的名称 

解包查看地图关卡名

7.10 更新l4d2服务器

打开debian的路径/home/aaa/Steam,找到steamcmd.sh(如果没有,则按本文3.7章节的步骤重新下载),同路径下新建一个脚本用来更新l4d2,命令 :vim update-l4d2.sh

写入以下内容后保存并退出:

代码块
JavaScript
自动换行
复制代码
#!/bin/bash
./steamcmd.sh +force_install_dir /home/aaa/Steam/l4d2-ds +login anonymous +app_update 222860 +quit
复制成功

然后给脚本赋予可执行权限,命令:sudo chmod +x update-l4d2.sh

当l4d2游戏端需要更新时,l4d2服务器端也需要更新

打开debian的路径/home/aaa/Steam,运行更新脚本,命令:./update-l4d2.sh

更新l4d2服务器

7.11 WinSCP和Putty使用方法

7.11.1 下载安装WinSCP汉化包

下载安装WinSCP

打开WinSCP语言包下载页面,找到Simplified Chinese,点击Download得到chs.zip

将chs.zip解压得到WinSCP.chs文件

将WinSCP.chs复制到WinSCP的安装目录,覆盖原有的WinSCP.chs文件即可完成汉化

7.11.2 安装Putty

在Putty官网下载得到putty.exe

将putty.exe放在合适位置,建议放在WinSCP的安装目录里

运行WinSCP,打开【选项】菜单,在左侧找到【应用程序】,填写putty.exe的路径 

WinSCP调用Putty

7.11.3 新建会话

运行WinSCP,点击【新建会话】-【新建站点】 

WinSCP连接服务器端的方法

同理,可以再添加一个站点,方便以root用户来登陆debian

7.11.4 使用Putty

 在WinSCP登陆debian后,在菜单栏打开Putty 

通过WinSCP打开Putty

因为新建站点时已经保存过用户名和密码,打开Putty后会自动登陆aaa或root账户

注:

在Putty里,用鼠标拉黑的内容自动复制到剪切板,在其他地方直接粘贴即可

如需向Putty里复制内容,先将输入光标移动到合适位置,鼠标右键即可粘贴

7.11.5 windows和debian互传文件

使用WinSCP传输文件

7.12 云服务器的安全组设置

如果把debian系统比喻成家,那debian自带防火墙UFW就是家的大门,而云服务器提供的安全组就相当于在家的四周又建了一圈围墙,所以在传输数据过程中要保证游戏数据能顺利通过围墙和大门,同时围墙和大门要拒绝其他试图通过的数据

以我使用的百度轻量应用服务器为例,它的安全组(或叫防火墙)默认是允许所有数据通过的,所以要先删除它默认的规则,然后新增两项规则,一条规则用于放行22端口的tcp协议通信,另一条规则用于放行27015端口的udp协议通信

百度轻量应用服务器的安全组/防火墙控制页面

7.13 debian的防火墙相关命令

debian的防火墙名为UFW(Uncomplicated Fire Wall)

代码块
JavaScript
自动换行
复制代码
sudo ufw status //查看防火墙状态
//inactive是关闭,active是开启
sudo ufw disable //关闭防火墙
sudo ufw enable //开启防火墙
sudo ufw reload //重启防火墙
sudo ufw allow 端口号  //开放指定端口号
sudo ufw delete allow 端口号  //关闭指定端口
sudo ufw allow 端口号/协议  //开放指定端口号的指定协议
//开放27015端口的udp协议示例:sudo ufw allow 27015/udp
sudo ufw delete allow 端口号/协议 //关闭指定端口号的指定协议
sudo ufw deny 端口号  //不允许访问指定端口号
sudo ufw allow from 192.168.1.1 //允许某个ip地址访问本机所有端口
sudo ufw delete allow from 192.168.1.1 //禁止某个ip地址访问本机所有端口
复制成功

因为百度、腾讯、阿里这些大厂售卖的云服务器都默认开启安全组,使用安全组管理端口就不用去记忆复杂的linux命令,所以linux自带的防火墙可以关闭,也可以直接卸载防火墙

7.14 debian的常用命令

7.14.1 查看debian系统信息

检查debian版本,命令:cat /etc/debian_version

检查linux系统版本,命令:lsb_release -a

检查linux内核版本,命令:uname -mrs

安装neofetch展示系统详细信息,命令:sudo apt install neofetch

运行neofetch命令:neofetch 

如今neofetch已停更,可使用fastfetch代替

一个比较美观的系统信息展示工具

7.14.2 查看磁盘占用情况

查看debian的磁盘整体占用情况,命令:df -hl

查看l4d2服务器的整体大小:du -h --max-depth=0 /home/aaa/Steam/l4d2-ds

查看l4d2服务器中addons文件夹的大小,命令:du -h --max-depth=0 /home/aaa/Steam/l4d2-ds/left4dead2/addons

④ 查看l4d2服务器中addons里每个文件的大小,命令:du -h --max-depth=0 /home/aaa/Steam/l4d2-ds/left4dead2/addons/*

7.14.3 查看内存占用情况

运行free命令:free -h

每5秒刷新一次内存占用情况,命令:free -h -s5

关闭每5秒刷新方法:键盘Ctrl+C

7.14.4 查看资源占用情况

运行top命令:top

使用键盘按键(注意字母的大小写)可以改变显示形式:

代码块
clike
自动换行
复制代码
【space】立即刷新
【Q】 退出top
【1】 切换显示不同CPU的负载率
【M】 按内存占用排序
【P】 按cpu占用排序
【m】 切换内存占用显示形式
【t】 切换cpu占用显示形式
【c】 切换显示命令名称和完整命令行
【i】 不显示闲置(Idle)或无用(Zombie)进程
【d】 指定更新间隔
复制成功

退出top方法:键盘Ctrl+C

7.15 将debian-10.8升级到debian-11.8

【重要声明】大版本升级有风险,如果你的debian系统还有其他用途,不要按本文操作升级(因为我的linux水平不高,只能保证把我自己的debian升级成功),如果是在云服务器新装的debian系统,可以尝试升级,升级中如果出现故障可以随时快速的重装系统

7.15.1 更新debian-10.8

使用root用户登陆debian,依次使用以下命令(//代表注释)

sudo apt update //更新apt列表

sudo apt upgrade //升级现有的软件

sudo apt --purge autoremove  //升级后清除多余的包

sudo systemctl reboot //重启debian

7.15.2 备份sources.list

备份命令:sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup

7.15.3 更新sources.list

更新方法一

(这里的buster、bullseye是debian版本代号,如果搞不懂就用方法二)

将sources.list文件内容里的所有buster替换为bullseye

命令:sudo sed -i 's/buster/bullseye/g' /etc/apt/sources.list

然后用vim将sources.list文件内容里的bullseye/updates改为bullseye-security

更新方法二

参考清华源的使用帮助页面:https://mirrors.tuna.tsinghua.edu.cn/help/debian/ 

debian更换清华软件源

7.15.4 更新apt源

命令:sudo apt update

7.15.5 升级debian系统

命令:sudo apt upgrade

升级期间可能会弹出声明,输入:q退出声明

如果遇到Restart services during package upgrades without asking?选择yes

升级过程中会出现一些声明(导致升级自动停止)

此界面选择yes

关于ssh配置的选项

7.15.6 重启debian系统

命令:sudo systemctl reboot

7.15.7 验证是否升级成功

检查debian版本是否为11.8,命令:cat /etc/debian_version

8 总结

在l4d2游戏中打开控制台,输入指令:openserverbrowser,选择自定义后稍等片刻,在刷出来的列表里找服务器名称里带“纯净”的服务器,双击即可进入,这样也挺好的,何必费时费力自己搭服务器

搜索纯净战役第三方服务器