处理GOM传奇引擎M2Server网关报错:非法网关连接

来源: 作者: 点击:
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版本兼容,避免因版本差异导致的连接问题。

#### 6. 总结
通过以上步骤,你应该能够解决GOM传奇引擎M2Server网关报错“非法网关连接”的问题。这不仅确保了M2Server能够正常与网关进行通信,还提升了游戏服务器的稳定性和安全性。希望这篇教程对你有所帮助!