服务器连接失败是传奇架设里最常见的报错,现象覆盖登录器点登录后提示无法连接服务器、连接被关闭、卡在正在连接、服务器无响应。多数情况下不是登录器的事,而是服务端程序没起全、IP没填对、端口被占或防火墙拦了。少数情况是数据库没连上导致登录请求被网关丢弃。按下面顺序走一遍,基本不用重装任何东西。
先看服务端窗口全没全
登录连接会经过登录网关、登录服务器、数据库、游戏网关。任何一个没启动或闪退,客户端就会显示连接失败。
单机或局域网环境下至少要保证这些进程在跑:
LoginSrv 登录服务
LoginGate 登录网关
DBServer 数据库服务
M2Server 主程序
RunGate 游戏网关
每个窗口没有红字报错才算正常。M2闪退会连带RunGate一起退,所以登录器能出列表但点登录就失败。个别端还有LoginSrv单独一个窗口叫LoginDB或AccountSrv,也要看。
启动顺序不能乱。服务端程序启动顺序要求先数据库服务、再LoginSrv、再LoginGate、再M2、最后RunGate。顺序乱了可能导致网关连不上登录服务,但窗口本身不报错,登录器那边就是连不上。
IP地址不一致是头号原因
登录器列表文件里的IP、登录器配置器里的IP、LoginGate.ini里的IP、!Setup.txt里的IP,四个地方必须完全一样。单机全部写127.0.0.1,不要写192.168.x.x,不要写电脑名。
列表文件常见格式:
区名127.0.0.1
7000
如果列表里写的是公网IP,而服务端监听的是127.0.0.1,点登录直接提示连接失败。反过来列表写127.0.0.1但配置器绑的是0.0.0.0,多数单机也能勉强通,但某些引擎会挑。
!Setup.txt 里的ServerIP字段只影响M2内部连接,单机必须127.0.0.1。外网环境则要填公网IP或0.0.0.0,具体看引擎版本。
端口被占或改乱
登录网关口默认7000,角色选择口默认7100,游戏运行口默认7200。登录器连接服务器实际走的是7000这一层。提示无法连接服务器时先查7000有没有被占用。
管理员CMD执行:
netstat -ano | findstr 7000
如果有非服务端进程占用7000,结束掉。常见占用源是迅雷、酷狗、IIS,以及上次服务端没关干净的残留M2或LoginGate进程。
如果改过端口,登录器配置器、列表文件、LoginGate.ini三处要同步改。只改网关不登录器必然失败。同一个端口也不能被两个服务端同时占,开第二台服务端前先把第一台全关。
登录网关没监听
LoginGate窗口正确启动后会显示监听地址和端口,类似Listening on 127.0.0.1:7000。如果窗口是空的或直接提示端口失败,说明网关没起来。
网关没起来的原因多数是端口被占、网关文件被杀软删了、配置文件编码乱了。配置LoginGate.ini时用记事本或Notepad++存成ANSI编码,别存UTF-8带BOM。
杀软拦了也是隐形拦路虎
Win10/11自带杀毒和第三方杀软会把LoginGate.exe、M2Server.exe、登录器exe当作风险文件隔离。隔离后进程还能开,但网络通信被控,表现就是服务器连接失败。
处理办法:
打开杀软隔离区恢复这些exe
把服务端整个目录和客户端登录器加入白名单
临时关闭防火墙和实时保护测一次
能连了就恢复保护,保留白名单设置
防火墙要放行的端口是7000/7100/7200。单机测试时直接关掉Windows Defender防火墙最快。外网服务器还要额外去安全组放行同等端口,光关本地防火墙没用。
数据库没连上也会表现成连接失败
DBServer窗口正常不等于数据库可用。M2或LoginSrv在连接数据库失败时,有的服务端会直接启动失败,有的启动成功但接收登录请求后没法验证账号,网关收不到回应就主动断开,客户端显示连接失败。
用DBC2000的服务端检查BDE里HeroDB的状态是否打开,路径是否指向Mud2/DB,路径不能有中文。
用MySQL的服务端打开DBServer配置,确认DBIP为127.0.0.1,账号密码能连上。Navicat里如果能进数据库,服务端却连不上,多半是DBIP写错或端口不是3306。
账号表损坏时登录请求写入失败也会表现成连接失败。Navicat里对Account或Mir2库执行修复表操作,再重启DBServer。
登录器和引擎不匹配
用GOM端连GEE服务端,或HERO端连Blue服务端,列表能出但连接必失败。登录器和服务端引擎的通信端口号不一样,网关协议也不一样。正确做法是用服务端自带的登录器配置器重新生成登录器,别拿网上万能登录器。
生成登录器时注意:
引擎类型选对应引擎
IP填127.0.0.1
端口填7000
单机模式勾上
游戏名称要和!addrtable.txt里一致
部分引擎生成登录器时会自动生成配套的LoginGate.dll,这文件要复制到服务端LoginGate目录覆盖旧文件。不覆盖就出现登录器跟网关握手失败,现象也是连接失败。
配置文件编码和中文乱码
改过!Setup.txt或列表文件后变成连接失败,大概率是存成了UTF-8。引擎读取UTF-8带BOM文件时会把第一个不可见字符当作内容,IP或端口字段解析错,导致连接发到错误地址。
全部配置存成ANSI编码。列表文件每行结束后不要留空格,区名和IP之间用竖线分隔。不要用全角竖线或全角冒号。
外网连接失败的额外项目
局域网或公网连不上时,除了上面所有原因,还要排查:
路由器端口映射是否指向正确内网IP
云服务器安全组是否放行7000端口
本机IP是否变化导致映射失效
LoginGate监听地址是否写死127.0.0.1
服务端是否配置了动态IP选项
家庭宽带进入光猫路由后,默认运营商网络禁止外部直接访问,需要进路由器后台做端口映射。映射的协议要选TCP和UDP都勾上,外网端口和内网端口都是7000。只映射7000不够,7100和7200也得一起映射。
登录器列表放在本地txt外网玩家读不到,要把列表传到可访问的服务器地址或使用客户端内嵌列表。外网列表文件用记事本编辑同样存ANSI,否则中文区名乱码也可能让玩家点不了连接。
M2主程序卡死的情况
M2窗口假死时网关显示连接正常,但登录请求没人处理。客户端表现就是服务器连接失败或卡在验证中。M2假死原因多是脚本死循环、插件冲突、怪物数量溢出。重启M2前先看窗口底部有没有卡在一行输出上。卡在某个地图加载或某个脚本刷红字就先去修那个地图或脚本。
几个快速定位手段
想要快速知道是服务端问题还是登录器问题,用telnet测端口:
telnet 127.0.0.1 7000
能连上说明网关在,问题在登录器或列表配置。
连不上说明网关没起或端口不对。
也可以用服务端自带的登录测试工具或直接打开浏览器访问列表地址,看列表文件能否正常下载。列表打不开就先把列表放本地,用登录器的本地读取模式。
排查顺序总结
确认所有服务端窗口在跑没红字
确认列表IP是127.0.0.1:7000
确认LoginGate监听窗口无报错
cmd查7000端口没被占
防火墙全部关闭测一次
杀毒隔离区恢复文件
重生成登录器并覆盖LoginGate
数据库连接状态确认
配置项文件存成ANSI编码
外网环境映射端口到公网
常见现象对照
列表出不来或空白:列表地址错、本地列表没起
点登录提示连接失败:7000端口不通、登录器IP没对齐
连接被关闭:网关密码错、引擎不匹配
卡验证中:数据库没连上、M2假死
列表能读但连不上:只映射了UI端口没映射网关端口
外网只有本机能玩:路由器没映射或安全组没放行
多半情况改一个IP或开一个端口就通。别拿重装系统、重装服务端当第一方案。先netstat查端口,再telnet测7000,这一步能区分百分之九十的故障范围。
传奇服务器连接失败原因排查与解决方案
来源:
作者:
点击:

