如何在 Minecraft 中封禁 IP
在 Paper、Spigot 和原版服务器上,内置命令可以封禁一个地址,或某个在线玩家当前的地址:
/ban-ip <address|player> [reason]
/pardon-ip <address>
/banlist ips有两点容易出错。内置命令只接受单个 IPv4 地址:不支持 IP 段,也不支持 IPv6。另外,在群组服中,在某个后端服务器上执行 /ban-ip 只对这个后端生效;如果没有开启 IP 转发,它看到的只是代理端的地址。应在代理端封禁,或者使用能覆盖整个网络的封禁插件,例如 LiteBans。
Kordon 的黑名单(Pro 套餐起)接受单个地址和 IP 段,可以设置期限,并在代理端对整个网络生效:
/kordon blacklist add 203.0.113.0/24 7d地址会自己变化
很多运营商只把地址分配给用户一段时间。重启路由器,地址就变了。被封禁的地址之后会分给同一运营商的另一位用户,他从没听说过你的服务器,却进不了服。
数百人共用一个地址
IPv4 地址不够每人一个,所以移动运营商和很多家庭宽带运营商让数百个用户通过一个共享地址上网。这叫做 CGNAT。宿舍、学校、网吧,以及共用一台路由器的普通家庭,也都通过同一个地址上网。
封禁这样的地址会波及背后的所有人。而违规玩家只要在手机上开关一下飞行模式,就会换到另一个共享地址。
IPv6
在 IPv6 下,运营商会给用户分配一整段地址,通常是 /64 或更大,设备本身还会在这段地址内不断更换地址。封禁单个 IPv6 地址几乎没有用。如果要封,就封整段,例如 2001:db8:1234:5678::/64。Kordon 接受最宽 /32 的 IPv6 段和最宽 /16 的 IPv4 段。
VPN 和代理
VPN 或代理几秒钟就能提供一个新地址,IP 封禁对它们毫无作用。详见指南如何拦截 VPN 和代理和住宅代理。
更好的做法
- 按昵称或 UUID 封禁账号。在开启正版验证(online mode)的服务器上,即使玩家改了昵称,UUID 也不会变。
- 拦截 VPN 和代理,这样换个新地址就不再是点一下就能做到的事。
- 封禁地址之前,先在违规玩家的玩家资料中打开“关联玩家”,或者查看进服记录:你会看到还有谁从这个地址进服。
- 如果确实要封禁地址或 IP 段,请设置期限,例如
1d或7d。 - 要找出同一个人的新账号,可以使用 Premium 套餐的账号关联图。
什么时候封禁 IP 段有意义
如果某个人不断从同一运营商的地址回来,而你的老玩家都不在这个段里,封禁 IP 段就有用。先查看进服记录,设置期限,并把可能被波及的人加入白名单。在 Kordon 中,黑名单里的 IP 段从 Pro 套餐起可用。