Xray-core icon indicating copy to clipboard operation
Xray-core copied to clipboard

Add XTLS RPRX's Vision

Open yuhan6665 opened this issue 3 years ago • 32 comments
trafficstars

新流控实验选项:xtls-rprx-vision

  • 解决已知漏洞
  • 针对 tls1.3 开启 xtls (直接拷贝) 模式
  • 增加 tls 握手长度混淆
  • 简化代码

注意:"streamSettings" "security" 必须使用 “tls” "tlsSettings" 不能使用 “xtls” “xtlsSettings”

yuhan6665 avatar Oct 03 '22 02:10 yuhan6665

请问这个流控是双端都需要开启的吗

SekiBetu avatar Oct 09 '22 04:10 SekiBetu

请问这个流控是双端都需要开启的吗

对 因为与其它现存流控区别很大 必须两端都改

yuhan6665 avatar Oct 09 '22 04:10 yuhan6665

请问这个流控是双端都需要开启的吗

对 因为与其它现存流控区别很大 必须两端都改

好的

SekiBetu avatar Oct 09 '22 04:10 SekiBetu

第一次打开一个网址,chrome先报 网址为 www.michelin.co.jp 的网页可能暂时无法连接,或者它已永久性地移动到了新网址。ERR_SSL_BAD_RECORD_MAC_ALERT

等5秒左右,网页自动刷新,此时报 www.michelin.co.jp 使用了不受支持的协议。ERR_SSL_VERSION_OR_CIPHER_MISMATCH

再等约5秒,又报ERR_SSL_BAD_RECORD_MAC_ALERT,再等5秒,网页正常打开。此时关闭浏览器,再开,再打开网址,就直接显示内容了。

如果出错,直接按F5刷新,也是这错误界面,可能第4、5次刷新就正常了。正常后,再打开就是直接开,不会再报错。很多网址第1次打开,都是重复这现象,也有的网址没这现象。

服务器配置

点击查看详细
{
    "log": {
        "access": "",
        "error": "",
        "loglevel": "warning"
    },
    "dns": {
        "servers": [
            "1.1.1.1"
        ],
        "queryStrategy": "UseIPv4"
    },
    "routing": {
        "domainStrategy": "IPIfNonMatch",
        "rules": [
            {
                "type": "field",
                "domain": [
                    "geosite:category-ads-all"
                ],
                "outboundTag": "block"
            },
            {
                "type": "field",
                "ip": [
                    "geoip:cn",
                    "geoip:private"
                ],
                "outboundTag": "block"
            }
        ]
    },
    "inbounds": [
        {
            "listen": "0.0.0.0",
            "port": 443,
            "protocol": "vless",
            "settings": {
                "clients": [
                    {
                        "id": "chika",
                        "flow": "xtls-rprx-vision"
                    }
                ],
                "decryption": "none",
                "fallbacks": [
                    {
                        "dest": "8001",
                        "xver": 1
                    },
                    {
                        "alpn": "h2",
                        "dest": "8002",
                        "xver": 1
                    }
                ]
            },
            "streamSettings": {
                "network": "tcp",
                "security": "tls",
                "tlsSettings": {
                    "rejectUnknownSni": true,
                    "minVersion": "1.3",
                    "certificates": [
                        {
                            "certificateFile": "/etc/ssl/private/fullchain.cer",
                            "keyFile": "/etc/ssl/private/private.key"
                        }
                    ]
                }
            },
            "sniffing": {
                "enabled": true,
                "destOverride": [
                    "http",
                    "tls"
                ]
            }
        }
    ],
    "outbounds": [
        {
            "protocol": "freedom",
            "settings": {
                "domainStrategy": "UseIPv4"
            },
            "tag": "direct"
        },
        {
            "protocol": "blackhole",
            "settings": {
                "response": {
                    "type": "http"
                }
            },
            "tag": "block"
        }
    ]
}

客户端配置

