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地址,采用IPv4格式(如192.168.1.1)。这个字段是表的主键,每个IP地址在表中只能有一条记录。
示例值: "127.0.0.1", "192.168.1.1", "8.8.8.8"
注意: AzerothCore目前主要支持IPv4地址格式,不支持IPv6或CIDR格式的IP范围封禁。
IP地址被封禁的日期和时间,以Unix时间戳格式存储(从1970年1月1日UTC开始的秒数)。
示例值: 1609459200(2021年1月1日 00:00:00 UTC)
IP地址预计解封的日期和时间,以Unix时间戳格式存储。如果设置为0,表示永久封禁。
示例值:
执行IP封禁操作的管理员或系统名称。通常是GM的角色名或账号名,也可以是自动封禁系统的标识。
示例值: "Admin", "GameMaster", "AnticheatSystem"
封禁IP地址的原因,用于记录为什么对该IP执行封禁操作。
示例值: "多次尝试暴力破解密码", "DDoS攻击", "代理服务器", "VPN"
以下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', '多次尝试暴力破解密码');
以下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攻击');
以下SQL语句将解封IP地址192.168.1.1:
DELETE FROM ip_banned
WHERE ip = '192.168.1.1';
使用以下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地址的新连接尝试。
AzerothCore的标准ip_banned表不直接支持IP范围封禁。如果需要封禁IP范围,有以下几种方法:
使用以下SQL语句查询:
SELECT * FROM ip_banned
WHERE ip = '192.168.1.1'
AND (unbandate > UNIX_TIMESTAMP() OR unbandate = 0);