antidos_opcode_policies 表
antidos_opcode_policies表定义防DDoS攻击策略,对特定网络操作码设置允许的最大请求频率。
表概述
antidos_opcode_policies表是AzerothCore内置防DDoS系统的一部分。每个Opcode(网络操作码)可以设置Policy(策略类型)和MaxAllowedCount(最大允许计数),用于限制客户端向服务器发送特定数据包的频率,防止洪水攻击。
主键为 Opcode,对应客户端与服务器通信协议的各类操作码。
表结构
| 字段名 | 数据类型 | 默认值 | 说明 |
|---|---|---|---|
| Opcode | SMALLINT UNSIGNED | NOT NULL | 网络操作码(主键) |
| Policy | TINYINT UNSIGNED | NOT NULL | 策略类型 |
| MaxAllowedCount | SMALLINT UNSIGNED | NOT NULL | 允许的最大计数/频率 |
重要字段详解
Opcode (网络操作码)
客户端与服务器通信协议中的操作码编号。常见的需要限制的操作码包括:
- 角色创建/删除相关操作码
- 聊天消息操作码(防刷屏)
- 快速登录/重连操作码
- 拍卖行查询操作码
具体操作码编号取决于WoW版本和内部的Opcode枚举定义。
Policy (策略类型)
定义限制策略的行为方式:
- 0 - 不限制
- 1 - 基于时间的频率限制
- 2 - 基于次数的硬性上限
MaxAllowedCount的具体含义取决于Policy类型。
实战案例
限制聊天消息频率
-- 假设聊天操作码Opcode=123,Policy=1(时间限制),MaxAllowedCount=10(每时间窗口10条)
INSERT INTO antidos_opcode_policies (Opcode, Policy, MaxAllowedCount)
VALUES (123, 1, 10)
ON DUPLICATE KEY UPDATE Policy=1, MaxAllowedCount=10;
查询所有设置了限制的操作码
SELECT Opcode, Policy, MaxAllowedCount
FROM antidos_opcode_policies
WHERE Policy > 0 AND MaxAllowedCount > 0
ORDER BY Opcode;
常见问题
Q: 修改后需要重启吗?
A: 通常需要重启服务器才能生效,因为Opcode策略在服务器启动时加载。动态reload一般不支持此表。
Q: 误封了正常玩家怎么办?
A: 降低对应Opcode的限制(增大MaxAllowedCount或Policy=0禁用),然后重启服务器。被踢出的玩家需要重新登录即可恢复。