表概述

antidos_opcode_policies表是AzerothCore内置防DDoS系统的一部分。每个Opcode(网络操作码)可以设置Policy(策略类型)和MaxAllowedCount(最大允许计数),用于限制客户端向服务器发送特定数据包的频率,防止洪水攻击。

主键为 Opcode,对应客户端与服务器通信协议的各类操作码。

表结构

字段名数据类型默认值说明
OpcodeSMALLINT UNSIGNEDNOT NULL网络操作码(主键)
PolicyTINYINT UNSIGNEDNOT NULL策略类型
MaxAllowedCountSMALLINT UNSIGNEDNOT 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禁用),然后重启服务器。被踢出的玩家需要重新登录即可恢复。