Skip to content
This repository has been archived by the owner on Mar 17, 2024. It is now read-only.

[Bug] Listen内存在fallback时,UDS形式无法和Dial里的sendthrough共存 #258

Open
SakuraSakuraSakuraChan opened this issue Apr 1, 2023 · 2 comments
Labels
bug Something isn't working

Comments

@SakuraSakuraSakuraChan
Copy link

SakuraSakuraSakuraChan commented Apr 1, 2023

Describe the bug【描述 bug】

前情提要为#148,当时折腾了好久的回落才把伪装做的比较完美。后来继续优化配置,把回落从本地回环端口改为UDS,表现没问题(这里与性能无关,纯粹是为了netstat命令查看监听时少一些端口)。今天尝试加了个sendthrough,准备用V4出站,结果出问题了,[[listen]]内的最终回落失效,ssllabs测试结果是"http failed",但是专门的[[fallback]]相关回落正常,也就是能回落到网页。尝试把[[listen]]内的回落从UDS改为本地回环地址,正常了。这个奇怪得很,按理说[[listen]]里的内容和[[dial]]里的内容没太大关系,不知道为什么UDS和sendthrough只能二选一

用配置来说话,表现正常的配置1:

[[listen]]
tag = "Greencloud_Trojan"
protocol = "trojans"
ip = "0.0.0.0"
port = 443
fallback = ":8888"
adv = "grpc"

[[fallback]]
from = ["Greencloud_Trojan“]
alpn = ["h2"]
dest = "/dev/shm/h2c.socket"

[[dial]]
protocol = "direct"
sendThrough = "0.0.0.0:0"

表现正常的配置2:

[[listen]]
tag = "Greencloud_Trojan"
protocol = "trojans"
ip = "0.0.0.0"
port = 443
fallback = "/dev/shm/http.socket"
adv = "grpc"

[[fallback]]
from = ["Greencloud_Trojan“]
alpn = ["h2"]
dest = "/dev/shm/h2c.socket"

[[dial]]
protocol = "direct"

出现问题的配置:

[[listen]]
tag = "Greencloud_Trojan"
protocol = "trojans"
ip = "0.0.0.0"
port = 443
fallback = "/dev/shm/http.socket"
adv = "grpc"

[[fallback]]
from = ["Greencloud_Trojan“]
alpn = ["h2"]
dest = "/dev/shm/h2c.socket"

[[dial]]
protocol = "direct"
sendThrough = "0.0.0.0:0"

另外还有2个小问题,就不专门发issue了

  1. 回落到UDS的日志有乱码,举例:"Fallback from": "11.4.5.14:11451", "Target": "unix://%2Fdev%2Fshm%2Fhttp.socket", "through": "dual+direct://#Shimokitazawa"}

  2. 需要升级一下quic-go的版本,最近不少用了quic-go的项目在编译时都炸了,跟go1.20有关,似乎是在一些情况下把这个版本号判断为1.2了,现在我用go1.20编译本项目必须带上noquic标签,否则编译必定失败。升级一下quic-go就行,听说1.20版本的quic还优化了占用

@SakuraSakuraSakuraChan SakuraSakuraSakuraChan added the bug Something isn't working label Apr 1, 2023
@accounti
Copy link

之前也遇到这个问题 看日志发现listen里出现uds地址就会把sendthrough也自动识别为uds地址
试试
[[dial]]
protocol = "direct"
network = "mix"
sendThrough = "0.0.0.0:0"

@SakuraSakuraSakuraChan
Copy link
Author

之前也遇到这个问题 看日志发现listen里出现uds地址就会把sendthrough也自动识别为uds地址 试试 [[dial]] protocol = "direct" network = "mix" sendThrough = "0.0.0.0:0"

你这个mix我在example里没见过,只找到了dual,不过还真是有效字段,可以正常运行。可惜我使用这个配置的话sendthrough就无效了,所以还是有共存问题。不过既然定位到问题所在了就等e主席修就好了

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants