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

使用openclash连接trojan grpc不定期断开连接

Open dilligaf08 opened this issue 3 years ago • 1 comments

使用openclash(clash core 1.10.0)连接 xray的trojan grpc时会不定期断开连接。一般在长时间连接时出现,一部电影的时间几乎必定会出现一到两次。断流以后立即重启openclash可以立即恢复。

查看xray的error日志有如下记录。

2022/04/09 01:53:30 [Warning] [2354333527] app/proxyman/inbound: connection ends > proxy/vless/inbound: connection ends > proxy/vless/inbound: failed to write A response payload > transport/internet/grpc/encoding: failed to send data over gRPC tunnel > rpc error: code = Unavailable desc = transport is closing

server配置为nginx转发xray。

xray配置为

        {
            "port": 1001,
            "listen": "127.0.0.1",
            "protocol": "trojan",
            "settings": {
                    "clients": [
                        {
                        "password": "XXX",
                        "level": 0
                        }
                    ]
            },
            "streamSettings": {
                    "network": "grpc",
                    "grpcSettings": {
                            "serviceName": "abc"
                    }
            }
        },

nginx配置为

    server {
    listen 8080 ssl http2 so_keepalive=on;
    listen [::]:8080 ssl http2 so_keepalive=on;
    server_name www;

    index index.html;
    root /var/www/html;

    ssl_certificate       /etc/letsencrypt/live/www.pem;
    ssl_certificate_key   /etc/letsencrypt/live/www.pem;
    ssl_protocols         TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;

    client_header_timeout 52w;
    keepalive_timeout 52w;
    location /cestbon {
            if ($content_type !~ "application/grpc") {
                    return 404;
            }
            client_max_body_size 0;
            client_body_buffer_size 512k;
            grpc_set_header X-Real-IP $remote_addr;
            client_body_timeout 52w;
            grpc_read_timeout 52w;
            grpc_pass grpc://127.0.0.1:1001;
            }
    }

clash配置为

name: "XXXXX"
server: www
port: 8000
type: trojan
password: xxx
network: grpc
alpn:
  - h2
udp: true
skip-cert-verify: false
sni: www
grpc-opts:
  grpc-service-name: abc

dilligaf08 avatar Apr 09 '22 13:04 dilligaf08

我在用vless + grpc时,增加timeout配置能很大程度改善断流,当然我还同时有好几个线路一般的vps一起urltest测速使用

grpc-opts:
  multiMode: true
  idle_timeout: 13
  grpc-service-name: gfwkillfbx

bash99 avatar May 02 '22 13:05 bash99

我在用vless + grpc时,增加timeout配置能很大程度改善断流,当然我还同时有好几个线路一般的vps一起urltest测速使用

grpc-opts:
  multiMode: true
  idle_timeout: 13
  grpc-service-name: gfwkillfbx

multimode和idle_timeout在clash中有代码实现吗?我看所有的clash文档里都没提到这两个参数。

ghost avatar Dec 08 '23 07:12 ghost

我在用vless + grpc时,增加timeout配置能很大程度改善断流,当然我还同时有好几个线路一般的vps一起urltest测速使用

grpc-opts:
  multiMode: true
  idle_timeout: 13
  grpc-service-name: gfwkillfbx

multimode和idle_timeout在clash中有代码实现吗?我看所有的clash文档里都没提到这两个参数。

你去看下clash.meta内核文档了

chika0801 avatar Dec 08 '23 07:12 chika0801

我在用vless + grpc时,增加timeout配置能很大程度改善断流,当然我还同时有好几个线路一般的vps一起urltest测速使用

grpc-opts:
  multiMode: true
  idle_timeout: 13
  grpc-service-name: gfwkillfbx

multimode和idle_timeout在clash中有代码实现吗?我看所有的clash文档里都没提到这两个参数。

你去看下clash.meta内核文档了

确实没看到啊,trojan-grpc这些配置里都只有一个servicename选项 https://wiki.metacubex.one/config/proxies/trojan/#trojan-grpc

不过我试了一下加上这个参数好像clash也能正常运行,我在想这是不是grpc-go的一个通用实现,正在看这部分的东西。 好像确实是grpc-go本身的实现: https://github.com/grpc/grpc-go/pull/6263

ghost avatar Dec 08 '23 07:12 ghost

我不用clash。

我刚在 https://github.com/MetaCubeX/mihomo/blob/Alpha/docs/config.yaml 搜了下,也没看到类似Xray里健康检查的参数。

建议你去meta的tg群问问。

另外grpc要好线路vps这点你知道吧?

chika0801 avatar Dec 08 '23 07:12 chika0801

vps线路好也架不住公司网络差,哈哈哈。反正我先加上这个参数跑一段时间看看,目前好像感觉是有点改善。

ghost avatar Dec 08 '23 07:12 ghost

你至少要懂 vps到你 之间线路好,才用grpc。

不然建议你去用sing-box中的tcp brutal比这还爽些。

chika0801 avatar Dec 08 '23 07:12 chika0801