传奇服务端登录网关角色网关多IP部署:双线监听端口映射排障详解

来源: 作者: 点击:
登录网关负责客户端账号连接后进账号服务,角色/选人网关负责选区、建角色、选角色后把会话交给后端数据库和游戏逻辑。多IP通常出现在双线双网卡、云主机多弹性IP、单机多区不同公网地址等场景。核心原则是所有网关监听地址、LoginSrv地址表、DBServer/角色服务地址表、M2的Setup、登录器列表五处IP和端口必须互相闭环,任意一处写127.0.0.1或内网IP而玩家用公网访问,就会卡登录、不开门、选人后掉线。

一、两套网关的职责边界

登录网关LoginGate:接客户端TCP登录请求,按配置把账号校验流量发给LoginSrv/LoginSvr。多实例时可每个实例监听不同IP和端口,再在账号地址表里登记对应线路。开源架构里它做客户端监听、会话队列、后端连接池、心跳和超时;传统 heroic 里主要改Config的ServerAddr/GatePort、LoginSrv的!addrtable和!serveraddr。

角色网关SelGate/选人网关:部分版本叫SelGate,部分整合到RunGate/角色服务。它处理“选哪个区、哪个角色、创建/删除角色”,再通知DBServer和后续游戏网关。选人卡、进角色黑屏、选完不进游戏,优先查SelGate绑定IP、后端DBSvr地址、serverinfo/servertable、M2的RunAddr/SelectAddr类配置。

游戏网关RunGate/GameGate不直接等于角色网关,但选人后进入地图的流量会走它;多IP排障时三套网关要一起看,不能只改登录网关。

二、多IP三种落地方式

1. 单进程监听全网卡

服务器有多IP但不想分实例,网关配置监听0.0.0.0,由操作系统按来访目的IP分发。M2/Setup可设ServerIP=0.0.0.0,LoginGate/GameGate的ListenIP设0.0.0.0。优点配置少;缺点客户端用哪个公网IP来都进同一个网关,不能在网关层按线路做限速、白名单、独立日志。云主机多弹性IP、单网卡多辅助IP时最常用。

示例片断:
LoginGate/Config.ini
ListenIP=0.0.0.0
ListenPort=7000
后端LoginSrv地址=127.0.0.1或内网IP,端口按原配

SelGate/Config.ini
GateAddr=0.0.0.0
GatePort=7100
ServerAddr=127.0.0.1
ServerPort=后端DB/角色服务端口

2. 按线路复制多份网关,各绑一IP

双线电信+网通、双公网IP、要分线路统计连接数时用。LoginGate复制为LoginGate电信、LoginGate网通;SelGate同样复制。每份配置绑各自公网IP,端口必须错开,再在LoginSrv地址表给两个Title分别指向不同网关IP:端口。

传统 heroic 示例:
LoginGate电信:ServerAddr=电信公网IP,GatePort=7000
LoginGate网通:ServerAddr=网通公网IP,GatePort=7002
SelGate电信:ServerAddr=电信公网IP,GatePort=7100
SelGate网通:ServerAddr=网通公网IP,GatePort=7101
LoginSrv\!addrtable.txt
Title1 电信IP 电信IP 电信IP:7100
Title2 网通IP 网通IP 网通IP:7101
LoginSrv\Logsrv可设GateAddr=0.0.0.0接收多网关;!serveraddr补充网通IP。

登录器列表按线路出两条:
电信区名 电信IP 7000
网通区名 网通IP 7002
这样玩家选对应线路,账号走对应登录网关、选人走对应SelGate,避免跨网回源。

3. 多区多实例完全隔离

一机开多区或电信网通做两个独立区,不共享M2、DB、网关。每份MirServer目录独立,数据库独立(HeroDB/HeroDB2等),端口段递增。一区电信IP+基础端口,二区网通IP+偏移端口,LoginSrv/SelGate/RunGate各一套。优点隔离故障、互不影响;缺点进程多、配置繁、日志分散。适合同时运营不同版本或不同线但数据不互通。

三、LoginSrv与DBServer地址表对应

LoginSrv!addrtable:关联区名、标题编号、内网/公网IP、网关IP:端口。多IP时每行一个线路,格式保持“区名 TitleX 内网或本地IP 公网IP 公网IP:角色/登录端口”。只写内网会导致外网输完账号不开门;只写公网但网关没监听该公网IP,会连不上。

DBServer相关多IP看serverinfo/serverinfo.txt和角色网关后端地址。双线示例会给电信、网通分别一组游戏/角色端口,例如电信7200/7300/7400、网通7500/7600/7700;SelGate把请求按ServerIndex转给对应后端。改完要确认DBServer的GateAddr是0.0.0.0还是指定IP,指定IP就必须和SelGate后端配置一致。

