1.6 ip_banned - IP封禁表

IP封禁表存储了被封禁的IP地址信息,包括封禁时间、解封时间、封禁原因等。IP封禁是一种更严格的封禁措施,可以阻止特定IP地址的所有连接尝试。

表结构

字段名 类型 属性 描述
ip varchar(15) 主键 被封禁的IP地址
bandate int(10) unsigned 不为空 封禁日期 (Unix时间戳)
unbandate int(10) unsigned 不为空 解封日期 (Unix时间戳,0表示永久封禁)
bannedby varchar(50) 不为空 封禁操作者
banreason varchar(255) 不为空 封禁原因

字段详解

ip

被封禁的IP地址,采用IPv4格式(如192.168.1.1)。这个字段是表的主键,每个IP地址在表中只能有一条记录。

示例值: "127.0.0.1", "192.168.1.1", "8.8.8.8"

注意: AzerothCore目前主要支持IPv4地址格式,不支持IPv6或CIDR格式的IP范围封禁。

bandate

IP地址被封禁的日期和时间,以Unix时间戳格式存储(从1970年1月1日UTC开始的秒数)。

示例值: 1609459200(2021年1月1日 00:00:00 UTC)

unbandate

IP地址预计解封的日期和时间,以Unix时间戳格式存储。如果设置为0,表示永久封禁。

示例值:

bannedby

执行IP封禁操作的管理员或系统名称。通常是GM的角色名或账号名,也可以是自动封禁系统的标识。

示例值: "Admin", "GameMaster", "AnticheatSystem"

banreason

封禁IP地址的原因,用于记录为什么对该IP执行封禁操作。

示例值: "多次尝试暴力破解密码", "DDoS攻击", "代理服务器", "VPN"

使用示例

封禁IP地址

以下SQL语句将封禁IP地址192.168.1.1,为期7天:

INSERT INTO ip_banned (ip, bandate, unbandate, bannedby, banreason)
VALUES ('192.168.1.1', UNIX_TIMESTAMP(), UNIX_TIMESTAMP() + (7 * 24 * 3600), 'Admin', '多次尝试暴力破解密码');

永久封禁IP地址

以下SQL语句将永久封禁IP地址192.168.1.1:

INSERT INTO ip_banned (ip, bandate, unbandate, bannedby, banreason)
VALUES ('192.168.1.1', UNIX_TIMESTAMP(), 0, 'Admin', 'DDoS攻击');

解封IP地址

以下SQL语句将解封IP地址192.168.1.1:

DELETE FROM ip_banned
WHERE ip = '192.168.1.1';

相关表

常见问题

如何查看当前所有被封禁的IP地址?

使用以下SQL语句查询:

SELECT ip,
       FROM_UNIXTIME(bandate) AS ban_date,
       FROM_UNIXTIME(unbandate) AS unban_date,
       bannedby,
       banreason
FROM ip_banned
WHERE unbandate > UNIX_TIMESTAMP() OR unbandate = 0;

IP封禁和账号封禁有什么区别?

IP封禁和账号封禁的主要区别:

注意: 由于IP封禁可能会影响无辜玩家(如共享网络的玩家),建议谨慎使用,主要用于应对严重的安全威胁。

IP封禁设置后需要重启服务器吗?

不需要。IP封禁设置后立即生效,服务器会阻止来自被封禁IP地址的新连接尝试。

如何封禁一个IP范围?

AzerothCore的标准ip_banned表不直接支持IP范围封禁。如果需要封禁IP范围,有以下几种方法:

如何查看某个IP地址是否被封禁?

使用以下SQL语句查询:

SELECT * FROM ip_banned
WHERE ip = '192.168.1.1'
AND (unbandate > UNIX_TIMESTAMP() OR unbandate = 0);