Featured image of post 超全面的DCS开服教程

超全面的DCS开服教程

如何在家架设服务器,克服网络问题跟朋友联机

前言

DCS有着庞大的社区服务器列表,但也许在这么多服务器中,就是没有一个符合你的胃口的。也许你有个自己做的任务,想在自己的服务器上开起来让大家玩,或者你只是想要一个不被打扰的环境跟朋友一起飞飞训练。今天蛋卷就教你怎么开设一个真正属于自己的DCS服务器。你不需要任何特殊的机器或者操作系统,一般的Windows家用机(甚至不需要配置很高)就能很好得开起来一个服务器。

注意,我们的小目标是开一个能让朋友通过IP直连进来的服务器,如果你想要你的服务器显示在公共服务器列表中,要求会更为苛刻(下文会说)。

本文分为两部分:让别人能连进你的服务器开设专用服务器。为什么顺序反过来了呢,因为DCS官方的服务器端使用已经非常傻瓜化了,基本上是个人都能看懂。但大部分人卡住的地方不是怎么开服,而是怎么把服务器开放到网络上,让别人能连进来。但这一点很多教程都不会提到,一般人没有一些必要的网络知识很难搞定。

如果你能完整阅读并理解本文,除了能开起来自己的DCS服务器,最大的奖励就是可以获得很多网络基础知识,以后当你想开任何一个别的游戏的服务器时,可能就不需要再找教程了。

我建议大家先用普通DCS客户端,点服务器列表下方的 新建服务器 开一个临时服用于测试,等确定别人能连上这个服务器后,再去安装专用的服务器端。服务器端所有模组均可免费使用,但没有3D图形界面。

服务器列表最下方

让别人能连进你的服务器

接下来需要你有意愿和能力去学习一些必要的网络知识和管理技能,我会尽量写清楚,某些步骤如果有别人已经写好的教程我会直接链接过去,但即便如此也不可能面面俱到,你有很大概率在读我又臭又长的教程之外还需要自己去搜索和阅读更多的教程。要是你已经觉得很麻烦了,请关闭本页面不要继续,DCS已经有非常多好玩的社区服了,没必要非得自己开一个。

如果这个过程中遇到问题,想向我求助的话,请写明你做过的所有事情,并附上每一步的截图。对所有包含“救命啊”、“就是按教程做的啊”、“为啥连不上啊”等类似语句的提问,一律预先收费¥5000再考虑回复。

到这里你还想继续的话,请把想用来开服的电脑插上网线并关闭WiFi(任务栏右下角),WiFi开服天打雷劈
然后参考这个教程,为Windows防火墙打开DCS要用的 10308 端口,TCPUDP 都要(新建两个规则)。
如果你用了第三方防火墙,请自行搜索教程,祝你好运。

取决于不同的网络环境,我们可以分为以下几种情形:

  1. 你有公网IP(可开公共服)
    1.1. 你愿意花钱租服务器
  2. 所有想玩的人都能用IPv6网络
  3. 既没有公网IP也没有IPv6
    3.1. 使用反向代理
    3.2. 组建虚拟局域网

情形1:你有公网IP

这是最佳的开服条件,也是唯一可以让自己的服务器出现在服务器列表里的情况,但不光需要你真的有公网IP,还需要触及电脑、路由器和光猫的网络设置。另外,因为每家装的路由器/光猫型号都不一样,我没法截图,只能大致文字描述。如果没有一定的网络基础知识。你可能需要自己去查对应设备型号的教程,过程中操作不当有概率把全家的网都搞崩,请准备好一颗折腾的心。

如果你是校园网,可以直接跳过这一节了。如果是联通/移动用户,也基本上不用想了(要加钱上商用套餐)。国内的公网IP资源稀缺,一般只有电信能有多余的IP分配给家用宽带用户。那要怎么检查自己是否有公网IP呢?在客户端开服的时候,可以看到这里显示了游戏探测到的公共IP,或者你也可以去这种IP查询网站

