e1732a364fed / v2ray_simple

a verysimple proxy
MIT License
530 stars 104 forks source link

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

Open SakuraSakuraSakuraChan opened 1 year ago

SakuraSakuraSakuraChan commented 1 year ago

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还优化了占用

accounti commented 1 year ago

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

SakuraSakuraSakuraChan commented 1 year ago

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

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