点击查看详细
{
    "log": {
        "access": "",
        "error": "",
        "loglevel": "warning"
    },
    "dns": {
        "servers": [
            "1.1.1.1"
        ],
        "queryStrategy": "UseIPv4"
    },
    "routing": {
        "domainStrategy": "IPIfNonMatch",
        "rules": [
            {
                "type": "field",
                "ip": [
                    "1.1.1.1"
                ],
                "outboundTag": "proxy"
            },
            {
                "type": "field",
                "domain": [
                    "geosite:category-ads-all"
                ],
                "outboundTag": "block"
            },
            {
                "type": "field",
                "domain": [
                    "geosite:geolocation-!cn"
                ],
                "outboundTag": "proxy"
            },
            {
                "type": "field",
                "domain": [
                    "geosite:tld-cn",
                    "geosite:cn"
                ],
                "outboundTag": "direct"
            },
            {
                "type": "field",
                "ip": [
                    "geoip:cn",
                    "geoip:private"
                ],
                "outboundTag": "direct"
            }
        ]
    },
    "inbounds": [
        {
            "listen": "127.0.0.1",
            "port": 10808,
            "protocol": "socks",
            "settings": {
                "udp": true
            },
            "sniffing": {
                "enabled": true,
                "destOverride": [
                    "http",
                    "tls"
                ]
            }
        },
        {
            "listen": "127.0.0.1",
            "port": 10809,
            "protocol": "http",
            "sniffing": {
                "enabled": true,
                "destOverride": [
                    "http",
                    "tls"
                ]
            }
        }
    ],
    "outbounds": [
        {
            "protocol": "vless",
            "settings": {
                "vnext": [
                    {
                        "address": "103.88.XXX.XXX",
                        "port": 443,
                        "users": [
                            {
                                "id": "chika",
                                "encryption": "none",
                                "flow": "xtls-rprx-vision"
                            }
                        ]
                    }
                ]
            },
            "streamSettings": {
                "network": "tcp",
                "security": "tls",
                "tlsSettings": {
                    "serverName": "lovelive-XXXXXX.top",
                    "allowInsecure": false
                }
            },
            "tag": "proxy"
        },
        {
            "protocol": "freedom",
            "settings": {
                "domainStrategy": "AsIs"
            },
            "tag": "direct"
        },
        {
            "protocol": "blackhole",
            "settings": {
                "response": {
                    "type": "http"
                }
            },
            "tag": "block"
        }
    ]
}


chika0801 avatar Oct 09 '22 13:10 chika0801

@chika0801 感谢测试 我也注意到刚开代理的时候有这个现象 大概是握手的 padding 处理有 bug 目前是内测 主要是想知道 padding 对防封锁有没有用

yuhan6665 avatar Oct 09 '22 13:10 yuhan6665

我在同一VPS商上购买了两台服务器,安装了Debian11系统,一台使用了vless+tls+开启了MUX多路复用,一台使用了上述的组合vless+tls(xtls-rprx-vision)[因提示无法与mux功能同时开启,所以没有开启mux功能] 经过一天后,使用了vless+tls的组合端口被封,使用了上述组合的安然无事 可以在一定程度上得出以下结论: 新增的握手长度混淆流控在短期内可以延长服务器被识别的时间,有效

SekiBetu avatar Oct 10 '22 06:10 SekiBetu

Screenshot_2022-10-09-13-37-50-387_com android chrome

chika0801 avatar Oct 10 '22 06:10 chika0801

Screenshot_2022-10-09-13-37-50-387_com android chrome

需要开发者继续完善这种长度混淆,让其变为随机或者是用户可以编辑的选项,让每台服务器拥有不同的规则,这样可以大大拖延被识别的时间

SekiBetu avatar Oct 10 '22 07:10 SekiBetu

@SekiBetu 感谢你的测试 两台新机器的使用情况呢? 请继续在 vision 上使用大流量 @chika0801 以我对人工智能应用的了解 想要适应新变化没有那么快

yuhan6665 avatar Oct 10 '22 11:10 yuhan6665

https://github.com/yuhan6665/v2rayNG/releases/download/aar-test/v2rayNG_1.7.20-vision_null.apk 暂时放一个测试版 方便在安卓上测 注意:需要将服务端改为自动构建 https://github.com/XTLS/Xray-core/actions/runs/3218983882 并修改相应配置

我看了一下 ssl 报错 似乎是因为目前的随机长度混淆有时会超长 下个版本会修的 不影响测试 gfw 的效果

yuhan6665 avatar Oct 10 '22 16:10 yuhan6665

新 xtls 流控实验 最近在修 xtls 漏洞 同时研究 tls 握手 刚好 gfw 升级 顺手加了一个握手包长度混淆 赶紧趁这个机会测试一下

@yuhan6665 这是什么

yuhan6665 avatar Oct 10 '22 16:10 yuhan6665

@yuhan6665 漂亮的很呐

Fangliding avatar Oct 10 '22 16:10 Fangliding

@yuhan6665 It's pretty cool!!!

2022-10-10 21:00 - 23:59 Bandwidth usage in about two hours: 90GB

一些现象:

  • 大多数网站需要刷新多次才能进入,甚至10+
  • 期间BT下载时(100mbps左右)(同时Youtube 4K,5GB.bin下载)有断流情况,Terminal 关闭 重启 xray 后恢复 有时,有时等几分钟恢复,错误为 "failed to find an available destination ...",不确定问题出在哪一方
  • 但是,关闭BT后 下载10gb.bin文件 速度稳定在 30mb/s 高一些或低一些;10GB文件下载了6个,过程稳定非常,无断流;
  • IP 及 443 正常
  • 客户端添加 指纹参数 后,启动xray后一旦传输会报错退出

