三种攻击
流量洪泛
海量流量塞满服务器的带宽。服务器无法访问或所有人都卡顿,进服记录里却看不到新的进服。
连接洪泛
成千上万个连接或服务器列表 Ping,但始终不会变成玩家。它们不会占满带宽,却会让代理端一直忙碌,直到它无法再响应真实玩家。
机器人攻击
假玩家完成进服,占满空位并在聊天中刷屏。每个机器人都是一个真实连接,通常来自代理列表,所以在服务器看来就像玩家。
为什么插件挡不住 DDoS
插件运行在代理端或服务器内部。当带宽被占满,或者机器忙着丢弃数据包时,插件根本没机会运行。过滤必须在流量到达你的机器之前完成:在主机商的网络上,或者在架在服务器前面的防护服务上。
真正的 DDoS 防护从哪里来
- 很多 Minecraft 主机商和一些数据中心(例如带游戏流量过滤的 OVHcloud)自带 DDoS 防护,攻击在到达你之前就会在它们的网络上被过滤掉。
- TCPShield 或 Cloudflare Spectrum(付费套餐)这类防护代理架在服务器前面:玩家连接到它的网络,只有干净的流量才会到达你这里。请在服务中开启 PROXY protocol,并在
velocity.toml中设置haproxy-protocol = true,或在 BungeeCord 的config.yml中设置proxy_protocol: true(或安装该服务的插件);否则你的代理端看到的是防护服务的地址而不是玩家的地址,IP 封禁和地址检测都会失效。 - 隐藏真实地址。如果攻击者知道你的代理端或后端的直连地址,就会绕过防护,所以不要把这个地址用在别处,泄露后要更换。
这些服务过滤的是流量。它们对 VPN 用户、规避封禁或完成进服的机器人一无所知。
代理端上可以设置什么
两种代理端都可以限制连接过于频繁的单个地址:
- Velocity:
velocity.toml中的login-ratelimit,即同一地址两次进服之间的最短间隔,单位为毫秒。 - BungeeCord:
config.yml中的connection_throttle和connection_throttle_limit。
这能应对来自少数地址的洪泛,对成千上万个地址则无效。在你自己的机器上,用防火墙规则限制每个地址的新连接数,可以应对小规模的连接洪泛。
机器人攻击:插件真正有用的地方
机器人攻击正是适合用插件处理的情况,因为每个机器人都要走进服流程。Kordon 会检测每次进服的地址,攻击潮开始时把服务器切换到攻击模式,并封锁机器人所用的网络;所有套餐(包括免费套餐)都有攻击模式。Sonar 这类验证插件则能抓住来自干净地址的机器人。两者可以在同一个代理端上很好地配合。
Kordon 不过滤网络流量,所以面对真正的 DDoS,你仍然需要主机商。参见遭遇机器人攻击时该怎么办。
如何判断遇到的是哪一种
如果服务器无法访问或所有人的延迟都很高,而进服记录中没有新的进服,主机商的图表上却有流量峰值,那就是 DDoS:请联系主机商。如果日志里涌入大量新昵称,空位也被占满,那就是机器人攻击:交给代理端上的防护处理。两者有时会同时出现,所以两边都要查。