客户端内新建服务器设置

别高兴太早,这个IP并不一定是你家独享的,就如同你家的多个设备虽然有多个局域网IP(192.168……),但对外都共用同一个公网IP一样,你的网络运营商在公网IP不够的时候,也会让整个片区的用户共用一个公网IP。想确认是不是这种情况,我们要去你家的路由器管理界面。

如果你不知道怎么进的话,可以在开始菜单搜索 cmd,打开那个小黑窗口,然后输入 ipconfig 回车。接下来你要找的是类似这样这样一段东西:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
以太网适配器 以太网:

   连接特定的 DNS 后缀 . . . . . . . :

      --- 这里可能会有一堆IPv6地址,先不要管 ---
       
   IPv4 地址 . . . . . . . . . . . . : 192.168.0.101   <-- 这是电脑的局域网IP
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   默认网关. . . . . . . . . . . . . : fe80::1%17
                                       192.168.0.1    <-- 这是路由器的局域网IP

例子中,我们自己电脑的局域网IP是 192.168.0.101,而路由器的IP是则是默认网关后面的 192.168.0.1。一般家用路由器的默认IP都是 192.168.0.1192.168.1.1 或者 10.0.0.1 这种,通常也会直接写在路由器的机身上。

接下来打开浏览器,在网址栏输入上面找到的路由器局域网IP。你可能会遇到一个登录页面,如果你从来没进去过,大概率这里用的是路由器机身上写默认用户名和密码,如果进不去请找运营商客服帮助。

不同品牌的路由器界面各不相同,所以下面这一步就需要你自己搞定了,自己找/问客服/搜对应型号的教程随你。你要找的是路由器的公网IP,也可能叫WAN IP、网络侧IP等。如果这个IP对上了你前面游戏里看到或网站上查询到的公网IP,那么恭喜你!接下来的事情会简单很多。

如果WAN IP长得像个局域网IP,而你家上网又需要两个设备的话(如光猫+路由器),可能是光猫上也开启了路由功能,请到光猫的管理页面去重复上面的事情。至于怎么进,如果路由器WAN IP是 192.168.1.2,那光猫大概率是 192.168.1.1(或者你可以去看光猫的机身上有没有写)。

排除上面这种情况,如果路由器或光猫的WAN IP还是跟上面的查到的公网IP对不上的话,大概率是运营商给你分配了一个假公网IP,你实际上处在运营商的一个大局域网内。你可以试着打客服电话,请求分配公网IP。有的地区可能要加钱,有的地区则只要说说好话,给个正当理由就行。至于什么是“正当理由”,开游戏服务器明显不是,建网站更不是(在国内要备案滴),但什么家里有老人/小孩要装监控啦之类的,请自由发挥,翻车了不要找我。

获得公网IP后要注意几点:

  • 你的公网IP大概率不是固定的,每隔一时间会变一次,所以如果你想让你的朋友直连的话,请每一次都把最新的IP发给他们。当然,因为你有真的公网IP,只要开服时选上 公共服务器, 别人就可以直接在服务器列表里搜到你的服务器,完全不需要IP信息(开公共并不影响你设密码)。
  • 如果你遇到了光猫客串路由器的情况,请自行搜索教程如何把你家型号的光猫改成桥接模式(改不好网会崩哟),或者请运营商的师傅帮忙。如果不想改,请把接下来 路由器→服务器电脑 的端口转发操作,在 光猫→路由器 这一段也重复一遍(光猫不一定支持这个功能)

现在我们需要给开服的电脑一个固定的局域网IP。也许你的路由器支持为特定设备分配固定局域网IP(一般在DHCP页面,请自行搜索对应型号教程),否则请看 这个教程,设置成前面用 cmd 查到的IP、子网掩码和网关(路由器局域网IP)即可。如果你不知道DNS是啥的话,首选DNS可以直接填路由器的局域网IP,备用DNS留空。