VPS Details: Vultr Seattle Intel Xeon (Cascadelake) 2.893GHz 1024 MB China Unicom AS4837 Only IPV4 Ping Latency: 170ms No Package Loss

Server Side Configuration - Toggle me!
{
  "log": {
    "loglevel": "info",
    "dnsLog": true
  },
  "inbounds": [
    {
      "listen": "0.0.0.0",
      "port": 443,
      "protocol": "vless",
      "settings": {
        "clients": [
          {
            "id": "469ec843-4c16-43e5-a0a8-512d02c5bb96",
            "flow": "xtls-rprx-vision"
          }
        ],
        "decryption": "none",
        "fallbacks": [
          {
            "dest": 2001
          },
          {
            "dest": 2002,
            "alpn": "h2"
          }
        ]
      },
      "streamSettings": {
        "network": "tcp",
        "security": "tls",
        "tlsSettings": {
          "rejectUnknownSni": true,
          "alpn": ["h2", "http/1.1"],
          "minVersion": "1.3",
          "certificates": [
            {
              "certificateFile": "./fullchain.crt",
              "keyFile": "./private.key"
            }
          ]
        }
      }
    }
  ],
  "outbounds": [
    {
      "sendThrough": "0.0.0.0",
      "protocol": "freedom",
      "settings": {
        "domainStrategy": "UseIPv4"
      }
    }
  ],
  "dns": {
    "servers": [
      "94.140.14.140",
      "94.140.14.141",
      "208.67.222.222",
      "208.67.220.220",
      "1.1.1.1",
      "1.0.0.1",
      "8.8.8.8",
      "8.8.4.4"
    ],
    "queryStrategy": "UseIPv4"
  }
}
Client Side Configuration - Toggle me!
{
  "log": {
    "loglevel": "info",
    "dnsLog": true
  },
  "inbounds": [
    {
      "listen": "127.0.0.1",
      "port": 8080,
      "protocol": "http"
    }
  ],
  "outbounds": [
    {
      "protocol": "vless",
      "settings": {
        "vnext": [
          {
            "address": "xxxx.xxx",
            "port": 443,
            "users": [
              {
                "id": "469ec843-4c16-43e5-a0a8-512d02c5bb96",
                "encryption": "none",
                "flow": "xtls-rprx-vision"
              }
            ]
          }
        ]
      },
      "streamSettings": {
        "network": "tcp",
        "security": "tls",
        "tlsSettings": {
          "alpn": ["h2", "http/1.1"],
          "minVersion": "1.3"
        }
      }
    }
  ]
}

liaoliaots avatar Oct 10 '22 16:10 liaoliaots

@liaoliaots 感谢反馈 BT 我没试 还需要后续研究 关于指纹问题 新流控的一个重要优点就是重新回到了 tls 标准库 这意味着将来 xtls 将可以搭配 utls 使用 隐藏客户端指纹

yuhan6665 avatar Oct 10 '22 16:10 yuhan6665

昨天使用了这个配置,今天还正常。

lanlandezei avatar Oct 11 '22 00:10 lanlandezei

坐标河南濮阳,今天出差过来发现这边的联通和移动,用了这个vless+xtls-rprx-vision,配了上海腾讯云做中转,电脑到腾讯云用vless+xtls-rprx-vision,腾讯云到新加坡vultr用vless+xtls-rprx-vision,能用一会会,只要打开过YouTube,没几分钟必死,死了上海腾讯云的22和443都连不上。

HezeCaoxian avatar Oct 11 '22 06:10 HezeCaoxian

坐标河南濮发现阳,今天出差来腾讯云到上海的联通和移动,用了这个vless+xtls-rprx-vision,配了腾讯云做中转,电脑到腾讯云用vless+xtls-rprx-vision,新加坡vultrless+xtls-rprx-vision,能用一会会,只要打开YouTube,没用v必死,死了上海腾讯云的22和443都连不上。

上面都说了 注意:"streamSettings" "security" 必须使用 “tls” "tlsSettings" 不能使用 “xtls” “xtlsSettings”

lanlandezei avatar Oct 11 '22 07:10 lanlandezei

@chika0801 感谢测试 我也注意到刚开代理的时候有这个现象 大概是握手的 padding 处理有 bug 目前是内测 主要是想知道 padding 对防封锁有没有用

padding的BUG除了要多刷新几次网页才打开,还发现一个现象是网页打开了,图片可能没刷出来,这时个再F5刷新,图片也刷不出来。期待下一个测试版(不是催更) 1

chika0801 avatar Oct 11 '22 08:10 chika0801

xtls-rprx-vision这个模式没有tls in tls特征是吗

GeorgeRudd avatar Oct 11 '22 11:10 GeorgeRudd

