v2fly / v2ray-core

A platform for building proxies to bypass network restrictions.
https://v2fly.org
MIT License
29.46k stars 4.65k forks source link

gRPC+tls无法启用ECH:MinVersion must be >= VersionTLS13 if EncryptedClientHelloConfigList is populated #3195

Open bl34ch opened 2 weeks ago

bl34ch commented 2 weeks ago

你正在使用哪个版本的 V2Ray?

v5.21.0

你的使用场景是什么?

上网

你看到的异常现象是什么?

连接失败

你期待看到的正常表现是怎样的?

连接成功

请附上你的配置

服务端配置:

// 在这里附上服务器端配置文件

客户端配置:

{
  "outbounds": [
    {
      "protocol": "shadowsocks",
      "settings": {
        "servers": [
          {
            "address": "/*redacted*/",
            "port": 443,
            "method": "none",
            "password": "/*redacted*/"
          }
        ]
      },
      "streamSettings": {
        "network": "grpc",
        "security": "tls",
        "grpcSettings": {
          "serviceName": "/*redacted*/"
        },
        "tlsSettings": {
          "echDohServer": "https://1.1.1.1/dns-query"
        }
      }
    }
  ]
}

请附上出错时软件输出的错误日志

服务器端错误日志:

// 在这里附上服务器端日志

客户端错误日志:

app/proxyman/outbound: failed to process outbound traffic > proxy/shadowsocks: failed to find an available destination > common/retry: [transport/internet/grpc: failed to dial Grpc > transport/internet/grpc: Cannot dial grpc > rpc error: code = Unavailable desc = connection error: desc = "transport: authentication handshake failed: tls: MinVersion must be >= VersionTLS13 if EncryptedClientHelloConfigList is populated"] > common/retry: all retry attempts failed

请附上访问日志

// 在这里附上服务器端日志

其它相关的配置文件(如 Nginx)和相关日志

如果 V2Ray 无法启动,请附上 --test 命令的输出

如果 V2Ray 服务运行异常,请附上 journal 日志

bl34ch commented 2 weeks ago

gprc+tls启用ECH会失败,去掉tlsSetting里的"echDohServer": "https://1.1.1.1/dns-query"就没有问题。同时ws+tls能够正常启用ECH。

日志里提到了“MinVersion must be >= VersionTLS13 if EncryptedClientHelloConfigList is populated”。猜测是dial grpc时默认的最低版本没有设置正确导致的。

dyhkwong commented 2 weeks ago

https://github.com/grpc/grpc-go/blob/98959d9a4904e98bbf8b423ce6a3cb5d36f90ee1/credentials/tls.go#L205-L210

parsa2000200 commented 1 week ago

lips with a smile and

bl34ch commented 1 week ago

https://github.com/grpc/grpc-go/blob/98959d9a4904e98bbf8b423ce6a3cb5d36f90ee1/credentials/tls.go#L205-L210

在使用gRPC+ECH的时候设置MinVersion为1.3,或者说把minVersion也作为tlsSetting的选项,允许用户来配置也行。

dyhkwong commented 1 week ago

https://github.com/v2fly/v2ray-core/blob/a72c4d264453cfcae57cd5ee14475e4808e44905/transport/internet/tls/config.proto#L74 min version 是设置项来的,不过只有 jsonv5

bl34ch commented 1 week ago

https://github.com/v2fly/v2ray-core/blob/a72c4d264453cfcae57cd5ee14475e4808e44905/transport/internet/tls/config.proto#L74 min version 是设置项来的,不过只有 jsonv5

请问v5该如何配置ech相关的选项? v4版本的配置我是从 https://github.com/v2fly/v2ray-core/pull/3162 看到的,但是没找到v5相关配置。