之前写 Reality 风险的时候唠叨过:配置不对,你的服务器会被别人拿去薅流量。那时候的套路是 Nginx 挡前面、SNI 分流、Fail2ban 封 IP——能用,但总有种「发现一个坏蛋打一个」的老实人气场,一点都不酷。
现在 Xray_bash_onekey 终于加了一个更狠的功能:流量阻断。直接按国家/地区拦 IP 和域名,顺手还能掐掉 BT、广告域名、私有网络访问。简单说:我家的代理,我说了算,不想让谁过谁就别想过~
能拦什么#
脚本里目前有四把小剪刀,可以分别咔嚓掉:
- 指定国家/地区:基于
geoip:xx和geosite:xx,IP 和域名都拦。 - BT 下载:基于
protocol: bittorrent,种子流量直接掐。 - 广告域名:基于
geosite:category-ads-all,清爽到底。 - 私有网络:基于
geoip:private,别来碰我的内网。
重点说国家/地区阻断。比如你填个 cn,脚本会同时生成域名规则和 IP 规则,也就是 geosite:cn 和 geoip:cn 都会生效。双重拦截,不怕漏网之鱼~
不是什么高深操作,想法超级朴素:我的代理,有些方向的流量,就是不想让你从这走。尤其是后端多、跳板多、Reality 附加协议多的机器,多一道规则真的比事后对着流量账单发呆强。

怎么开#
登录服务器,一句话:
idleleo --traffic-blocker或者 idleleo 进主菜单,选「设置 Xray 流量阻断」。进去是长这样:

几个入口清清楚楚:看规则状态、管理阻断规则、更新 GeoData、重置全部规则。第一次用的话,先更新 GeoData,让 geoip.dat 和 geosite.dat 是最新版。脚本自己也会检查,缺了就自动下载,不用你到处找文件——这还算贴心吧?
添加国家/地区的时候,填两位代码就行:
cn,jp,ru国家/地区阻断是一个独立的人口,可以添加,也可以按编号删掉:

脚本会自动去重,不合法代码也会跳过。加完以后立刻应用规则并重启 Xray。看到「重启」别紧张,这是让新路由生效的正确姿势,不是脚本在翻车。
GeoData 自动更新#
这种功能最怕的不是你第一次没配好,而是半年后规则文件老得像出土文物,拦什么东西早就不准了。所以脚本里塞了 GeoData 更新菜单,可以单独更新 geoip.dat、geosite.dat,也可以设自动更新。
自动更新默认每周一凌晨 3 点偷跑一次。这个时间点我很满意:你在睡觉,服务器悄悄更新,醒来一看啥都弄好了,多优雅。规则文件新一点,国家/地区匹配才不会闹笑话。
如果你的服务器环境比较特别,建议第一次设完以后看一眼 crontab 写没写进去。脚本菜单里也会显示当前 GeoData 的状态——版本、更新时间、有没有新版,一清二楚。
别怼自己脸上#
说点认真的。流量阻断不是那种「点一下广告消失」的轻量级功能。它会直接改 Xray 的 routing 配置,应用的时候会重建路由规则。如果你自己手写了复杂路由,启之前一定要备份配置。
脚本会帮你做备份,重启失败了也会尝试恢复,但服务器终归是你的,心里要有点数。特别是已经搞了自定义分流、复杂 outbound、特殊 DNS 策略的玩家,别闭眼乱点。
还有一个小细节:启用国家/地区或私有网络阻断时,脚本会使用 IPIfNonMatch 这类策略——域名规则匹配不到再用 IP 判断,算是双重保险。启用 BT、国家/地区、广告规则时,还会打开协议嗅探。听起来玄乎,其实就是让 Xray 有足够多信息去判断:这条流量要不要掐?
谁适合开#
如果你一个人用,流量不大也没被薅过,这功能不是非开不可。工具不是护身符,开得多就安全大那是不存在的。
但你如果属于下面这些人,就很值得试试:
- 服务器流量异常,找不到原因,看着账单懵。
- 后端节点多,负载均衡、Reality 附加协议一大堆。
- 不想让代理替你跑 BT、广告、私网访问这些杂活。
- 某些方向的流量,从一开始就不是你要服务的人。
最后总结一句人话:Fail2ban 像门卫保安——谁打我我封谁;流量阻断像门禁系统——这类人,根本别进来。两个不冲突,一起打开,服务器会清静到让你感动。