坐标河南濮阳,今天出差过来发现这边的联通和移动,用了这个vless+xtls-rprx-vision,配了上海腾讯云做中转,电脑到腾讯云用vless+xtls-rprx-vision,腾讯云到新加坡vultr用vless+xtls-rprx-vision,能用一会会,只要打开过YouTube,没几分钟必死,死了上海腾讯云的22和443都连不上。

感谢测试 目前需要更多样本 我不太清楚河南的情况 是不是可以直连海外VPS 如果可能的话麻烦测一下直连 国内VPS中转确实暴露因素太多了(裁判都是我的人

yuhan6665 avatar Oct 11 '22 12:10 yuhan6665

@yuhan6665

Traffic Black Hole Direct AS4837 Vultr

2022-10-11 Traffic: 22.58GB Time: 21min

  • 可能是数据源的原因,没速度了,但客户端LOG无报错,正常访问
  • 过程非常稳定,前期30MB/s,中期15MB/s,后期10MB/s,然后为0
  • 换源继续测试中...

liaoliaots avatar Oct 11 '22 12:10 liaoliaots

@yuhan6665

Traffic Black Hole Direct AS4837 Vultr

Traffic: 22.58GB Time: 21min

  • 可能是数据源的原因,没速度了,但客户端LOG无报错,正常访问
  • 过程非常稳定,前期30MB/s,中期15MB/s,后期10MB/s,然后为0
  • 换源继续测试中...

你的意思是端口没封 真链接测试是通的但是没有速度?这台机器是你昨天测的那个大流量吗? 你说换源是指换了 vps 还是换了本地?感谢测试

yuhan6665 avatar Oct 11 '22 13:10 yuhan6665

@yuhan6665

https://axipo.github.io/TrafficBlackhole/

  • 数据源 是这个网址中右上角的 Data Source (直译)
  • 没有速度是这个网址测试过程没速度了,掉0,但XRAY客户端日志无报错,访问网页是正常的,端口IP均正常,或许是数据源的问题,因为切换 "Data Source" 后速度恢复
  • 是昨天的Vultr Seattle,没换IP,没换端口,配置一致
  • 观察Vultr流量面板,测试是走的VPS

~ ~ ~ ~

新的测试:

2022-10-11 Traffic: 30.64GB Time: 22min

  • 过程稳定20MB+/s,直到0
  • 没速度了,客户端 Logging 无报错,IP端口正常,网站访问正常,需要换 数据源 继续

liaoliaots avatar Oct 11 '22 13:10 liaoliaots

@liaoliaots 懂了 大概跟 gfw 无关

yuhan6665 avatar Oct 11 '22 13:10 yuhan6665

@yuhan6665

2022-10-11 Traffic: 86.6GB Time: 1h 25min

  • 前中期30MB/s稳定,后期掉速至2MB/s,掉速时下载10GB.bin文件 速度正常 30MB/s,应该是数据源问题
  • 期间只断流1次,下载至50.14GB时出现,持续2-3分钟恢复,客户端错误日志为 [Info] [2580339626] transport/internet/tcp: dialing TCP to tcp:xxxx.xxx:443,此消息反复出现,重启XRAY无效,依然是这个消息;期间ping.pe 测试 TCP xxxx.xxx:443 全绿 正常;
  • 10GB.bin下载完成80%左右时速度波动较大,有时能恢复,有时保持低速,重启XRAY恢复,然后反复,不确定是哪一方的问题

今晚 消耗共 140GB,XRAY SERVER端 回落至一个单页面

liaoliaots avatar Oct 11 '22 14:10 liaoliaots

@liaoliaots 感谢反馈 BT 我没试 还需要后续研究 关于指纹问题 新流控的一个重要优点就是重新回到了 tls 标准库 这意味着将来 xtls 将可以搭配 utls 使用 隐藏客户端指纹

大佬有计划在v2rayNG和v2rayN里加入设置utls的选项吗?

kbr3NwSZ6kFq25 avatar Oct 11 '22 22:10 kbr3NwSZ6kFq25

昨天使用了这个配置,今天还正常。 使用了该配置,,前两天正常,今天早上端口被阻断

lanlandezei avatar Oct 12 '22 00:10 lanlandezei

昨天使用了这个配置,今天还正常。 使用了该配置,,前两天正常,今天早上端口被阻断

感谢汇报 等待更多人以及更长时间测试结果

yuhan6665 avatar Oct 12 '22 00:10 yuhan6665

这两天不在家,一直用流量,端口依然没死,不过也可能是因为流量这个IP用的人多,比较不容易发现

SekiBetu avatar Oct 12 '22 07:10 SekiBetu

流量消耗:215.53GB 所用时间:1h53min

  • 全程 40MB+/S
  • 测试非常单一,流量黑洞10GB.bin下载
  • 无断流
  • IP,443 PORT 正常

liaoliaots avatar Oct 12 '22 10:10 liaoliaots