优质SS/SSR/Trojan/Xray/V2Ray机场推荐 | IPLC/IEPL专线加速器梯子推荐 | 解锁奈飞Netflix/HBO/Hulu等国外流媒体
在使用Xray的过程中,你一定无数次的听说了【回落】这个功能。本文就稍微说明一下这个功能的逻辑以及使用方式。
VLESS
协议的简易回落:"inbounds": [
{
"port": 443,
"protocol": "vless",
"settings": {
"clients": [
...
],
"decryption": "none",
"fallbacks": [
{
"dest": 8080 // 默认回落到防探测的代理
}
]
},
"streamSettings": {
...
}
}
]
这一段配置用人话要怎么解释呢?
Xray
的入站端口 [inbound port]
是 443
即由 Xray
负责监听 443
端口的 HTTPS
流量Xray
的入站协议 [inbound protocol]
是 vless
只有 vless
协议的流量才会流入 Xray
中做后续处理。注: VLESS
这个轻量协议开发的初衷就是给 xray
及 v2fly
等核心引入回落功能、并同时减少冗余校验/加密。(当然,到目前为止,xray
中的 trojan
协议也已完整支持回落功能。)[fallback dest]
是 8080
Xray
接受 443
端口的访问流量后,属于 vless
协议的流量、由 Xray
进行内部处理并转发至出站模块。而其他非 vless
协议的流量,则转发至 8080
端口。问:到底是单数还是复数?答:一定有聪明的同学发现,配置文件中,明明是复数 inbounds
, fallbacks
,为什么我解释的时候都是单数:inbound
, fallback
呢?因为,配置文件中用复数,说明 xray
支持 N 个同等及的元素(即N个入站,M个回落等等),上面的示例解析中仅仅是其中一个,所以我用了单数。8080
端口的流量,由后续程序处理小小白白话文中的示例,就是 8080
端口由 Nginx
处理,根据配置找到并展示小熊猫的网页。v1
)基于上面的示例,你应该就可以明白什么是回落(What)和怎么回落(How)了,简单地说就是下面这几个要素:
Xray监听端口
后协议类型
等流量特征端口
回落端口
的后续程序接手v1
)最初,是为了防御
【主动探测】(Active Probing)
主动探测: 简单粗暴的理解,就是指外部通过发送特定的网络请求,并解读服务器的回应内容,来推测服务器端是否运行了xray
, v2fly
, shadowsocks
等代理工具。一旦可以准确认定,则服务器可能受到干扰或阻断。之所以可以根据服务器回应内容进行解读,就是因为一次完整的数据请求,其实有很多数据交换的步骤,每一个步骤,都会产生一些软件特征。用大白话说就是:
Nginx
, Apache
, MySQL
的Web服务、数据库等工具的特征xray
, v2fly
, shadowsocks
等代理工具的特征Xray
提供了【回落】功能后(如上例,回落给 Nginx
),面对任何用来探测的请求,产生的结果是:VLESS
要素,故都会被回落至 Nginx
Nginx
,故VPS服务器的回应一定【会有】 Nginx
的特征Xray
本身不对探测流量做任何回应 ,所以VPS的回应一定【不会有】 Xray
的特征至此,【回落】功能就从数据交互逻辑上解决了服务器被
【主动探测】的安全隐患。
v2
)为什么又要再次认识回落呢? 因为,上面仅仅说清楚了基于“协议”的、抵抗【主动探测】的初版回落。
在 rprx 不断开发迭代VLESS
协议及 fallback
功能的过程种,逐渐发现,回落完全可以更加灵活强大,只要在保证抵抗【主动探测】的前提下,充分利用数据首包中的信息,其实可以做到多元素、多层次的回落。(如 path
, alpn
等)基于这个开发理念,【回落】功能才逐渐成长为现在的完全体,即完成了 纯伪装 --> ws分流 --> 多协议多特征分流
的进化。最终版甚至完全替代了以前要用Web服务器、其他工具才能完成的分流的功能。且由于上述的【回落/分流】处理都在首包判断阶段以毫秒级的速度完成、不涉及任何数据操作,所以几乎没有任何过程损耗。因此,现在 Xray
中【完整体的回落功能】,同时具备下述属性:充分抵御主动探测攻击
几乎毫无性能损失
数据灵活分流、常用端口复用(如443)
这样多轮介绍虽然略显繁琐,但只有这样层层深入展开,才能充分的说明【回落の完全体】独有的强大!
理解了【回落の完全体】是什么,那就可以动手操作配置多层回落了。其实,项目已经提供了非常完整的示例,即官方模板中的 VLESS-TCP-XTLS-WHATEVER。
{
"port": 443,
"protocol": "vless",
"settings": {
"clients": [
{
"id": "", // 填写你的 UUID
"flow": "xtls-rprx-direct",
"level": 0,
"email": "[email protected]"
}
],
"decryption": "none",
"fallbacks": [
{
"dest": 1310, // 默认回落到 Xray 的 Trojan 协议
"xver": 1
},
{
"path": "/websocket", // 必须换成自定义的 PATH
"dest": 1234,
"xver": 1
},
{
"path": "/vmesstcp", // 必须换成自定义的 PATH
"dest": 2345,
"xver": 1
},
{
"path": "/vmessws", // 必须换成自定义的 PATH
"dest": 3456,
"xver": 1
}
]
},
"streamSettings": {
"network": "tcp",
"security": "xtls",
"xtlsSettings": {
"alpn": [
"http/1.1"
],
"certificates": [
{
"certificateFile": "/path/to/fullchain.crt", // 换成你的证书,绝对路径
"keyFile": "/path/to/private.key" // 换成你的私钥,绝对路径
}
]
}
}
},
这一段配置用人话要怎么解释呢?
Xray
的入站端口 (inbound port
) 是 443
即由 Xray
负责监听 443
端口的 HTTPS
流量,并使用 certificates
项下设定的 TLS
证书来进行验证Xray
的入站协议 (inbound protocol
) 是 vless
vless
协议流量直接流入 Xray
中做后续处理VLESS
协议流量有4个不同的回落目标:path
为 websocket
的流量,回落给端口 1234
后续处理path
为 vmesstcp
的流量,回落给端口 2345
后续处理path
为 vmessws
的流量,回落给端口 3456
后续处理1310
后续处理xver
为 1
表示开启 proxy protocol
功能,向后传递来源真实IPnginx回落
不见了!!!这是为什么呢?会不会不安全?别急,我们继续分析:1310
端口的流量,按照下面的配置验证、处理:{
"port": 1310,
"listen": "127.0.0.1",
"protocol": "trojan",
"settings": {
"clients": [
{
"password": "", // 填写你的密码
"level": 0,
"email": "[email protected]"
}
],
"fallbacks": [
{
"dest": 80 // 或者回落到其它也防探测的代理
}
]
},
"streamSettings": {
"network": "tcp",
"security": "none",
"tcpSettings": {
"acceptProxyProtocol": true
}
}
},
看,神奇的事情发生了, trojan
协议这里又出现了一个新的 fallbacks
。前面已经说过,xray
中的 trojan
协议也具有完整的回落能力,所以,此时 trojan
协议可以再次做判断和回落(这也就是传说中的套娃回落了):trojan
协议的流量,流入 Xray
中做后续处理trojan
协议的流量,转发至 80
端口,【主动探测】的防御,完成!1234
端口的流量,仔细看!它其实是 vless+ws
:{
"port": 1234,
"listen": "127.0.0.1",
"protocol": "vless",
"settings": {
"clients": [
{
"id": "", // 填写你的 UUID
"level": 0,
"email": "[email protected]"
}
],
"decryption": "none"
},
"streamSettings": {
"network": "ws",
"security": "none",
"wsSettings": {
"acceptProxyProtocol": true, // 提醒:若你用 Nginx/Caddy 等反代 WS,需要删掉这行
"path": "/websocket" // 必须换成自定义的 PATH,需要和分流的一致
}
}
},
2345
端口的流量,仔细看!它其实是 vmess直连
:{
"port": 2345,
"listen": "127.0.0.1",
"protocol": "vmess",
"settings": {
"clients": [
{
"id": "", // 填写你的 UUID
"level": 0,
"email": "[email protected]"
}
]
},
"streamSettings": {
"network": "tcp",
"security": "none",
"tcpSettings": {
"acceptProxyProtocol": true,
"header": {
"type": "http",
"request": {
"path": [
"/vmesstcp" // 必须换成自定义的 PATH,需要和分流的一致
]
}
}
}
}
},
3456
端口的流量,再仔细看!它其实是是 vmess+ws(+cdn)
。说明: 你没看错,这就是 v2fly 曾经的推荐组合之一,并可完整支持 CDN
。现已加入完美回落套餐哦!{
"port": 3456,
"listen": "127.0.0.1",
"protocol": "vmess",
"settings": {
"clients": [
{
"id": "", // 填写你的 UUID
"level": 0,
"email": "[email protected]"
}
]
},
"streamSettings": {
"network": "ws",
"security": "none",
"wsSettings": {
"acceptProxyProtocol": true, // 提醒:若你用 Nginx/Caddy 等反代 WS,需要删掉这行
"path": "/vmessws" // 必须换成自定义的 PATH,需要和分流的一致
}
}
}
Xray
的【回落】功能就介绍完了。希望本文能够对你理解 Xray
的强大有所帮助。我再无耻的留一个附加题:本文详解的 VLESS-TCP-XTLS-WHATEVER 模板?是否有可以优化的地方?
提示:HTTP自动跳转HTTPS
附:VLESS over TCP with XTLS + 回落 & 分流 to WHATEVER(终极配置)这里是 进阶配置 的超集,利用 VLESS 强大的回落分流特性,实现了 443 端口尽可能多的协议、配置的完美共存,包括 XTLS Direct Mode
客户端可以同时通过下列方式连接到服务器,其中 WS 都可以通过 CDN
这里设置默认回落到 Xray 的 Trojan 协议,再继续回落到 80 端口的 Web 服务器(也可以换成数据库、FTP 等)
你还可以配置回落到 Caddy 的 forwardproxy 等其它也防探测的代理,以及分流到任何支持 WebSocket 的代理,都没有问题