-
Notifications
You must be signed in to change notification settings - Fork 106
[Feature Request] 请求增加sendThrough功能 #141
Comments
有点意思~ |
此功能有用、好实现,即将被实现。 |
最新代码实现了,你可以试试。 |
测试失败了,服务启动时说: |
啊,我注释写错了。应该是要加一个 实际上指明端口也不一定是坏事。也许一些udp的特殊用途能用到。 不过确实,应该加一个检测,如果没指名端口,则自动认为是随机端口。 |
加上:0后启动不报错了,但出站时还是有错误,导致走不了这个dial: |
这个错误应该是读取错误,也就是listen部分的问题,和dial没关系,因为还没开始拨号。你可以自行在main.go 里搜索这段错误的位置。 |
刚才又试了下,没报错了,但是没按指定IP出站,syatemctl日志看起来正常,稍后我开VS里的日志再看看。 |
你在 sendThrough配置中,具体是用的 “127.0.0.1:0”,“0.0.0.0", 还是 “111.222.333.444:0" 呢? 如果是前两种,golang应该也是会自动用ipv6的。 |
是“666.777.888.999:0" |
你要是直接贴上你配置文件就省事多了,省的我一句一句问。 你是不是在trojan上设置的sendthrough? direct也需要设sendThrough的,否则直连的链接是不会通过你trojan设置的sendThrough拨号的。 你的vps如果是在国外,那么一般都是直接direct链接国外网址的,对吧,那你就要在direct上配置sendThrough |
如果不是这个问题的话,那么我猜还有一种可能。因为日志里显示似乎所有的请求都是dns解析之前的。也许被解析成ipv6之后,sendThrough的配置就失灵了?(谁知道golang内部搞什么鬼) 如果直接访问一个ipv6的 ip地址呢? |
实在搞不懂啊,为什么你的 "connid" 都是 251049, 而 handler 却显示为 tcp+tls+trojan,不应该再加上 +smux+simplesocks吗。 如果不是多路复用的话,为什么所有连接的connid都是一个值呢。 难道你用正则把所有connid都改了? |
你这个connid问题与handler的信息输出的矛盾要向我解释清楚。让你贴配置你就贴全好不好?涉及到复用,我要看你怎么配置的多路复用 |
我又试了V2ray,配置文件没有DNS字段,使用sendThrough后可以达到预期目标,出站都是V4,V2和VS的DNS逻辑可能不同。 |
目前的判断,应该是dns问题。也许我们不应该在sendThrough后,直接把dns解析交给系统。我们要强制解析成对应ip类型才行。 估计是因为,同一个网卡同时具有ipv4和ipv6的话,golang在实际使用时可能不会尊重我们传入的localAddr?如果是分开的网卡可能就不会出现这个问题。 |
另外,拨号时,如果是注明 "tcp4" 或者 "tcp6", 应该可以: https://stackoverflow.com/questions/53055808/golang-force-net-http-client-to-use-ipv4-ipv6 |
在最新 提交 ed7fbcb 中,注明了一下4/6,你可以再次编译尝试一下。 |
试了beta4,加入了 sendThrough = "666.777.888.999:0" |
最新代码解决了该问题,我测试通过了,你也编译试一下吧 |
不能给direct设置 AddrStr 为 sendThrough地址,否则该地址会被认为是拨号的目标地址
我之前测试明明成功的,怎么又不行。 |
我测的时候,0.0.0.0就是可以指定v4的。(然后[::0] 可以指定v6) |
成功时,会显示 ipv6的地址无法被解析,can't resolve 之类的。 |
你在本地测试一下这个配置: [[listen]]
protocol = "socks5http"
port = 10800
host = "127.0.0.1"
[[dial]]
protocol = "direct"
sendThrough = "0.0.0.0:0" 我测是好使的,访问 http://www.test-ipv6.com/ 是显示没有ipv6的(我不用vs做代理访问时是有ipv6的) 成功无法访问的日志:
|
我是只做服务端,意思是需要客户端也用VS吗 |
不是啊。这不是测试吗,一样啊 |
你服务端不就是 direct 出吗。现状我们在自己电脑上这么测不也是direct 出吗,这不是同理吗?反正sendThrough就是测direct |
好的,我去试试 |
测试了一下 任何代理客户端都不打开,直接访问 www.test-ipv6.com ,测出的结果是全绿,10/10,就是说IPV6没有任何问题 使用最新版verysimple.exe以及上边几楼的配置,打开测试网站后,依然有IPV6地址,但不是全绿,有2个红色的: 我的系统是Win7,不知道是不是你在linux系统里测试的?Win还是没能完全屏蔽掉V6,需要debug日志吗? |
我是在macos里测的。 |
我在windows上测试了一下(win10),结果很完美,完全能挡住。ip和域名都能挡住 挡住ip时,会显示 dial tcp4: address xxxx::1 no suitable address found. 我没法重现你所讲的一切 |
升级到1.2.5试了下,功能完全正常,之前是不是有代码没合并呀: ),先关了 |
比如流媒体解锁,V4可以但V6不行,需要屏蔽V6出站,sendThrough功能就很需要了
目前如果要实现的话,需要开启服务端DNS,并且在Route里把所有V6地址指向黑洞,感觉略复杂且不优雅,因此希望能加入sendThrough,谢谢~
The text was updated successfully, but these errors were encountered: