XTLS / Xray-core

Xray, Penetrates Everything. Also the best v2ray-core, with XTLS support. Fully compatible configuration.
https://t.me/projectXray
Mozilla Public License 2.0
24.19k stars 3.8k forks source link

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

Closed dilligaf08 closed 4 months ago

dilligaf08 commented 2 years ago

使用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
bash99 commented 2 years ago

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

grpc-opts:
  multiMode: true
  idle_timeout: 13
  grpc-service-name: gfwkillfbx
ghost commented 9 months ago

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

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

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

chika0801 commented 9 months ago

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

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

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

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

ghost commented 9 months ago

我在用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

chika0801 commented 9 months ago

我不用clash。

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

建议你去meta的tg群问问。

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

ghost commented 9 months ago

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

chika0801 commented 9 months ago

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

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