接下来请回到你的路由器管理界面,找到端口转发功能(也可能叫端口映射/虚拟服务器等),外部和内部端口都写 10308,指向开服电脑的局域网IP。一样,如果自己搞不定,请搜具体型号的教程或找客服。

完成这一步后,别人应该就可以通过你的公网IP和10308端口连进你的DCS服务器了。只有这种真的有公网IP的服务器在开服时选上 公共服务器,才会出现在服务器列表里。

恭喜你达成了90%的国内玩家都做不到的事情!

高端玩法:租云服务器

大厂的云服务器/VPS都自带公网IP,当然也有相对便宜的“共享IP服务器”或者叫“NAT服务器”,有公网IP但只允许你开放少量端口。这个其实不是问题,我们只需要一个远程桌面端口用来管理服务器和一个 10308 端口连接DCS。

Windows云服务器的DCS开服方法跟家用电脑一样,除了不需要折腾路由器。另外不同的服务器商关于如何开放防火墙端口有不同的方法,请查看他们的帮助文档。

要注意的是,一般的云服务器不是为了跑游戏优化的,你需要的是高主频CPU(但不需要GPU),比如腾讯云的计算型服务器,也有一些小厂直接提供游戏云服务器,使用个人电脑级CPU,会便宜一些。带宽方面,你可以大致估算为每一个连接的玩家需要1M的带宽,所以你想开个10人能畅玩的服务器,最好有10M带宽。另外DCS还需要不小的硬盘空间(我的服务器只装了几个常用的现代地图,就占了100GB),而且最好是SSD,这样一套算下来,在稳定的大厂租一个月上千都不是不可能哟。(下面是我拿腾讯云大致算了一下)

腾讯云价格计算器

土豪请直接按上面的配置两倍购买,然后可以找我帮你把DCS服搭好(收取少量费用)。
下面会有一些便宜的多的办法来解决没有公网IP的问题,不过似乎都不能做到让服务器显示在公共服务器列表里,当然对于跟几个朋友开黑而言没啥影响啦。

情形2:所有想玩的人都能用IPv6

前面提到的在国内稀缺的公网IP,指的是IPv4,而新的IPv6则几乎用之不竭,以至于每台设备都能获得一个甚至多个自己的公网IP用于直连,根本用不着路由器把一个公网IP转成多个局域网IP。

1
2
3
4
5
IPv4地址长这样
108.160.165.212

IPv6地址长这样
2a03:2880:f10e:83:face:b00c:0:25de

如今几乎所有的设备都支持IPv6,这么好的东西,为啥没被用起来呢?这里最大的问题之一就是很多网络管理人员和机构知识体系陈旧,不愿意也不知道怎么样有效管理IPv6网络,于是直接把这整套系统给关了,人为阻断了IPv6的传播。这种情况的重灾区就是各学校内网,完全依赖IPv4地址转发(讲个笑话,你的手机流量很有可能是IPv6的,手机热点开服不是梦),一般大运营商的家用宽带都能用IPv6。

DCS服务器支持IPv6地址直连,但前提是服务器和所有要连接的玩家都要能用IPv6。一个简单的测试是开始菜单搜索 cmd,在打开的黑窗口里输入 ping 2402:4e00:: 回车。这是腾讯的公共IPv6 DNS服务器,如果你收到的回复类似:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
正在 Ping 2402:4e00:: 具有 32 字节的数据:
来自 2402:4e00:: 的回复: 时间=60ms
来自 2402:4e00:: 的回复: 时间=58ms
来自 2402:4e00:: 的回复: 时间=60ms
来自 2402:4e00:: 的回复: 时间=64ms

2402:4e00:: 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 58ms,最长 = 64ms,平均 = 60ms

则表示你可以使用IPv6,更详细测试可以使用这个网站

确定了所有一起玩的人都有IPv6之后,要怎么连接呢?这里不得不提到Windows的一个安全机制:临时IPv6地址。由于IPv6等效于电脑自己的公网IP,这意味着获得你IPv6地址的人可以无视路由器直接访问你的电脑,如果处理不当是个巨大的安全隐患。因此Windows会为每一个想要联网的程序创建一个临时的IPv6地址,通过这个地址,只能访问这一个程序而不是整个系统,我们要找到的是DCS使用的地址。

先不要急着开服,在 cmd 中输入 ipconfig 可以查看本机的所有IP地址

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
以太网适配器 以太网:

   连接特定的 DNS 后缀 . . . . . . . :
   IPv6 地址 . . . . . . . . . . . . : xxxx:xxxx:xxxx:xxxx:7dab:f7c5:ac06:c096
   临时 IPv6 地址. . . . . . . . . . : xxxx:xxxx:xxxx:xxxx:1a1:1ad4:a134:cec4
   临时 IPv6 地址. . . . . . . . . . : xxxx:xxxx:xxxx:xxxx:31ad:cf2f:988f:a283
   本地链接 IPv6 地址. . . . . . . . : fe80::bec9:ee8:b921:3fd7%9
   IPv4 地址 . . . . . . . . . . . . : 192.168.0.101
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   默认网关. . . . . . . . . . . . . : fe80::1%17
                                       192.168.0.1

这里可以看到数个 IPv6地址临时 IPv6 地址,现在我们可以开始DCS服务器,注意不要选中 公共服务器,否则IPv6功能不会启用,然后再运行一遍 ipconfig,看看多了哪个地址,那应该就是DCS用的地址了。注意如果之前开过,关服后临时地址不会马上消失,所以如果没有出现新地址,只能几个都试着连接一下了(看下面)。如果你实在觉得麻烦,可以自己搜索教程关闭Windows的临时IPv6地址这一机制,但我不建议这么做,原因上面说了。

注意这里可能还会列出Teredo的IPv6地址,不要管这个,那是微软Xbox联机体系用的地址,跟我们没关系。

使用IPv6连接服务器时,地址的格式如下,要用方括号包裹IPv6,后面再写端口号

[xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx]:10308

另外,有的路由器可能会有一些IPv6相关的安全机制,也许你需要去路由器管理界面做出相应的调整,比如我的路由器需要关掉一个 启用IPv6 Sessions 的选项。如果你有IPv6可别人就是连不上的话,可以搜索自己的路由器型号+IPv6看看有没有类似的情况。

情形3:既没有公网IP也没有IPv6

到了这一步,我们就只能改变思路了。我们的服务器深埋于内网中,没法直接把服务器开放到公网上供大家连接,那有没有什么能服务器和玩家穿透内网的阻碍,从而达成连接呢?

使用反向代理

说到网络代理,大家平时接触的最多的是应该是游戏加速器,这是一种正向代理。你的电脑先连接到代理服务器,代理服务器再帮你去连接游戏服务器。而我们现在要用的反向代理则是先把游戏服务器和一个有公网IP的代理服务器连在一起,然后所有的玩家都去连接这个代理服务器,顺着它就找到游戏服务器了。

要达成这一效果,有个非常简单的开源软件叫FRP(先别急着下)。但光有软件不够,我们还需要一个有公网IP的服务器做代理。如果你想自己租服务器的话,因为游戏本身并不跑在代理服务器上,所以你可以租一个CPU/内存/硬盘配置很低的服务器(当然,带宽要够),然后根据FRP作者写的帮助文档部署代理服务器并连接。

当然,如果你都会部署FRP了,大概率也不会来看这个教程了。有些网站提供部署好的FRP服务器,你可以花点小钱直接使用穿透服务(一般比你自己租服务器便宜不少)。因为DCS要同时使用TCP和UDP端口,并不是所有的FRP站都支持。我实测可以使用的有SakuraFrpOpenFRP。这两家都有白嫖流量,可供我们先进行测试。下面我用SakuraFrp来举例。

注册过程就不说了,另外大部分的FRP服务如果要使用大陆节点都需要先实名认证,请自行根据网站上的指引完成。

