3x-ui限制客户端IP连接数:搭配Fail2ban怎么配置
面板部分假设已经按3x-ui安装教程装好。这篇讲两件事:真正能配置的 IP 连接数限制怎么弄,以及经常被搜索但其实还做不到的客户端限速,现状是什么样。
客户端限速:目前还做不到,不是你没找对地方
先说清楚这个,省得对着面板翻半天找不到。3x-ui 客户端编辑表单里目前只有两种量化限制字段:Limit IP(同时在线的 IP 数量)和 Total GB(总流量配额),没有任何按 Mbps 或 KB/s 限制传输速率的字段。给单个客户端限速这个需求,在 MHSanaei/3x-ui 仓库的 issue 列表里是个反复被提起但一直没实现的功能请求(比如 #1102、#3418 这几条),不是配置方法藏得深,是面板确实还没做这个功能。如果真的需要限速,目前只能退而求其次,用总流量配额限制单周期能用的总量,或者在系统层面用 tc 这类 Linux 流量控制工具按端口做限制,但配置复杂度和这篇教程的定位不太一样,这里不展开。
下面讲面板里真正能用、也确实有效的 IP 连接数限制。
开启 Xray 访问日志
IP 连接数限制靠 Fail2ban 识别客户端 IP,而 Fail2ban 要读的是 Xray 的访问日志,默认这个日志是关闭的,得先手动打开。进入面板的 Xray 配置页面,找到 log 这部分,把 access log 的路径设置成 ./access.log,保存之后重启 Xray 让配置生效。这一步漏了的话,后面 Fail2ban 装好了也检测不到任何 IP,等于白配。
给客户端设置 Limit IP
进入对应入站的客户端列表,编辑某个客户端,找到 Limit IP 这个字段,填一个数字,代表这个客户端账号允许同时使用的 IP 数量,填 0 表示不限制。这个值设多少合适看场景:自己一个人用、手机电脑平板都要连的话建议设 2-3,避免误伤自己的其他设备;纯单设备自用可以设 1;如果是给别人用又担心账号被转卖分享,设 1-2 配合定期看流量走势效果更好。
安装并配置 Fail2ban
回到终端,运行:
1 | x-ui |
在弹出的菜单里选 IP Limit Management(对应菜单第 22 项,具体编号可能随版本略有变化,直接看菜单里的文字更准),按提示走完 Fail2ban 的安装和配置。这个菜单里能做的事包括:
- 安装并启用 Fail2ban
- 修改封禁时长(默认 30 分钟)
- 查看封禁记录
- 手动封禁或解封某个 IP
装好之后,Fail2ban 会用一个专门的 3x-ipl 规则组(jail)持续检测客户端日志里的 IP 数量,一旦某个客户端同时出现的 IP 数超过它 Limit IP 里设的值,就会临时封禁超出限制的 IP,默认 30 分钟后自动解封。这个规则组本身会排除你的 SSH 端口和面板端口,不会因为这个功能把自己也锁在外面,可以放心装。
常见问题排查
- 封禁生效了但感觉误伤自己:先确认 Limit IP 设的值是不是比自己实际用的设备数还小,多设备场景建议留一点余量;
- 配置完发现完全不生效、日志里也看不到封禁记录:先检查 access log 是不是真的开了并且重启过 Xray,这一步是最容易漏的;
- 想确认 Fail2ban 本身是不是真的在拦截,而不是看着状态正常实际是摆设:这个坑不只 3x-ui 会遇到,可以参考装了Fail2ban怎么确认它真的在拦截攻击里说的几个常见静默失效原因。
如果节点走的是 CDN 或者反代(比如套了 XHTTP),Xray 看到的客户端 IP 可能是 CDN/反代节点的 IP 而不是真实用户 IP,这种情况下 IP 连接数限制的判断会不准,属于反代场景下的已知限制,不是配置错了。