MetaCubeX / mihomo

A simple Python Pydantic model for Honkai: Star Rail parsed data from the Mihomo API.
https://wiki.metacubex.one
MIT License
15.16k stars 2.52k forks source link

[Bug] 在 dialer-proxy 中 vless 无法通过 vless 进行连接 #1244

Closed 63936 closed 3 months ago

63936 commented 4 months ago

Verify steps

Operating System

Windows

System Version

Windows 11

Mihomo Version

v1.18.4

Configuration File

proxies:
  - name: "vless-ws-A-1"
    type: vless
    server: vless.ws.a
    port: 80
    udp: true
    uuid: 3b9caebf-e683-4242-9728-82704bc0cbb9
    network: ws
    ws-opts:
      path: /path/
    dialer-proxy: vless-ws-tls-B

  - name: "vless-ws-A-2"
    type: vless
    server: vless.ws.a
    port: 80
    udp: true
    uuid: 3b9caebf-e683-4242-9728-82704bc0cbb9
    network: ws
    ws-opts:
      path: /path/
    dialer-proxy: vless-ws-tls-C

  - name: "vless-ws-tls-B"
    type: vless
    server:  vless.ws-tls.b
    port: 443
    udp: true
    uuid: 6a911c3c-2316-495e-8d32-cc7a9bed6155
    tls: true
    skip-cert-verify: true
    servername:  vless.ws-tls.b
    network: ws
    ws-opts:
      path: /path/

  - name: "vmess-ws-tls-C"
    type: vmess
    server:  vmess.ws-tls.c
    port: 443
    udp: true
    uuid: 7f0777e6-38d5-4fff-844e-200e3a8099a2
    alterId: 0
    cipher: auto
    tls: true
    skip-cert-verify: true
    servername:  vmess.ws-tls.c
    network: ws
    ws-opts:
      path: /path/

Description

配置文件的节点如上所示,其中 vless-ws-A-1 是不通的,vless-ws-A-2 是通的,vless-ws-tls-B 和 vmess-ws-tls-C 都是通的,看下来就是 vless 无法通过 vless。

Reproduction Steps

NA

Logs

No response

xishang0128 commented 4 months ago

@63936 确保服务端没有域名嗅探,否则可能会嗅探出错误sni用于连接

63936 commented 4 months ago

@xishang0128 谢谢,试了下确实是 vless-ws-tls-C 服务端开了 sni 嗅探的原因,但是如果是 vmess 或者其他节点通过同样的 dialer-proxy: vless-ws-tls-C 就没有问题,奇怪。

xishang0128 commented 4 months ago

@63936 你的sni地址必须能解析到真实地址,才能在开启sniff的服务端(并且覆盖目标地址)正常dialer proxy,要么只嗅探不覆盖目标地址也是可以正常使用的

xishang0128 commented 4 months ago

@63936 建议是,如果某个节点必须要使用dialer proxy,应该把协议换成ss这类没有tls的,反正都是通过境外节点出站连接

63936 commented 4 months ago

@xishang0128 本来是使用 Xray-core v1.8.11 搭建的 ss 服务端配置如下:

{
  "inbounds": [
    {
      "port": 8080,
      "protocol": "shadowsocks",
      "settings": {
        "method": "2022-blake3-aes-256-gcm",
        "password": "iRGdDe1ARWkIYf1vuJsJJP3Pl6l2TweLSiR6/wJyTrg=",
        "network": "tcp,udp"
      }
    }
  ],
  "outbounds": [
    {
      "protocol": "freedom"
    }
  ]
}

在 windows 11 使用 v1.18.4 本地的配置如下:

proxies:
  - name: "ss"
    type: ss
    server: ss-server
    port: 8080
    cipher: 2022-blake3-aes-256-gcm
    password: "iRGdDe1ARWkIYf1vuJsJJP3Pl6l2TweLSiR6/wJyTrg="
    udp: true
    udp-over-tcp: true
    udp-over-tcp-version: 2
    dialer-proxy: vless-ws-tls-B

调试下来 udp 一直不通(判断的依据是访问 https://browserleaks.com/webrtc,连接里面没有 udp 的连接),最后才改用的 vless,从上面的配置文件,你能看出来大概是什么原因吗?

xishang0128 commented 4 months ago

@63936 xray服务端的话尝试一下uot version 1

63936 commented 4 months ago

@xishang0128 udp-over-tcp-version: 1 是试过的,udp 也不通。

xishang0128 commented 4 months ago

@xishang0128 udp-over-tcp-version: 1 是试过的,udp 也不通。

哦试了一下,dialer proxy下ss的uot udp确实不通

那就用vless吧,确保sni能在服务端解析出正确地址就行

wwqgtxx commented 4 months ago

@xishang0128 udp-over-tcp-version: 1 是试过的,udp 也不通。

试试 https://github.com/MetaCubeX/mihomo/commit/6d1c62bbf036e7a6c471a1bf0ca6fae27ffa48bd

63936 commented 4 months ago

@wwqgtxx 测试了一下,前面这个配置里的 uot 通了 https://github.com/MetaCubeX/mihomo/issues/1244#issuecomment-2092952590