之后,在SakuraFrp顶部的 服务 里,选择 节点状态 先看一看哪些节点用的人比较少、离你比较近,再到 隧道列表 里创建隧道。选择节点的时候注意,DCS只能使用支持UDP的节点,同时因为是白嫖的,不能使用无权限的高级节点。

SakuraFrp选择节点

隧道类型先选 TCP隧道,本地端口 10308。至于远程端口(也就是玩家实际连接服务器时使用的端口)你可以试试能不能抢到DCS默认的10308,否则就留空让它自动生成一个没人在用的。只要本地端口是10308,远程不是并不影响联机。

SakuraFrp创建隧道

创建后,可以看到系统自动为我们分配了一个端口

自动分配的端口

接下来重复刚才的动作,在同一个节点再创建一个隧道,这次选择 UDP隧道,然后把刚刚自动生成的远程端口号填进去,DCS需要保证TCP和UDP在同一端口(如果UDP被占了,要连同TCP一起换掉)。

UDP隧道填入同一端口

接下来把FRP下载到开了DCS服务器的电脑上。

FRP原版是个命令行软件,需要自己写配置文件,但SakuraFrp提供自己的FRP客户端,有傻瓜式图形界面,你可以直接在他们的网站上下载启动器,然后在网站 用户 页面找到自己的访问密钥,具体安装使用如果自己搞不懂可以看他们的官方文档。如果你坚持想用原版FRP,也可以在隧道列表那里导出配置文件(要把两个隧道的文件合并一下),不过相信到了这份上你也不会来看我的教程了。

在客户端里开启两个隧道后,切换到日志页面,应该能看到一行

1
  Tunnel/dcs_udp 使用 [xxxxxx.xxx:xxxxx] 来连接到你的隧道

直接复制方括号里的地址+端口,任何人把它输入到DCS里都能通过FRP代理连进你的服务器,不需要玩家做任何特殊的事情。

另外注意,FRP(包括Sakura版)因为软件特性(毕竟是在你的防火墙上打洞)经常触发杀毒软件误报,关于这个现象的详细解释可以看FRP GitHub页面上的讨论

简而言之:有人傻不拉几的用FRP在公网上开放自己的远程桌面端口,然后中毒了回来找作者理论

你也可以在该页面自行查看FRP源代码,评估其安全性,Sakura提供了Windows自带杀毒和火绒添加白名单的教程。当然,如果你既不想看源代码,也不信任FRP原作者或Sakura,请不要使用该软件,蛋卷和本网站不对使用FRP造成的一切后果负责。

不管你最终用的是SakuraFrp还是别的FRP服务,如果你觉得好用的话,建议尽快摆脱白嫖节点。这里往往充斥着大量Minecraft服务器,因为其坑爹的网络优化,只要人一多,即便带宽没占满,也会严重拉低整个节点的性能。

组建虚拟局域网

这是比较古典式的做法了,让所有想在一起玩的人处在同一个虚拟局域网中,需要大家都下载某个软件来组网。

你可能不信,曾经的浩方对战平台还活着,可以用来虚拟局域网联机。

更现代一些的软件有 Tailscale教程)和 Zerotier教程)。这两个软件对个人用户都是免费的,它们的先进之处在于会优先尝试让玩家直连以提高性能降低延迟,只有实在直连不上了再走代理服务器。不过因为众所周知的原因,这两者的节点基本都在海外,国内使用体验比较看脸,尤其是双方都深埋内网直连不上的时候。

如果服务器有IPv6,上述几种穿透和IPv6可以同时使用,
让有IPv6的人直连进入,连不上再用“歪门邪道”。

开设专用服务器

即便你只有一台电脑,只要核心数、内存和硬盘够的话,联机玩复杂的任务还是建议拿专用服务器版开服,自己再本地用客户端加进去(输入地址 127.0.0.1)。虽然客户端自带开服功能,但另开专用服务器最大好处有:

  1. 如果你自己的游戏喜闻乐见地游戏崩了,不至于带崩整个服务器(整个电脑蓝屏另说)
  2. 把服务器运算分到别的核心,客户端只管你自己玩的部分,提高帧率

