私服折腾日记01:记一次C9一键端到物理端的迁移

selph
selph
发布于 2020-10-05 / 921 阅读
0
0

私服折腾日记01:记一次C9一键端到物理端的迁移

前言

从百度网盘里翻出了不知道啥时候存的C9一键端,是个只有4个职业的老版本,碰巧刚好手里有个还没到期的云服务器,于是,故事,便开始了

从昨天上午10点多到今天上午10点多,几乎一整天都在折腾迁移,有时候吧,有一些哪怕很不起眼的小问题,也会让不懂的人(没错,就是我)花大量时间去研究

这里记录一下迁移的过程和遇到的坑,不同版本的C9操作步骤应该也大致相同,这里以我实际操作的为准

从一键端到物理端

由于服务器网速比较慢,所以在服务器上搭建之前,要先在虚拟机里模拟好,然后在上传到服务器去操作。

考虑到服务器性能问题,我选择了云服务器所能选择的最低版本的Windows Server 2008 R2,虚拟机也搭建的是这个,可能你想问了,为啥是Windows不是Linux呢,因为我的这个一键端就是Windows Server系统的!

这是我第一次折腾一键端到物理端的迁移,所以需要些许指导,首先感谢这位师傅的文章:

https://www.iopq.net/forum.php?mod=viewthread&tid=17042059

他这里主要讲的是修改默认数据库账号密码,并修改服务端配置文件,其中是以手工在物理端上搭建为主要流程来进行介绍的,但现在云服务器都会自带一个安全组,就算不改数据库默认账号密码,只要不开放数据库端口,也应该没事,所以我就跳过这个阶段了(安全考虑,只开放最少必要的端口,3389远程端口要注意防止爆破,密码强度设置高一点,然后所有操作都3389连接进去再进行)

另外我这也算是补全一下这位师傅的物理端到服务端迁移的步骤吧

架设的准备工作

  • 云服务器:Windows Server 2008 R2(配置至少1H2G1M吧)
  • 数据库软件:SQL Server 2008 R2
  • 一键端的C9_SERVER文件夹(打压缩包)
  • 配套的客户端及其登录器
  • 文本替换工具

架设步骤

  1. 上传服务端压缩包、SQLServer安装包、文本替换工具

  2. 硬盘分区分出D盘(10G足以,用来装C9相关文件的),解压服务端到D盘

  3. 安装SQL Server,一路默认下一步即可

  4. 打开数据库(服务器名称默认的是.\sqlexpress)

  5. 还原C9数据库,右键点击左边的数据库,点击还原数据库

    image-20201005205231254

    这里选择源设备,然后选择bak备份文件,上面的目标数据库填写和备份文件一样的名字即可,然后4位置会有一个打钩框,记得勾上,重复操作,直到把8个数据库全部还原。

    不出意外的话,bak备份文件应该在服务端内的某个目录里,我这里是DB目录

  6. 修改数据库登录权限,右键点击左边对象资源管理器里面的.\sqlexpress,属性,安全性,服务器身份验证,SQL Server和Windows身份验证模式

  7. 新增数据库用户,用户名和密码可以从服务端的配置文件里找到

    (游戏服务端目录下的ServerData目录的LMSConfig.dat,这里面有类似这样一行的内容:

    <ConnectDB Name="Unity" ID="XX" Pass="XXX" Address="127.0.0.1,1433" DBName="C9Unity" />
    

    这里的ID就是连接数据库用的账号,Pass就是密码。)

  8. 配置数据库网络端口,SQL Server配置管理器

    image-20201005205951250

    点开这个玩意,选择TCPIP点击启用,然后IP地址这个页面把端口都写1433,启用都写是,最底下的端口也要写1433,然后重启SQL Server即可,到此数据库的配置就此结束了

  9. 修改客户端登录器IP,我这里客户端登录器是一个bat文件,右键编辑修改IP即可

  10. 用文本替换软件,将服务端默认的IP改成我们服务器的外网IP

  11. 开启服务端,服务端目录下应该有开启服务器的批处理文件

  12. 关闭防火墙,有安全组了,防火墙关了就关了吧,反正知道这个服务器的也没几个人

  13. 安全组放通全端口(先全放通,游戏运行正常了再研究应该开放哪几个端口,后面会讲)

  14. 开启游戏

到此,不出意外的话,虚拟机能正常进入游戏,物理机服务器会卡在连接中,然后掉线(我是虚拟机和物理机服务器同步操作的,发现发生这个结果)

Windows 网卡端口转发

这里就是我这回遇到的最大的一个坑了!!

划重点!!!划重点!!!

物理端服务器有一个公网IP和私网IP,不能监听到公网IP,内置的网卡绑定的是私网IP,当C9服务端发现客户端请求的地址和自己监听的地址不一致的时候,就不让客户端连接进去,所以这里我们的客户端请求是连接不进去的!!

到这里,经过大大佬提醒,可以通过创建虚拟网卡绑定公网IP,让私网IP得到的请求转发到虚拟网卡即可。

操作步骤如下:

  1. 控制面板,设备管理器,操作A,添加过时硬件,手动安装,选择网络适配器

    image-20201005210950159

    选择这个,安装完以后,修改这个网卡的IP为公网IP

  2. 关键部分到了,要怎么把一个网卡的请求转发到另一个网卡呢?可通过以下命令来实现

    #这里是1.1.1.1 3389端口转发到2.2.2.2 3389端口
    netsh interface portproxy add v4tov4 listenaddress=1.1.1.1 listenport=14941 connectaddress=2.2.2.2 connectport=3389
    
    #这里是取消上面的端口转发
    netsh interface portproxy delete v4tov4 listenaddress=1.1.1.1 listenport=14941
    
    #查看已经设置了哪些端口转发
    netsh interface portproxy show v4tov4
    

    根据这个命令去转发就行了

  3. 那么问题来了,我们需要转发哪些端口呢?我们点开我们要运行的启动服务器的批处理脚本对应的配置文件(比如我这里启动时start_min.bat,对应的配置文件就是min_config目录下的文件)通过查找功能,找到有PublicIP的行所写了的端口,只要是写了的全部都去设置转发!不然游戏里有些功能用不了

到此为止,再去运行一下客户端,不出意外的话应该可以连接成功了

总结

这个过程真是太折腾了,也侧面发现了我存在的一些问题,当我发现物理机服务端用客户端连接不上去的时候,竟然无脑怀疑是配置文件哪里配置的不对,没有冷静下来缕清思路慢慢排查,这里花了我很多时间,其实可以在能运行得了的虚拟机上改改配置文件来试试,这样可以有效减少无效测试浪费的时间

然后抱怨一句,就是SQLServer还原数据库,还原8个!!还只能鼠标点!!在虚拟机和物理机多次从零开始的尝试,手都点废了好不!!

我想把从这里折腾学到的东西写成一个系列,来分享出来,后面会更新游戏修改、游戏外挂等等相关内容,有兴趣的同学可以关注一下哦

感谢大家的阅读,如有问题,还望指出,如有疑问,可以在下方留言。


评论