M2Server的**非法网关连接报错**源于IP授权验证失败,需在服务端和网关端双向配置。本文提供**单机/分布式部署**两种场景的修复方案,涵盖IP白名单、端口转发、防火墙例外等全流程操作。
---
### 一、报错根源与排查路径
#### 1. 触发条件
- **服务端**:M2Server未识别到网关IP
- **网关端**:LoginGate/RunGate未在M2Server信任列表
#### 2. 快速定位工具
- **M2Server控制台**:查看“网关连接”页签的实时IP
- **NetStat命令**:`netstat -ano | findstr :7200`(确认端口监听状态)
---
### 二、单机部署修复方案(所有组件同一台PC)
#### 1. 修改M2Server核心配置(!Setup.txt)
```ini
[Server]
AllowConnectIP=127.0.0.1; -- 本地回路地址
GateCount=4 -- 网关总数
```
#### 2. 配置各网关IP绑定
| 网关名称 | 配置文件路径 | 关键参数修改 |
|------------|------------------------------|--------------------------|
| LoginGate | \LoginGate\Config.ini | ListenIP=127.0.0.1 |
| RunGate | \RunGate\Config.ini | ServerIP=127.0.0.1 |
| SelGate | \SelGate\Config.ini | GateAddr=127.0.0.1 |
| DBServer | \DBServer\!addrtable.txt | 127.0.0.1 |
---
### 三、分布式部署修复方案(网关分离部署)
#### 1. 多机IP白名单配置
1. **M2Server所在服务器**:
```ini
[Server]
AllowConnectIP=192.168.1.101;192.168.1.102;192.168.1.103;
```
- 192.168.1.101: LoginGate IP
- 192.168.1.102: RunGate IP
- 192.168.1.103: SelGate IP
2. **各网关服务器**:
```ini
; 以RunGate为例
[RunGate]
ServerIP=192.168.1.100 -- M2Server主IP
```
#### 2. 端口映射与防火墙规则
| 服务 | 端口 | 方向 | 协议 |
|-------------|--------|------------|---------|
| M2Server | 7200 | 入站/出站 | TCP |
| LoginGate | 7000 | 入站 | TCP/UDP |
| RunGate | 7100 | 入站 | TCP |
**PowerShell命令**:
```powershell
New-NetFirewallRule -DisplayName "GOM Ports" -Direction Inbound -LocalPort 7000,7100,7200 -Protocol TCP -Action Allow
```
---
### 四、高阶调试技巧
#### 1. 抓包验证通信(Wireshark示例)
- **过滤条件**:`ip.src==192.168.1.100 && tcp.port==7200`
- **正常情况**:每30秒一次心跳包(长度56字节)
#### 2. 备用网关激活
在`\Mir200\Plugins`目录下创建**IPTrustList.txt**:
```
192.168.1.101:7000
192.168.1.102:7100
```
---
### 五、常见错误对照表
| 错误现象 | 解决方案 |
|---------------------------|---------------------------|
| 网关显示连接但M2无响应 | 检查DBServer的!serverinfo.txt |
| 间歇性“非法连接” | 心跳超时,修改M2的Timeout=60000 |
| 外网IP无法连通 | 配置路由器NAT转发 |
---
### 六、性能优化参数
| 参数项 | 单机推荐值 | 分布式推荐值 |
|----------------------|----------------|----------------|
| 网关线程数(GateThread) | 4 | 8 |
| 最大连接数(MaxConn) | 500 | 2000 |
| 心跳间隔(KeepAlive) | 30000ms | 15000ms |
---
#### 结语
通过双向IP绑定+端口规则,可根治“非法网关连接”问题。关键点:
1. **严格对应**:AllowConnectIP与各网关的ServerIP需互为白名单
2. **协议一致**:TCP/UDP混合场景需单独放行
3. **日志监控**:实时查看GateLog.txt定位异常IP
附赠工具包:
- 一键配置生成器(自动填充IP/端口)
- 网络连通性测试脚本
- 非法IP自动屏蔽插件
#### 1. 准备工作
在开始之前,请确保你已经安装了GOM引擎,并且有一个基本的游戏框架搭建完成。此外,还需要准备好所有必要的客户端和服务器端文件。
#### 2. 理解错误原因
##### 错误分析
“非法网关连接”错误通常由以下几个原因引起:
1. **网关IP未正确添加**:M2Server没有将网关所在机器的IP地址添加到允许的网关列表中。
2. **配置文件错误**:M2Server的配置文件(如`m2server.conf`)中的设置不正确。
3. **网络问题**:网关和M2Server之间的网络不通畅。
4. **防火墙或安全软件阻止连接**:防火墙或安全软件可能阻止了网关与M2Server之间的通信。
#### 3. 解决步骤
##### 步骤一:检查网关IP是否正确添加
###### 3.1.1 修改M2Server配置文件 (`m2server.conf`)
打开`config\m2server.conf`文件,找到并编辑允许的网关IP列表。
```plaintext
allowed_gateway_ips = 127.0.0.1, 192.168.1.100, 192.168.1.101
```
- `allowed_gateway_ips`: 允许连接的网关IP地址列表,用逗号分隔。
假设你的网关所在的机器IP是`192.168.1.102`,则需要将其添加到列表中:
```plaintext
allowed_gateway_ips = 127.0.0.1, 192.168.1.100, 192.168.1.101, 192.168.1.102
```
###### 3.1.2 示例配置
以下是一个完整的`m2server.conf`示例,展示了如何配置允许的网关IP:
```plaintext
# M2Server Configuration File
# Server Port
server_port = 11001
# Maximum Players
max_players = 100
# Allowed Gateway IPs
allowed_gateway_ips = 127.0.0.1, 192.168.1.100, 192.168.1.101, 192.168.1.102
# Packet Files
pak_file_1 = data/game.pak
pak_password_1 = game_password
pak_file_2 = data/data.pak
pak_password_2 = data_password
# Database Settings
db_host = localhost
db_user = root
db_pass = password
db_name = legend_db
```
##### 步骤二:重启M2Server
保存配置文件后,重启M2Server以使更改生效。
```sh
stop server.exe
start server.exe
```
##### 步骤三:检查网关配置
确保网关的配置文件中也包含了正确的M2Server IP地址。
###### 3.3.1 修改Gateway配置文件 (`gateway.conf`)
打开`config\gateway.conf`文件,找到并编辑M2Server的IP地址。
```plaintext
m2server_ip = 127.0.0.1
m2server_port = 11001
```
假设M2Server运行在`192.168.1.100`上,则需要修改为:
```plaintext
m2server_ip = 192.168.1.100
m2server_port = 11001
```
###### 3.3.2 示例配置
以下是一个完整的`gateway.conf`示例,展示了如何配置M2Server的IP地址:
```plaintext
# Gateway Configuration File
# Listen IP and Port
listen_ip = 0.0.0.0
listen_port = 11000
# M2Server IP and Port
m2server_ip = 192.168.1.100
m2server_port = 11001
# Maximum Clients
max_clients = 100
```
##### 步骤四:重启Gateway
保存配置文件后,重启Gateway以使更改生效。
```sh
stop gateway.exe
start gateway.exe
```
##### 步骤五:检查网络连通性
确保网关和M2Server之间的网络是畅通的。
###### 3.5.1 使用Ping命令测试连通性
在网关所在的机器上,使用Ping命令测试能否访问M2Server的IP地址。
```sh
ping 192.168.1.100
```
如果Ping成功,说明网络是畅通的。
###### 3.5.2 检查防火墙设置
确保防火墙没有阻止网关与M2Server之间的通信。
- **Windows防火墙**:
- 打开控制面板 -> Windows Defender 防火墙 -> 高级设置。
- 创建入站规则和出站规则,允许M2Server和Gateway之间的通信。
- **Linux防火墙**(例如iptables):
```sh
sudo iptables -A INPUT -s 192.168.1.102 -p tcp --dport 11001 -j ACCEPT
sudo iptables -A OUTPUT -d 192.168.1.100 -p tcp --sport 11001 -j ACCEPT
```
##### 步骤六:重新测试连接
完成上述配置和检查后,重新启动M2Server和Gateway,并尝试建立连接。
```sh
start login_server.exe
start server.exe
start gateway.exe
start client.exe
```
观察日志文件,确认是否仍然出现“非法网关连接”错误。如果没有错误,说明配置已成功。
#### 4. 日志文件检查
##### 查看M2Server日志
打开M2Server的日志文件(通常位于`log\server.log`),查找相关的错误信息。
```plaintext
[2023-10-01 12:34:56] ERROR: Illegal gateway connection from IP: 192.168.1.102
```
根据日志中的错误信息,进一步排查问题。
##### 查看Gateway日志
打开Gateway的日志文件(通常位于`log\gateway.log`),查找相关的错误信息。
```plaintext
[2023-10-01 12:34:56] INFO: Connected to M2Server at 192.168.1.100:11001
```
确保Gateway能够成功连接到M2Server。
#### 5. 常见问题及解决方案
##### 问题一:IP地址输入错误
确保在配置文件中输入的IP地址完全正确,包括点号和数字。
##### 问题二:配置文件路径错误
确保配置文件位于正确的路径下,并且文件名拼写正确。
##### 问题三:权限问题
确保运行M2Server和Gateway的用户具有足够的权限读取配置文件。
##### 问题四:版本兼容性问题
确保使用的M2Server和Gateway版本兼容,避免因版本差异导致的连接问题。
---
### 一、报错根源与排查路径
#### 1. 触发条件
- **服务端**:M2Server未识别到网关IP
- **网关端**:LoginGate/RunGate未在M2Server信任列表
#### 2. 快速定位工具
- **M2Server控制台**:查看“网关连接”页签的实时IP
- **NetStat命令**:`netstat -ano | findstr :7200`(确认端口监听状态)
---
### 二、单机部署修复方案(所有组件同一台PC)
#### 1. 修改M2Server核心配置(!Setup.txt)
```ini
[Server]
AllowConnectIP=127.0.0.1; -- 本地回路地址
GateCount=4 -- 网关总数
```
#### 2. 配置各网关IP绑定
| 网关名称 | 配置文件路径 | 关键参数修改 |
|------------|------------------------------|--------------------------|
| LoginGate | \LoginGate\Config.ini | ListenIP=127.0.0.1 |
| RunGate | \RunGate\Config.ini | ServerIP=127.0.0.1 |
| SelGate | \SelGate\Config.ini | GateAddr=127.0.0.1 |
| DBServer | \DBServer\!addrtable.txt | 127.0.0.1 |
---
### 三、分布式部署修复方案(网关分离部署)
#### 1. 多机IP白名单配置
1. **M2Server所在服务器**:
```ini
[Server]
AllowConnectIP=192.168.1.101;192.168.1.102;192.168.1.103;
```
- 192.168.1.101: LoginGate IP
- 192.168.1.102: RunGate IP
- 192.168.1.103: SelGate IP
2. **各网关服务器**:
```ini
; 以RunGate为例
[RunGate]
ServerIP=192.168.1.100 -- M2Server主IP
```
#### 2. 端口映射与防火墙规则
| 服务 | 端口 | 方向 | 协议 |
|-------------|--------|------------|---------|
| M2Server | 7200 | 入站/出站 | TCP |
| LoginGate | 7000 | 入站 | TCP/UDP |
| RunGate | 7100 | 入站 | TCP |
**PowerShell命令**:
```powershell
New-NetFirewallRule -DisplayName "GOM Ports" -Direction Inbound -LocalPort 7000,7100,7200 -Protocol TCP -Action Allow
```
---
### 四、高阶调试技巧
#### 1. 抓包验证通信(Wireshark示例)
- **过滤条件**:`ip.src==192.168.1.100 && tcp.port==7200`
- **正常情况**:每30秒一次心跳包(长度56字节)
#### 2. 备用网关激活
在`\Mir200\Plugins`目录下创建**IPTrustList.txt**:
```
192.168.1.101:7000
192.168.1.102:7100
```
---
### 五、常见错误对照表
| 错误现象 | 解决方案 |
|---------------------------|---------------------------|
| 网关显示连接但M2无响应 | 检查DBServer的!serverinfo.txt |
| 间歇性“非法连接” | 心跳超时,修改M2的Timeout=60000 |
| 外网IP无法连通 | 配置路由器NAT转发 |
---
### 六、性能优化参数
| 参数项 | 单机推荐值 | 分布式推荐值 |
|----------------------|----------------|----------------|
| 网关线程数(GateThread) | 4 | 8 |
| 最大连接数(MaxConn) | 500 | 2000 |
| 心跳间隔(KeepAlive) | 30000ms | 15000ms |
---
#### 结语
通过双向IP绑定+端口规则,可根治“非法网关连接”问题。关键点:
1. **严格对应**:AllowConnectIP与各网关的ServerIP需互为白名单
2. **协议一致**:TCP/UDP混合场景需单独放行
3. **日志监控**:实时查看GateLog.txt定位异常IP
附赠工具包:
- 一键配置生成器(自动填充IP/端口)
- 网络连通性测试脚本
- 非法IP自动屏蔽插件
#### 1. 准备工作
在开始之前,请确保你已经安装了GOM引擎,并且有一个基本的游戏框架搭建完成。此外,还需要准备好所有必要的客户端和服务器端文件。
#### 2. 理解错误原因
##### 错误分析
“非法网关连接”错误通常由以下几个原因引起:
1. **网关IP未正确添加**:M2Server没有将网关所在机器的IP地址添加到允许的网关列表中。
2. **配置文件错误**:M2Server的配置文件(如`m2server.conf`)中的设置不正确。
3. **网络问题**:网关和M2Server之间的网络不通畅。
4. **防火墙或安全软件阻止连接**:防火墙或安全软件可能阻止了网关与M2Server之间的通信。
#### 3. 解决步骤
##### 步骤一:检查网关IP是否正确添加
###### 3.1.1 修改M2Server配置文件 (`m2server.conf`)
打开`config\m2server.conf`文件,找到并编辑允许的网关IP列表。
```plaintext
allowed_gateway_ips = 127.0.0.1, 192.168.1.100, 192.168.1.101
```
- `allowed_gateway_ips`: 允许连接的网关IP地址列表,用逗号分隔。
假设你的网关所在的机器IP是`192.168.1.102`,则需要将其添加到列表中:
```plaintext
allowed_gateway_ips = 127.0.0.1, 192.168.1.100, 192.168.1.101, 192.168.1.102
```
###### 3.1.2 示例配置
以下是一个完整的`m2server.conf`示例,展示了如何配置允许的网关IP:
```plaintext
# M2Server Configuration File
# Server Port
server_port = 11001
# Maximum Players
max_players = 100
# Allowed Gateway IPs
allowed_gateway_ips = 127.0.0.1, 192.168.1.100, 192.168.1.101, 192.168.1.102
# Packet Files
pak_file_1 = data/game.pak
pak_password_1 = game_password
pak_file_2 = data/data.pak
pak_password_2 = data_password
# Database Settings
db_host = localhost
db_user = root
db_pass = password
db_name = legend_db
```
##### 步骤二:重启M2Server
保存配置文件后,重启M2Server以使更改生效。
```sh
stop server.exe
start server.exe
```
##### 步骤三:检查网关配置
确保网关的配置文件中也包含了正确的M2Server IP地址。
###### 3.3.1 修改Gateway配置文件 (`gateway.conf`)
打开`config\gateway.conf`文件,找到并编辑M2Server的IP地址。
```plaintext
m2server_ip = 127.0.0.1
m2server_port = 11001
```
假设M2Server运行在`192.168.1.100`上,则需要修改为:
```plaintext
m2server_ip = 192.168.1.100
m2server_port = 11001
```
###### 3.3.2 示例配置
以下是一个完整的`gateway.conf`示例,展示了如何配置M2Server的IP地址:
```plaintext
# Gateway Configuration File
# Listen IP and Port
listen_ip = 0.0.0.0
listen_port = 11000
# M2Server IP and Port
m2server_ip = 192.168.1.100
m2server_port = 11001
# Maximum Clients
max_clients = 100
```
##### 步骤四:重启Gateway
保存配置文件后,重启Gateway以使更改生效。
```sh
stop gateway.exe
start gateway.exe
```
##### 步骤五:检查网络连通性
确保网关和M2Server之间的网络是畅通的。
###### 3.5.1 使用Ping命令测试连通性
在网关所在的机器上,使用Ping命令测试能否访问M2Server的IP地址。
```sh
ping 192.168.1.100
```
如果Ping成功,说明网络是畅通的。
###### 3.5.2 检查防火墙设置
确保防火墙没有阻止网关与M2Server之间的通信。
- **Windows防火墙**:
- 打开控制面板 -> Windows Defender 防火墙 -> 高级设置。
- 创建入站规则和出站规则,允许M2Server和Gateway之间的通信。
- **Linux防火墙**(例如iptables):
```sh
sudo iptables -A INPUT -s 192.168.1.102 -p tcp --dport 11001 -j ACCEPT
sudo iptables -A OUTPUT -d 192.168.1.100 -p tcp --sport 11001 -j ACCEPT
```
##### 步骤六:重新测试连接
完成上述配置和检查后,重新启动M2Server和Gateway,并尝试建立连接。
```sh
start login_server.exe
start server.exe
start gateway.exe
start client.exe
```
观察日志文件,确认是否仍然出现“非法网关连接”错误。如果没有错误,说明配置已成功。
#### 4. 日志文件检查
##### 查看M2Server日志
打开M2Server的日志文件(通常位于`log\server.log`),查找相关的错误信息。
```plaintext
[2023-10-01 12:34:56] ERROR: Illegal gateway connection from IP: 192.168.1.102
```
根据日志中的错误信息,进一步排查问题。
##### 查看Gateway日志
打开Gateway的日志文件(通常位于`log\gateway.log`),查找相关的错误信息。
```plaintext
[2023-10-01 12:34:56] INFO: Connected to M2Server at 192.168.1.100:11001
```
确保Gateway能够成功连接到M2Server。
#### 5. 常见问题及解决方案
##### 问题一:IP地址输入错误
确保在配置文件中输入的IP地址完全正确,包括点号和数字。
##### 问题二:配置文件路径错误
确保配置文件位于正确的路径下,并且文件名拼写正确。
##### 问题三:权限问题
确保运行M2Server和Gateway的用户具有足够的权限读取配置文件。
##### 问题四:版本兼容性问题
确保使用的M2Server和Gateway版本兼容,避免因版本差异导致的连接问题。

