有PING只能说明机器之间网络层通了,通讯错误(LINK-服务器间网络通讯错误)是应用层没握手成功。你判断的“虚拟机网络没弄好、服务没启动、改完没重启”方向是对的,按下面顺序收尾。
一、先确认服务是不是真起来了
虚拟机里进终端,别只看CRT窗口有字就以为好了。
Linux端执行:
ps aux grep -E "gamed authd gdeliveryd gs
uniquenamed"
看不到核心进程,就是没启动完或被中断。
再看端口监听:
netstat -tlnp grep -E "29000 29200
29400"
没监听等于服务端没开门,客户端当然通讯错误。
Windows宿主CMD里测:
telnet 虚拟机IP 29000
能连上才说明网关通,连不上先查防火墙和端口。
二、虚拟机网络模式对齐
常见一键端默认用VMnet8 NAT,子网192.168.200.0。
虚拟机内IP应是192.168.200.100(或端里写的固定IP)。
宿主机VMware Network Adapter VMnet8也要在同网段,别用桥接乱跳。
检查点:
虚拟网络编辑器→VMnet8→子网IP 192.168.200.0
虚拟机设置→网络适配器→自定义VMnet8
虚拟机里 ip addr 确认IP没变成169.254.x.x
宿主机 ping 192.168.200.100 有回包但游戏报错,就是服务/端口问题,不是网卡问题。
三、客户端配置再核对一遍
客户端路径:
诛仙\element\userdata\server\serverlist.txt
内容格式(按你端里说明):
服务器名,192.168.200.100,29000
别多空格、别带回车、别写127.0.0.1(虚拟机环境客户端在宿主,得填虚机IP)。
如果本机直连虚拟机内客户端,才用127.0.0.1。
四、防火墙和杀软必关
宿主机:关Windows Defender防火墙、关360/火绒/管家实时防护。
虚拟机内Linux执行:
systemctl stop firewalld
或 ufw disable
杀软容易把gamed、authd、登录器dll当木马删,去隔离区恢复并加信任。
五、改了配置没重启=白改
你提到“修改器械后没重启电脑”,这块最容易被忽略:
1. 改IP、改网卡、改虚拟机网络编辑器后
→ 重启VMware NAT Service / DHCP Service
→ 宿主机命令:services.msc 里重启VMware相关服务
→ 或者直接重启宿主机最干净
2. 改服务端conf、table.xml、authd配置后
→ 必须停掉CRT里./qd启动的进程
→ 重新./qd 或重新点一键启动
→ 等3-5分钟,别刚敲完就开登录器
3. 虚拟机改完网络
→ 重启虚拟机,不是只重启服务
六、数据库没起来也会伪装成通讯错误
MySQL/GSQL没连上,gamed起一半就卡死,端口也不听。
查:
MySQL进程在不在
数据库密码和gs.conf、gamedbd.conf、table.xml一致
日志里有没有 failed to connect db / can't bind port
有数据库报错先修库,再起游戏服务。
七、最快复位流程(照做)
1. 关客户端、关CRT
2. 宿主机关防火墙杀软
3. 重启电脑(清掉改配置后的脏状态)
4. 开VMware,启动虚拟机,等光标稳定
5. CRT连进去 ./qd 或点启动游戏
6. 等3-5分钟,虚拟机里ps看gamed/authd都在
7. telnet 29000通了再开客户端
8. 还报错就看gamed/log下gamesys.log、gdeliveryd.log
八、典型现象对照
能PING通+列表空白/维护中 = 服务没起完,再等
能PING通+LINK通讯错误 = 端口没监听或IP配错
能进到选角色断线 = 线路进程glinkd挂了,重启服务
改完IP第一次行后面又错 = 没重启VMware服务或虚机
杀软删文件后通讯错误 = 恢复gamed相关dll并重加信任
总结:
有PING只是过了第一关。通讯错误优先查:gamed/authd起没起、29000听没听、虚机IP和serverlist对没对、防火墙拦没拦、改完配置重没重启。把“重启虚拟机+重启宿主机网络服务+等满启动时间”这三步做全,大部分LINK错误直接消失。
九、再补几处容易漏的细节点
虚拟机选“我已复制/移动”后,MAC和IP可能变。
如果之前选过“复制”,虚机可能重新生成网卡,原192.168.200.100变成DHCP新地址。
进虚机用 ip addr 看实际IP,serverlist按实际IP改,别死认教程IP。
十、宿主机VMnet8网卡别被手动改坏
网络适配器里 VMware Network Adapter VMnet8 应该是:
IP自动获取 或 192.168.200.1
子网255.255.255.0
别手滑设成192.168.200.100,会和虚机抢IP,结果就是能PING但端口乱飘。
十一、CRT里启动顺序别乱
部分端必须先起数据库,再起authd,再起gamed,最后起gs。
一顿./qd其实内部有依赖,如果日志里看到:
authd not ready
db connection refused
can't register to auth
说明顺序崩了,停全部进程重来一遍。
十二、端口被占用也会假通讯错误
宿主机CMD:
netstat -ano | findstr "29000"
如果有其他程序占了,gamed绑不住端口,客户端连过来就是通讯错误。
关掉占用进程,或改服务端配置端口并同步serverlist。
十三、客户端别混端
用错客户端版本,serverlist对了也握手失败。
确认客户端是对应端配套版本,element补丁、patcher补丁都覆盖到位。
别拿官方最新客户端硬连老单机端。
十四、最后兜底
以上都做了还报错:
把虚拟机挂起→关闭→重启电脑→重开VMware→重新启动虚机→重新./qd→等5分钟。
单机端“重启大法”能解决一半玄学通讯错误,尤其是改过网络配置之后的脏缓存。
十五、一句话定位
PING通=网络层OK;通讯错误=应用层没通。
查三样:进程在不在、端口听没听、配置改完重没重启。
这三样对齐,LINK错误基本就没了。
一、先确认服务是不是真起来了
虚拟机里进终端,别只看CRT窗口有字就以为好了。
Linux端执行:
ps aux grep -E "gamed authd gdeliveryd gs
uniquenamed"
看不到核心进程,就是没启动完或被中断。
再看端口监听:
netstat -tlnp grep -E "29000 29200
29400"
没监听等于服务端没开门,客户端当然通讯错误。
Windows宿主CMD里测:
telnet 虚拟机IP 29000
能连上才说明网关通,连不上先查防火墙和端口。
二、虚拟机网络模式对齐
常见一键端默认用VMnet8 NAT,子网192.168.200.0。
虚拟机内IP应是192.168.200.100(或端里写的固定IP)。
宿主机VMware Network Adapter VMnet8也要在同网段,别用桥接乱跳。
检查点:
虚拟网络编辑器→VMnet8→子网IP 192.168.200.0
虚拟机设置→网络适配器→自定义VMnet8
虚拟机里 ip addr 确认IP没变成169.254.x.x
宿主机 ping 192.168.200.100 有回包但游戏报错,就是服务/端口问题,不是网卡问题。
三、客户端配置再核对一遍
客户端路径:
诛仙\element\userdata\server\serverlist.txt
内容格式(按你端里说明):
服务器名,192.168.200.100,29000
别多空格、别带回车、别写127.0.0.1(虚拟机环境客户端在宿主,得填虚机IP)。
如果本机直连虚拟机内客户端,才用127.0.0.1。
四、防火墙和杀软必关
宿主机:关Windows Defender防火墙、关360/火绒/管家实时防护。
虚拟机内Linux执行:
systemctl stop firewalld
或 ufw disable
杀软容易把gamed、authd、登录器dll当木马删,去隔离区恢复并加信任。
五、改了配置没重启=白改
你提到“修改器械后没重启电脑”,这块最容易被忽略:
1. 改IP、改网卡、改虚拟机网络编辑器后
→ 重启VMware NAT Service / DHCP Service
→ 宿主机命令:services.msc 里重启VMware相关服务
→ 或者直接重启宿主机最干净
2. 改服务端conf、table.xml、authd配置后
→ 必须停掉CRT里./qd启动的进程
→ 重新./qd 或重新点一键启动
→ 等3-5分钟,别刚敲完就开登录器
3. 虚拟机改完网络
→ 重启虚拟机,不是只重启服务
六、数据库没起来也会伪装成通讯错误
MySQL/GSQL没连上,gamed起一半就卡死,端口也不听。
查:
MySQL进程在不在
数据库密码和gs.conf、gamedbd.conf、table.xml一致
日志里有没有 failed to connect db / can't bind port
有数据库报错先修库,再起游戏服务。
七、最快复位流程(照做)
1. 关客户端、关CRT
2. 宿主机关防火墙杀软
3. 重启电脑(清掉改配置后的脏状态)
4. 开VMware,启动虚拟机,等光标稳定
5. CRT连进去 ./qd 或点启动游戏
6. 等3-5分钟,虚拟机里ps看gamed/authd都在
7. telnet 29000通了再开客户端
8. 还报错就看gamed/log下gamesys.log、gdeliveryd.log
八、典型现象对照
能PING通+列表空白/维护中 = 服务没起完,再等
能PING通+LINK通讯错误 = 端口没监听或IP配错
能进到选角色断线 = 线路进程glinkd挂了,重启服务
改完IP第一次行后面又错 = 没重启VMware服务或虚机
杀软删文件后通讯错误 = 恢复gamed相关dll并重加信任
总结:
有PING只是过了第一关。通讯错误优先查:gamed/authd起没起、29000听没听、虚机IP和serverlist对没对、防火墙拦没拦、改完配置重没重启。把“重启虚拟机+重启宿主机网络服务+等满启动时间”这三步做全,大部分LINK错误直接消失。
九、再补几处容易漏的细节点
虚拟机选“我已复制/移动”后,MAC和IP可能变。
如果之前选过“复制”,虚机可能重新生成网卡,原192.168.200.100变成DHCP新地址。
进虚机用 ip addr 看实际IP,serverlist按实际IP改,别死认教程IP。
十、宿主机VMnet8网卡别被手动改坏
网络适配器里 VMware Network Adapter VMnet8 应该是:
IP自动获取 或 192.168.200.1
子网255.255.255.0
别手滑设成192.168.200.100,会和虚机抢IP,结果就是能PING但端口乱飘。
十一、CRT里启动顺序别乱
部分端必须先起数据库,再起authd,再起gamed,最后起gs。
一顿./qd其实内部有依赖,如果日志里看到:
authd not ready
db connection refused
can't register to auth
说明顺序崩了,停全部进程重来一遍。
十二、端口被占用也会假通讯错误
宿主机CMD:
netstat -ano | findstr "29000"
如果有其他程序占了,gamed绑不住端口,客户端连过来就是通讯错误。
关掉占用进程,或改服务端配置端口并同步serverlist。
十三、客户端别混端
用错客户端版本,serverlist对了也握手失败。
确认客户端是对应端配套版本,element补丁、patcher补丁都覆盖到位。
别拿官方最新客户端硬连老单机端。
十四、最后兜底
以上都做了还报错:
把虚拟机挂起→关闭→重启电脑→重开VMware→重新启动虚机→重新./qd→等5分钟。
单机端“重启大法”能解决一半玄学通讯错误,尤其是改过网络配置之后的脏缓存。
十五、一句话定位
PING通=网络层OK;通讯错误=应用层没通。
查三样:进程在不在、端口听没听、配置改完重没重启。
这三样对齐,LINK错误基本就没了。