如果你想用另一台电脑开的话,相比客户端,单开DCS服务器版并不需要很高的配置,近几年任意主流桌面级CPU+8G(小任务)/16G(大任务)内存都足够了。因为服务器端不显示3D图像,所以对显卡没有要求。

“具体”教程

在这下载,安装时可以选择只装某些地图以节省空间。

装好后桌面上两个图标,一个开服,一个管理已经开起来的服务器,傻瓜式图形界面。
设置服务器名、密码等以及选择任务都在里面,《我就不信你能看不懂》。

没了。

几个服务器版注意事项:

  • 服务器和客户端版在 C:\用户\<你的用户名>\保存的游戏 里有两个不同的文件夹,所以任务文件和社区模组都是分开的。需要手动复制过去。如果你想节省一点C盘空间,让服务器直接使用客户端的任务/模组的话,可以在 cmd 中为给服务器的文件夹创建两个软连接(把你的实际文件夹路径填进去)
1
2
mklink /j "C:\<服务器用的路径>\missions" "C:\<客户端用的路径>\missions"   
mklink /j "C:\<服务器用的路径>\mods" "C:\<客户端用的路径>\mods"  
  • 建议先随便载入一个任务,让服务器实际跑起来有反应了,再去调整具体设置。有时服务器可能需要自我重启,所以反应会有点慢。小服服已经很努力了,请给它足够的耐心。
  • 正式开任务时,建议确认任务载入后关掉服务器(不是停止,直接任务管理器彻底干掉)再重新打开。管理界面自带的重启功能(包括调整设置后的自动重启)容易导致单位加载出错。

常见问题

  • 连接时或进入飞机时提示“要求无修改的客户端”
    • 服务器开启了完整性验证,同时想加入的人游戏本身有修改导致红盾(自定义模组等)。
      这个ED的反作弊系统并不是特别靠谱,经常该报的不报,不该报的瞎报。如果你确定来你服务器玩的人都是认识的、值得信任的人,建议关掉完整性验证。
  • 我确定服务器在线,有的人能进,可部分玩家就是进不来
    • 让他们检查自己的游戏是否是OpenBeta开放测试版
  • 加入的玩家卡在读取界面非常久
    • DCS每次加入服务器,客户端都要重新下一遍服务器上的任务文件。如果你的任务文件非常的大,服务器上传带宽又不太行,自然会在这里卡很久。卡住的玩家可以打开自己的任务管理器看看是否还有网络活动,如果确实也没在下载东西,那应该才是真卡住了。
      如果你用了FRP,瓶颈可能在这哟~
  • 服务器内单位瞬移、浮空等问题
    • 两种可能:
      1. 上传带宽不够或网络丢包了。光看延迟无法反映这一点,可以打开任务管理器看看是否上传带宽被占满了。
        当然,如果你用了FRP,也有可能你连接的FRP节点被MC小鬼们干爆了。
      2. 服务器CPU性能不够,同时任务过于复杂运算不过来。同样,打开任务管理器,在CPU页面右键切换到分核心显示,看看是否有单核被吃满了(DCS服务器还没有应用多核心优化)。尽量降低任务复杂程度,同时不要让玩家使用集束/末敏弹。
  • 任务编辑器里正常运行的任务,开到服务器上就出BUG了
    • 专用服务器版和客户端(包括客户端开服)有时对同一个任务会有不同的理解,触发器和单位出生方式等可能会有差异。建议重要的任务除了本机自测之外,还要放到专门的服务器版上去测试。
  • 任务编辑器里放的单位,到服务器上变成了别的东西
    • 如果这个单位属于某个模组包,请确定服务器上也装了同样的模组,详见上面的“服务器版注意事项”。