sing-box icon indicating copy to clipboard operation
sing-box copied to clipboard

Reality协议代理TLSv1.3网站的连接不释放

Open qwerr0 opened this issue 1 year ago • 2 comments

操作系统

Linux

系统版本

Debian12.7

安装类型

sing-box 原始命令行程序

如果您使用图形客户端程序,请提供该程序版本。

METACUBE 1.168.0

版本

sing-box version 1.11.0-alpha.1-4b606bec

Environment: go1.23.2 linux/amd64
Tags: with_gvisor,with_dhcp,with_wireguard,with_reality_server,with_clash_api,with_quic,with_utls,with_ech
Revision: 4b606bece51e3bebfface19e5d20cf114fbe10ba
CGO: enabled

描述

使用 sing-box 搭建服务端的前提下: 使用 sing-box 客户端 + TLSv1.3 连接不释放。 使用 sing-box 客户端 + TLSv1.2 正常释放。 使用 sing-box 客户端 + 非TLS连接 正常释放。 使用 mihomo 客户端 + TLSv1.3/TLSv1.2 连接均正常释放。 sing-box 客户端是软路由(使用 tproxy 或 socks5 方式代理均可触发连接不释放的BUG) mihomo 客户端是 clash meta for android

重现方式

测试使用命令(tproxy 和 socks5 代理): TLSv1.3: curl --tls-max 1.3 https://rr2---sn-aigl6nzs.googlevideo.com curl --tls-max 1.2 --socks5 10.1.1.1:9900 https://rr2---sn-aigl6nzs.googlevideo.com TLSv1.2: curl --tls-max 1.2 https://rr2---sn-aigl6nzs.googlevideo.com curl --tls-max 1.2 --socks5 10.1.1.1:9900 https://rr2---sn-aigl6nzs.googlevideo.com 非TLS连接: curl http://rr2---sn-aigl6nzs.googlevideo.com curl --socks5 10.1.1.1:9900 http://rr2---sn-aigl6nzs.googlevideo.com

sing-box 关键配置(域名匹配配置略): 客户端

{
  "inbounds": [
    {
      "tag": "in-tproxy",
      "type": "tproxy",
      "listen": "::",
      "listen_port": 9999,
      "sniff": false,
      "sniff_override_destination": false
    },
    {
      "tag": "in-socks",
      "type": "socks",
      "listen": "::",
      "listen_port": 9900,
      "tcp_fast_open": true,
      "tcp_multi_path": true,
      "sniff": false,
      "sniff_override_destination": false
    }
  ],
  "outbounds": [
    {
      "tag": "out-xtls",
      "tcp_fast_open": false,
      "tcp_multi_path": false,
      "type": "vless",
      "server": "出口IP",
      "server_port": 443,
      "uuid": "FKOCze17B6wHgJn457vPcg==",
      "flow": "xtls-rprx-vision",
      "tls": {
        "enabled": true,
        "server_name": "s0.awsstatic.com",
        "utls": {
          "enabled": true,
          "fingerprint": "chrome"
        },
        "reality": {
          "enabled": true,
          "public_key": "JbVE9k28qoWlUq1VnGk_-0AOrXz5TKkpCQHwW9Aj5Bs",
          "short_id": ""
        }
      },
      "packet_encoding": "xudp"
    }
  ]
}

服务端

{
  "inbounds": [
    {
      "tag": "in-xtls",
      "listen": "::",
      "listen_port": 443,
      "sniff": false,
      "type": "vless",
      "users": [
        { "name": "", "uuid": "FKOCze17B6wHgJn457vPcg==", "flow": "xtls-rprx-vision" }
      ],
      "tls": {
        "enabled": true,
        "server_name": "s0.awsstatic.com",
        "reality": {
          "enabled": true,
          "handshake": {
            "server": "s0.awsstatic.com",
            "server_port": 443
          },
          "private_key": "cHe3m7I7oZXUZjuhwgu7B0nfD7H9UnVSuu3R0K7XH18",
          "short_id": [""]
        }
      }
    }
  ],
  "outbounds": [
    {
      "tag": "out-direct",
      "type": "direct"
    }
  ]
}

日志

curl --tls-max 1.3 https://rr2---sn-aigl6nzs.googlevideo.com
sing-box为客户端, sing-box为服务端, TLSv1.3建立连接后不释放的日志:
INFO[0158] [1201354724 0ms] inbound/vless[in-xtls]: inbound connection from 来源IP:53486
INFO[0158] [713786906 0ms] inbound/vless[in-xtls]: [0] inbound connection to rr2---sn-aigl6nzs.googlevideo.com:443
DEBUG[0158] [713786906 1ms] router: match[3] rule_set=geo-gfw => out-proxy
INFO[0158] [713786906 1ms] outbound/direct[out-direct]: outbound connection to rr2---sn-aigl6nzs.googlevideo.com:443
TRACE[0159] inbound/vless[in-xtls]: Xtls Unpadding new block 21 517 padding 717 0
TRACE[0159] inbound/vless[in-xtls]: XtlsFilterTls found tls client hello! 517
TRACE[0159] inbound/vless[in-xtls]: XtlsFilterTls found tls 1.3! 4639 4866 true
TRACE[0159] inbound/vless[in-xtls]: XtlsPadding 4639 191 0
TRACE[0159] inbound/vless[in-xtls]: Xtls Unpadding new block 5 199 padding 1115 0
TRACE[0159] inbound/vless[in-xtls]: XtlsPadding 2223 14 2
TRACE[0159] inbound/vless[in-xtls]: XtlsWrite writeV 0 0 0
TRACE[0159] inbound/vless[in-xtls]: Xtls Unpadding new block 5 24 padding 930 2
TRACE[0159] inbound/vless[in-xtls]: XtlsRead readV

curl --tls-max 1.3 https://rr2---sn-aigl6nzs.googlevideo.com
mihomo为客户端, sing-box为服务端, TLSv1.3建立连接后正常释放的日志:
INFO[1165] [2787219527 0ms] inbound/vless[in-xtls]: inbound connection from 来源IP:49211
INFO[1165] [2059792308 6ms] inbound/vless[in-xtls]: [0] inbound connection to rr2---sn-aigl6nzs.googlevideo.com:443
DEBUG[1165] [2059792308 7ms] router: match[3] rule_set=geo-gfw => out-proxy
INFO[1165] [2059792308 7ms] outbound/direct[out-direct]: outbound connection to rr2---sn-aigl6nzs.googlevideo.com:443
TRACE[1165] inbound/vless[in-xtls]: Xtls Unpadding new block 21 517 padding 832 0
TRACE[1165] inbound/vless[in-xtls]: XtlsFilterTls found tls client hello! 517
TRACE[1166] inbound/vless[in-xtls]: XtlsFilterTls found tls 1.3! 4639 4866 true
TRACE[1166] inbound/vless[in-xtls]: XtlsPadding 4639 131 0
TRACE[1166] inbound/vless[in-xtls]: Xtls Unpadding new block 5 80 padding 896 2
TRACE[1166] inbound/vless[in-xtls]: XtlsRead readV
TRACE[1166] inbound/vless[in-xtls]: XtlsPadding 2223 235 2
TRACE[1166] inbound/vless[in-xtls]: XtlsWrite writeV 0 0 0

面板强制关闭没有释放的TLSv1.3的连接的日志:
TRACE[0213] inbound/vless[in-xtls]: Xtls Unpadding new block 5 471 padding 236 1
DEBUG[0213] [1201354724 54.91s] inbound/vless[in-xtls]: connection closed: process connection from 来源IP:53486: upload: read tcp 出口IP:443->来源IP:53486: use of closed network connection
TRACE[0213] inbound/vless[in-xtls]: XtlsFilterTls stop filtering 110
TRACE[0213] inbound/vless[in-xtls]: XtlsPadding 110 223 1

curl --tls-max 1.2 https://rr2---sn-aigl6nzs.googlevideo.com
sing-box为客户端, sing-box为服务端, TLSv1.2建立连接后正常释放的日志:
INFO[0513] [4109789228 0ms] inbound/vless[in-xtls]: inbound connection from 来源IP:42780
INFO[0513] [1861343092 0ms] inbound/vless[in-xtls]: [0] inbound connection to rr2---sn-aigl6nzs.googlevideo.com:443
DEBUG[0513] [1861343092 0ms] router: match[3] rule_set=geo-gfw => out-proxy
INFO[0513] [1861343092 0ms] outbound/direct[out-direct]: outbound connection to rr2---sn-aigl6nzs.googlevideo.com:443
TRACE[0513] inbound/vless[in-xtls]: Xtls Unpadding new block 21 250 padding 910 0
TRACE[0513] inbound/vless[in-xtls]: XtlsFilterTls found tls client hello! 250
TRACE[0513] inbound/vless[in-xtls]: XtlsFilterTls found tls 1.2! 4571
TRACE[0513] inbound/vless[in-xtls]: XtlsPadding 4571 163 0
TRACE[0513] inbound/vless[in-xtls]: Xtls Unpadding new block 5 85 padding 1302 0
TRACE[0514] inbound/vless[in-xtls]: XtlsPadding 43 1011 0
TRACE[0514] inbound/vless[in-xtls]: Xtls Unpadding new block 5 118 padding 822 1
TRACE[0514] inbound/vless[in-xtls]: XtlsPadding 1795 250 1

curl http://rr2---sn-aigl6nzs.googlevideo.com
sing-box为客户端, sing-box为服务端, 非TLS连接建立后正常释放的日志:
INFO[0321] [2710045854 0ms] inbound/vless[in-xtls]: inbound connection from 来源IP:54784
INFO[0321] [1722893644 0ms] inbound/vless[in-xtls]: [0] inbound connection to rr2---sn-aigl6nzs.googlevideo.com:80
DEBUG[0321] [1722893644 0ms] router: match[3] rule_set=geo-gfw => out-proxy
INFO[0321] [1722893644 0ms] outbound/direct[out-direct]: outbound connection to rr2---sn-aigl6nzs.googlevideo.com:80
TRACE[0322] inbound/vless[in-xtls]: Xtls Unpadding new block 21 97 padding 155 0
TRACE[0322] inbound/vless[in-xtls]: XtlsPadding 1753 251 0

支持我们

完整性要求

  • [X] 我保证阅读了文档,了解所有我编写的配置文件项的含义,而不是大量堆砌看似有用的选项或默认值。
  • [X] 我保证提供了可以在本地重现该问题的服务器、客户端配置文件与流程,而不是一个脱敏的复杂客户端配置文件。
  • [X] 我保证提供了可用于重现我报告的错误的最简配置,而不是依赖远程服务器、TUN、图形界面客户端或者其他闭源软件。
  • [X] 我保证提供了完整的配置文件与日志,而不是出于对自身智力的自信而仅提供了部分认为有用的部分。

qwerr0 avatar Oct 25 '24 10:10 qwerr0

sing-box搭建reality节点无法在V2rayN上Xray内核上使用,必须切换vless协议内核为sing-box才可以正常使用大家有遇到这个问题吗?但是反过来是可以的。

LutongZhu avatar Oct 26 '24 01:10 LutongZhu

sing-box搭建reality节点无法在V2rayN上Xray内核上使用,必须切换vless协议内核为sing-box才可以正常使用大家有遇到这个问题吗?但是反过来是可以的。

可能是因为 sing-box 的 reality 库一年多没更新了。

qwerr0 avatar Oct 26 '24 10:10 qwerr0

sing-box搭建reality节点无法在V2rayN上Xray内核上使用,必须切换vless协议内核为sing-box才可以正常使用大家有遇到这个问题吗?但是反过来是可以的。

可能是因为 sing-box 的 reality 库一年多没更新了。

原来还会有这种问题! image_2024-10-27_09-35-50

LutongZhu avatar Oct 27 '24 01:10 LutongZhu