1
0
0
传奇世界开外网,到底改哪些文件?
文章摘要
|
实战总结。目标:让一台只有局域网/单机配置(所有配置文件 IP 全是 127.0.0.1)的星河引擎(传奇世界系)服务端,通过 Tailscale 虚拟组网 让其他电脑远程登录游玩。 文中 IP:
100.94.135.103为本机 Tailscale 地址,100.120.199.120为远程测试电脑的 Tailscale 地址。服务器名以「凡尘问道」为例,请替换为你自己的。
一、先说结论:核心原则只有一条
客户端要连的地址 → 用 Tailscale IP;进程之间的内部通信 → 永远保持 127.0.0.1。
很多人开外网失败,就是"把所有 127.0.0.1 全部替换成外网 IP"。这是大错。 星河引擎是"多进程 + 网关"架构,LoginSrv / DBServer / Mir200(M2) / 三个 Gate 全部跑在同一台机器上,它们之间的连接必须走 127.0.0.1(本机回环);只有下发给客户端、以及客户端主动来连的地址,才需要填 Tailscale IP。
二、架构与登录链路(搞懂这个,配置就不会乱)
客户端(登录器) ──Tailscale──> 100.94.135.103:7001 LoginGate(登录网关)
│ 内部:127.0.0.1:5501
▼
LoginSrv(账号/登录服务器) ──> IDDB 账号库
│ 下发服务器路由表 addrtable
客户端 ──> 100.94.135.103:7101 SelGate(角色网关) ──内部:127.0.0.1:5101──> DBServer(数据库)
客户端 ──> 100.94.135.103:7201 RunGate(游戏网关) ──内部:127.0.0.1:5001──> Mir200(M2 引擎)
端口算法(官方说明书):登录器列表端口 = 基础通讯端口 + 端口ID + 7000
- 基础通讯端口
BaseProt=0→ 登录网关7001、角色网关7101、游戏网关7201。
对客户端而言,整个链路就是三个端口:7001 登录 → 7101 选角色 → 7201 进游戏。
三、重点:逐个文件的改动清单
A. 必须改成 Tailscale IP 的文件(对外下发/客户端直连)
| # | 文件 | 字段 | 改法 |
|---|---|---|---|
| 1 | 根目录 Config.ini |
ExtIPaddr |
填 Tailscale IP。这是源头:GameCenter"一键设置 → 服务器线路设置 → 游戏服务器IP地址"保存后写到这里 |
| 2 | 根目录 serverlist.ini |
Server= / ServerIP= / ServerPort= |
服务器名、IP、端口三项全改(见第四节客户端说明) |
| 3 | LoginSrv\!addrtable.txt |
路由表行 | 服务器名 路由标识 内部IP 外部IP 网关IP:端口 → 凡尘问道 Title1 127.0.0.1 100.94.135.103 100.94.135.103:7101。注意:第 3 列内部 IP 保持 127.0.0.1,只改第 4、5 列为 TS IP |
| 4 | Dbserver\!serverinfo.txt |
单行配置 | 127.0.0.1 100.94.135.103 100.94.135.103 7201。同样:第 1 个 127.0.0.1 是内部地址别动,后两个填 TS IP |
| 5 | LoginSrv\!serveraddr.txt |
允许连接的 IP 白名单 | 写成两行:127.0.0.1 + 100.94.135.103(本机 + TS 地址都要,缺一不可) |
引擎在启动时,会依据根
Config.ini的ExtIPaddr自动回写 addrtable / serverinfo / 各网关配置。所以第 1 步一定先做,后面几个文件核对即可。
B. 必须保持 127.0.0.1 的文件(内部通信,千万别改成 TS IP)
| 文件 | 关键字段 | 说明 |
|---|---|---|
LoginSrv\Logsrv.ini |
GateAddr / ServerAddr / DBCServerAddr 及各 Server= |
登录服务器监听本机 |
LoginGate\Config.ini |
ServerAddr1=127.0.0.1 |
登录网关→登录服务器(5501),对外 GatePort1=7001 监听 0.0.0.0 |
SelGate\Config.ini |
ServerAddr1=127.0.0.1 |
角色网关→数据库(5101),对外 GatePort1=7101 |
RunGate\Config.ini |
ServerAddr1=127.0.0.1 |
游戏网关→M2(5001),对外 GatePort1=7201 |
Mir200\!Setup.txt |
DBAddr / IDSAddr / MsgSrvAddr / LogServerAddr / DBCServerAddr |
M2 引擎全部内部连接,一律 127.0.0.1 |
Dbserver\dbsrc.ini |
ServerAddr / GateAddr / IDSAddr |
数据库服务器内部连接 |
Mir200\!runaddr.txt、Mir200\!Servertable.txt |
127.0.0.1 |
引擎内部回环文件 |
C. 踩坑:这两个地方反而要"改回" 127.0.0.1
| 文件 | 情况 | 处理 |
|---|---|---|
Mir200\!Setup.txt |
启动器一键设置会把外网 IP 回写进 IDSAddr / MsgSrvAddr / LogServerAddr / DBCServerAddr 四项 |
若发现这四项是 TS IP(或任何外网 IP),改回 127.0.0.1。否则 M2 连不上登录服务器 → 玩家"登录成功但卡在登录界面" |
LoginSrv\Logsrv.ini |
DBCServerAddr 残留过期局域网 IP(如 192.168.1.117) |
改回 127.0.0.1,清除指向不存在机器的地址 |
四、防火墙(最容易漏的一步)
- Windows 默认入站拦截,服务端三个对外端口必须放行,且规则要同时覆盖 Private 和 Public 配置文件(Tailscale 虚拟网卡可能被归为 Public/Private 任一类别):
New-NetFirewallRule -DisplayName "游戏网关TCP-7001" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 7001 -Profile Any -Enabled True
New-NetFirewallRule -DisplayName "游戏网关TCP-7101" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 7101 -Profile Any -Enabled True
New-NetFirewallRule -DisplayName "游戏网关TCP-7201" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 7201 -Profile Any -Enabled True
- 非管理员 PowerShell 直接建规则会报"拒绝访问",需以管理员身份运行(或触发 UAC 提权)。
五、客户端:登录器列表(本次最终卡住的元凶)
引擎官方说明书原话:"启动器中的服务器名字和 IP 必须和登录器列表中的服务器名字和 IP 一致,否则无法进入游戏。"
客户端登录器目录下的 serverlist.ini 内容必须为(保存为 ANSI/GBK 编码,无 BOM):
[凡尘问道]
Server=凡尘问道
ServerIP=100.94.135.103
ServerPort=7001
三个关键点:
- 服务名必须和服务端启动器一致(本例「凡尘问道」)。只改了 IP 没改名字 → 表现是"提示登录成功,然后卡住",和 M2 回写坑的症状一模一样。
- 端口是 7001 不是 7000:按端口算法,登录网关 = 7000 + 端口ID(1) = 7001。
- 给多台电脑开服:把服务端根目录这份已改好的
serverlist.ini直接拷到每台客户端登录器目录覆盖即可。
六、标准操作顺序(从全 127.0.0.1 到开服成功)
- 停止服务端(改配置时服务必须停止,否则启动器/引擎回写会覆盖你的修改——本次实战就因此被覆盖过一次)。
- 开 GameCenter.exe → 一键设置 → 服务器线路设置 → 游戏服务器IP地址填 Tailscale IP → 保存配置(写根
Config.ini的ExtIPaddr)。 - 核对 A 表第 2~5 项(serverlist.ini / addrtable / serverinfo / serveraddr)。
- 核对 C 表(
!Setup.txt四项内部地址、Logsrv.ini残留 IP 是否为 127.0.0.1)。 - 添加防火墙 3 条入站规则(管理员)。
- 启动服务端。
- 客户端登录器
serverlist.ini改为同名 + TS IP + 7001。 - 测试登录。
验证手段(服务端运行中执行):
netstat -ano | findstr 7001→ 应为0.0.0.0:7001监听;- 客户端登录过程中,应依次看到它对 7001 的连接建立、随后对 7101 的连接建立——卡在 7001 不继续,就是列表/名字问题或 M2 未注册。
七、排障速查表
| 现象 | 根因 | 处理 |
|---|---|---|
| 完全连不上、超时 | 防火墙未放行 / IP 端口写错 | 放行 7001/7101/7201;核对 serverlist.ini |
| 登录成功 → 卡在登录界面 | ① M2 的 !Setup.txt 四项内部地址被回写成外网 IP(M2 未注册进登录服务器)② 客户端列表服务名与启动器不一致 |
① 改回 127.0.0.1 并重启服务端 ② 客户端列表改为「凡尘问道」同名 |
| 能进选区/选人但进不了游戏 | 游戏网关 7201 防火墙未放行,或 serverinfo 网关字段错误 | 放行 7201;核对 !serverinfo.txt 第 4 列为 TS IP:7201 |
八、经验小结
- 分清"对外"与"对内":所有
ServerAddr/GateAddr/IDSAddr这类"进程连进程"的字段保持 127.0.0.1;只有 addrtable / serverinfo / serverlist.ini 中下发给客户端的字段用 TS IP。 - 启动器会回写:
ExtIPaddr是一键设置的源头,会在启动时把 IP 写进多个文件;同时它也可能把外网 IP 误写进 M2 的内部地址——所以"启动后再检查一遍!Setup.txt"是好习惯。 - 服务名一致性是星河引擎的铁律,改完 IP 一定要同步检查服务名。
- 全程配置编码用 GBK/ANSI(无 BOM),UTF-8 带 BOM 会让引擎读乱。
凡尘问道 · Tailscale 登录链路(100.94.135.103)
其他 TS 电脑 → Tailscale 隧道 → 本机网关端口 → 进入游戏
客户端
其他 TS 电脑(登录器)
目标 100.94.135.103:7001
本次改:serverlist.ini
IP+端口+服务名
IP+端口+服务名
→
登录网关 LoginGate
端口 7001(对外监听)
内部 → 登录服务器 LoginSrv :5501
原有正确:外部IP/网关
100.94.135.103:7101 下发客户端
100.94.135.103:7101 下发客户端
本次改:Logsrv.ini 清除
过期局域网 IP
过期局域网 IP
→
角色网关 SelGate
端口 7101(对外监听)
内部 → 数据库服务器 DBServer :5101
原有正确:!serverinfo.txt
100.94.135.103:7201 下发客户端
100.94.135.103:7201 下发客户端
→
游戏网关 RunGate
端口 7201(对外监听)
内部 → M2 引擎 Mir200 :5001
→
M2 游戏引擎
GateAddr=0.0.0.0(原有正确)
✔ 进入游戏
防火墙(本次新增):
入站 TCP 7001 / 7101 / 7201 全部放行(之前为 0 条放行规则,远程连接被默认拦截)
本次改动
原有已正确
本次改动明细
① serverlist.ini:ServerIP 127.0.0.1→100.94.135.103;ServerPort 7000→7001;服务名 传奇世界→凡尘问道
② LoginSrv\Logsrv.ini:DBCServerAddr 192.168.1.117→127.0.0.1(清过期局域网IP)
③ Windows 防火墙:新增「凡尘问道-游戏网关TCP-7001/7101/7201」入站放行规则


-gtespqnk.jpg)