如何创建您的 Left 4 Dead 2 服务器
本指南介绍如何在您的 VPS 或专用 Linux 服务器上安装和配置 Left 4 Dead 2(L4D2)专用服务器。
订购服务器
要托管您的 Left 4 Dead 2 服务器,HostMyServers 提供多种游戏优化选择:
- Performance VPS - 适合 L4D2 服务器(1 至 2 个 vCPU 和 2 至 4 GB 内存即可)
- NVMe VPS - 极佳性价比
- 经济型专用服务器 - 适合托管多个游戏服务器
- 性能专用服务器 - 最佳性能
前提条件
下列资源对应服务器自身的需求,未计入操作系统、已安装软件或机器上其他服务已占用的资源。 10 名玩家在 tickrate 30 下约需 3 至 5 Mbps,在 tickrate 100 下约为其三倍(需要 L4D2 的 Tickrate Enabler 扩展)。
- 以 root 或具有 sudo 权限的用户进行 SSH 访问
- 64 位 Linux 系统(推荐 Debian 12/13 或 Ubuntu 22.04/24.04)
- 防火墙已启用:nftables(推荐)、iptables 或 ufw(一次只使用一种防火墙工具)
- 最少 2 GB 内存
- 约 10 GB 可用磁盘空间(推荐 SSD)
- 端口 27015 UDP 可访问(以及用于 RCON 的端口 27015 TCP,仅限从您的固定 IP 地址访问)
配置要求
| 组件 | 最低 | 推荐 |
|---|---|---|
| 内存 | 2 GB | 4 GB |
| CPU | 1 核 | 2 核 |
| 存储 | 10 GB | 10 GB SSD |
| 网络 | 100 Mbps | 500 Mbps |
Left 4 Dead 2 使用端口 27015,游戏通信使用 UDP,RCON 访问(远程管理)使用 TCP。TCP 端口只能从您的 IP 地址访问。
系统更新
sudo apt update && sudo apt upgrade -y
安装依赖项
SteamCMD 和 L4D2 服务器是 32 位程序:需要 32 位库。请先检查是否已启用 i386 架构:
sudo dpkg --print-foreign-architectures
如果返回为空,请执行:
sudo dpkg --add-architecture i386
sudo apt update
然后安装所需的软件包:
sudo apt install -y wget tar screen lib32gcc-s1 lib32stdc++6 lib32z1
创建专用用户
出于安全考虑,创建专用用户:
sudo adduser --disabled-password --gecos "" l4d2
防火墙配置
为玩家开放 UDP 端口 27015。TCP 端口 27015 用于 RCON:请将其限制为您的固定 IP 地址(替换 您的IP)。
使用 UFW
sudo ufw allow 27015/udp
sudo ufw allow from 您的IP to any port 27015 proto tcp
sudo ufw reload
使用 iptables
sudo iptables -A INPUT -p udp --dport 27015 -j ACCEPT
sudo iptables -A INPUT -p tcp -s 您的IP --dport 27015 -j ACCEPT
sudo iptables-save | sudo tee /etc/iptables/rules.v4
要在重启后保留规则,需要安装 iptables-persistent 软件包。
使用 nftables
这些命令使用 inet filter 表和 input 链,它们默认存在于 Debian 的 /etc/nftables.conf 中。
sudo nft add rule inet filter input udp dport 27015 accept
sudo nft add rule inet filter input ip saddr 您的IP tcp dport 27015 accept
(echo "flush ruleset"; sudo nft list ruleset) | sudo tee /etc/nftables.conf
切勿向所有人开放 TCP 端口 27015:它可用于访问 RCON。没有固定 IP 地址时,请不要开放此端口,改用 SSH 隧道 。
安装 SteamCMD
以 l4d2 用户身份登录:
sudo -u l4d2 bash
cd ~
创建目录并下载 SteamCMD:
mkdir -p ~/steamcmd ~/l4d2-server
cd ~/steamcmd
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
tar -xzf steamcmd_linux.tar.gz
下载 L4D2 服务器
启动服务 器安装(应用程序 ID 222860)。仅使用 app_update 命令已不足以在 Linux 上获得可正常运行的 L4D2 服务器:必须先强制安装 Windows 平台,再安装 Linux 平台,且安装到同一个文件夹:
./steamcmd.sh +@sSteamCmdForcePlatformType windows +force_install_dir /home/l4d2/l4d2-server +login anonymous +app_update 222860 validate +quit
./steamcmd.sh +@sSteamCmdForcePlatformType linux +force_install_dir /home/l4d2/l4d2-server +login anonymous +app_update 222860 validate +quit
如果安装因错误而中断,只需重新运行同一条命令:SteamCMD 会从中断处继续。
完成后,将显示消息 Success! App '222860' fully installed.。请检查服务器启动脚本是否存在:
ls ~/l4d2-server/srcds_run
服务器配置
server.cfg 文件
创建配置文件:
nano ~/l4d2-server/left4dead2/cfg/server.cfg
基本配置
// 服务器名称
hostname "我的 L4D2 服务器"
// 服务器密码(留空 = 公开)
sv_password ""
// RCON 密码
rcon_password "ChangeMe"
// 服务器区域
// 0:美国(东部)
// 1:美国(西部)
// 2:南美洲
// 3:欧洲
// 4:亚洲
// 5:澳大利亚
// 6:中东
// 7:非洲
// 255:全球(默认)
sv_region 3
// 0:服务器在互联网上可见,1:仅限局域网
sv_lan 0
// 作弊命令(0 = 禁用)
sv_cheats 0
// 允许直接连接服务器(无需经过大厅)
sv_allow_lobby_connect_only 0
// 服务器标签,以逗号分隔(示例:"fr,coop")
//sv_tags "fr,coop"
// 将服务器限定为 Steam 组成员使用
// 1:只有组成员可以看到并加入服务器
// 0:公开服务器
// 要使用此功能,请通过 sv_steamgroup 填写您的 Steam 组 ID
sv_steamgroup_exclusive 0
//sv_steamgroup 组ID
// 服务器列表中显示的槽位数(-1 = 实际槽位数)
sv_visiblemaxplayers -1
// 僵尸难度:Easy、Normal、Hard、Impossible
z_difficulty normal
// 允许的游戏模式
// 如果此行未生效,则必须安装 SourceMod:
// 此时请在命令前加上 sm_cvar(sm_cvar sv_gametypes ...)
sv_gametypes "coop,realism,survival,versus,teamversus,scavenge,teamscavenge,mutation12,right2live"
// 启用服务器上的语音通信
sv_voiceenable 1
// 允许两个队伍的玩家互相交谈(0 = 否,1 = 是)
// 如果该值为 1,请确认 sv_voiceenable 也为 1
sv_alltalk 0
// RCON 安全
// RCON 访问失败后的封禁时长(分钟)
sv_rcon_banpenalty 3600
// 封禁前允许的 RCON 访问失败最大次数
sv_rcon_maxfailures 3
// 封禁前允许的 RCON 访问失败最小次数
sv_rcon_minfailures 1
// 统计 RCON 访问失败次数的时间窗口(秒)
sv_rcon_minfailuretime 10
// 玩家文件校验
// 注意:使用自定义扩展或战役时,
// 这些值会踢出文件不一致的玩家(请将其设为 0)
sv_pure 2
sv_consistency 1
// 踢出没有游戏原始文件的玩家
sv_pure_kick_clients 1
// 允许(1)或禁止(0)玩家 cfg 文件中的 wait 命令
sv_allow_wait_command 0
// 启用(1)或禁用(0)每日消息(MOTD)的显示
motd_enabled 1
// 日志
log on
sv_logecho 0
sv_logfile 1
sv_log_onefile 0
sv_logbans 1
sv_logflush 0
sv_logsdir logs
// 封禁管理
exec banned_user.cfg
exec banned_ip.cfg
// 如果上述封禁文件不存在,则生成它们
writeid
writeip
默认情况下,L4D2 专用服务器仅接受通过大厅的连接。如果没有 sv_allow_lobby_connect_only 0 这一行,玩家将既无法直接加入您的服务器,也无法通过服务器列表加入。
请为 rcon_password 选择一个足够长且唯一的密码。任何知道该密码的人都可以管理您的服务器。
游戏模式和地图
游戏模式
模式在启动时通过 +mp_gamemode 选择:
| 模式 | 描述 | 玩家数 |
|---|---|---|
coop | 合作战役 | 4 |
realism | 无轮廓光晕和提示的合作模式 | 4 |
versus | 幸存者对抗感染者 | 8 |
survival | 抵御成波的感染者 | 4 |
scavenge | 收集汽油桶 | 8 |
每个战役的第一张地图
| 战役 | 起始地图 |
|---|---|
| Dead Center | c1m1_hotel |
| Dark Carnival | c2m1_highway |
| Swamp Fever | c3m1_plankcountry |
| Hard Rain | c4m1_milltown_a |
| The Parish | c5m1_waterfront |
| The Passing | c6m1_riverbank |
| The Sacrifice | c7m1_docks |
| No Mercy | c8m1_apartment |
| Crash Course | c9m1_alleys |
| Death Toll | c10m1_caves |
| Dead Air | c11m1_greenhouse |
| Blood Harvest | c12m1_hilltop |
| Cold Stream | c13m1_alleys |
| The Last Stand | c14m1_junkyard |
GSLT 令牌(可选)
GSLT(Game Server Login Token)令牌不是必需的,但建议使用:它可让您的服务器出现在 Steam 的公共服务器列表中。
要生成令牌,请登录您的 Steam 账户并访问 Steam 游戏服务器账户管理。
创建令牌有一些前提条件:
- 您的 Steam 账户不得被社区封禁或锁定
- 您的 Steam 账户不得受到限制
- 您的 Steam 账户必须已登记电话号码
- 您的 Steam 账户必须拥有您为其创建游戏服务器账户的游戏
- 您的 Steam 账户最多可创建 1000 个游戏服务器账户
在 基础游戏的 App ID 栏中输入 550。您可以添加备注,提醒自己这是哪台服务器,然后点击 创建 按钮完成。
要使用令牌,请将其添加到启动命令行中:
+sv_setsteamaccount 您的令牌
请将该参数添加到您所有的启动命令行中:首次启动、systemd 服务的 ExecStart 行,以及使用 screen 启动的命令。
首次启动
cd ~/l4d2-server
./srcds_run -game left4dead2 -console +mp_gamemode coop +map c1m1_hotel +maxplayers 8 -port 27015
启动完成后,控制台会显示与 Steam 服务器的连接状态。要停止服务器,请输入 quit。
启动优化
启动参数
| 参数 | 描述 |
|---|---|
-game left4dead2 | 要启动的游戏(必需) |
+mp_gamemode | 启动时的游戏模式 |
+map | 启动地图 |
+maxplayers | 最大玩家数 |
-port | 服务器端口(默认 27015) |
-ip | 要监听的 IP 地址 |
-tickrate 100 | 模拟频率(默认 30)。会增加 CPU 负载,并需要 Tickrate Enabler 扩展来解除 tickrate 限制 |
-norestart | 防止脚本在服务器停止时重新启动服务器(配合 systemd 使用时很有用) |
-console | 以控制台模式运行 |
-debuglog 文件名 | 将调试信息记录到该文件 |
-high | 为服务器进程设置最高优先级 |
-insecure | 禁用 VAC 保护(见下方警告) |
+sv_setsteamaccount | GSLT 令牌(可选,见专门章节) |
-insecure 会禁用 VAC 保护:此参数仅用于测试,它会给作弊者留下可乘之机。
请务必为操作系统和已安装的软件留出空闲资源。
更改端口
./srcds_run -game left4dead2 -console +mp_gamemode coop +map c1m1_hotel +maxplayers 8 -port 27016
不要忘记在防火墙中开放新端口。
文件结构
| 路径 | 描述 |
|---|---|
left4dead2/cfg/ | 配置文件 |
left4dead2/cfg/server.cfg | 主配置 |
left4dead2/cfg/banned_user.cfg | 被封禁的玩家(SteamID) |
left4dead2/cfg/banned_ip.cfg | 被封禁的 IP 地址 |
left4dead2/addons/ | 扩展和自定义战役 |
left4dead2/logs/ | 日志文件 |
配置为 systemd 服务
创建服务文件
退出 l4d2 用户会话(exit)以返回您的管理员账户,然后创建服务文件:
sudo nano /etc/systemd/system/l4d2.service
文件内容:
[Unit]
Description=Left 4 Dead 2 Server
After=network.target
[Service]
Type=simple
User=l4d2
Group=l4d2
WorkingDirectory=/home/l4d2/l4d2-server
Environment=TERM=xterm
ExecStart=/home/l4d2/l4d2-server/srcds_run -game left4dead2 -console -norestart +mp_gamemode coop +map c1m1_hotel +maxplayers 8 -port 27015
Restart=on-failure
RestartSec=20
[Install]
WantedBy=multi-user.target