M2/Mir200!Setup.txt的ServerIP、ServerAddr、SelectAddr、RunAddr等按引擎不同名字不同。外网多IP不要把所有地方都写死某一个公网IP;若本机内部通信走127.0.0.1,对外网关走公网,就分层写:网关对外绑公网,网关对M2/DB走127.0.0.1或内网,M2对外列表走公网。

四、双网卡双默认网关避坑

服务器两张网卡分别接电信、网通,两个网卡都填默认网关会造成路由表冲突,部分玩家能登部分不能登、网通用户绕电信回包丢连接。做法:主线路网卡填默认网关,副线路不填默认网关,用静态路由把副线路目标网段指到副线路网关;或用策略路由按源IP决定出站网卡。例如副线路只服务网通公网IP,来自网通IP的回包强制走网通网卡,避免非对称路由。

云服务器多弹性IP若不在同网卡,需看云厂商策略路由和弹性网卡文档;安全组入站要分别对每个公网IP放行对应TCP端口,不能只放行其中一个IP的端口。

五、端口规划与防火墙

传奇常用参考:登录网关7000/7002类,角色/Select/SelGate 7100/7101类,DBServer到角色服务、游戏网关7200/7201/7202类,微端8000类,具体以引擎配置为准。多IP多实例必须端口不重复:同机两份LoginGate不能用同端口绑不同IP除非各自配置明确;同机两份SelGate同理。

自查命令:
查看监听:netstat -ano | findstr :7000、:7100、:7200
查看占用PID:tasklist /fi "PID eq 具体数字"
外网连通:从另一网络telnet 公网IP 7000、telnet 公网IP 7100,能进黑屏说明TCP通,应用层再查配置
Windows防火墙、云安全组、路由器映射都要放对应TCP;只映射7000不映射7100/7200会能登录但选人黑屏或进图卡。

路由器端口映射:外网IP:公网端口 → 内网服务器IP:网关监听端口。若网关监听127.0.0.1,映射内网IP也连不上,必须改成内网IP或0.0.0.0;若网关监听公网IP但云主机实际只绑定内网弹性IP,要按云厂商转发规则处理。

六、多IP常见故障对照

输账号后不开门:LoginSrv!addrtable只内网、登录器列表外网IP错、7000通但7100不通、M2未把公网IP写进选区地址。
选人界面卡或进不去:SelGate未启动、SelGate绑127.0.0.1而外网访问、7100被占、DBServer后端地址不对、角色服务连不上FDB/数据库。
电信能登网通不能登:网通网关未启、网通IP未进!addrtable、网通网卡无静态路由、云安全组未放网通弹性IP端口。
选完角色黑屏进图不动:RunGate/GameGate多IP未对应、7200类游戏端口未映射、M2的RunAddr只允许127.0.0.1、客户端补丁PAK与版本不匹配。
部分IP能登部分不能:服务器多IP但默认网关只有一个且回包走错网卡、运营商对某个IP限速/QoS、网关IP白名单只加了一组。
日志定位:LoginGate看客户端连接数和后端重连;SelGate看选人请求、DB返回、会话超时;M2看SelectChar、RunGate、IP限制、非法包。开源版还可看LoginSvr心跳、Session超时、最大连接配置。

七、配置检查清单

改多IP前备份LoginGate、SelGate、RunGate、LoginSrv、DBServer、Mir200!Setup、引擎配置器全部ini/txt。
先定拓扑:单监听0.0.0.0、双线双网关、还是多区多实例。
登录网关对外IP+端口、SelGate对外IP+端口、后端LoginSrv/SelGate/DB/M2内部IP+端口分别列表。
!addrtable按Title写全,serverinfo写全线路后端端口,M2Setup写对外列表IP。
登录器列表每条对应一个公网IP和登录端口;若双线同区,出电信/网通两条列表,别用同一IP硬改。
启动顺序:DB/LoginSrv/SelGate/LoginGate/RunGate/M2按引擎要求;看各网关“已监听IP:端口”再放玩家。
晚高峰用电信、网通、移动三网各建号走完整登录→选人→进图→小退→再进,查延迟和掉线;只本机telnet通不等于多IP外网通。

多IP不是把每个配置文件都写满所有地址,而是按“客户端从哪个公网IP来→进哪个登录网关→账号服务回报哪个地址→选人走哪个SelGate→进图走哪个RunGate”串成单向闭环。监听全网卡适合省事,分线路多网关适合双线统计和限流,多区隔离适合数据不互通;三者都要求端口不冲突、地址表不混用、防火墙和安全组按公网IP放行。