-
Notifications
You must be signed in to change notification settings - Fork 106
trojan客户端传输 udp +ipv6 数据时报错 #136
Comments
试过在 IPv6 地址前后加上 |
@Leao9203 使用的是ip2socks方式对接的 主要是UDP全部出问题 |
收到。 |
你这个百分号是怎么出现的?可能不是vs这里的问题。建议手动测试一下,不使用ip2socks |
标着,似乎还没支持ipv6,在todo里有,没勾选上。 |
@e1732a364fed 我使用 https://github.com/zfl9/ipt2socks |
你配置文件和日志发全一些好吗? |
@e1732a364fed [[listen]] [[listen]] |
我看了。 那个 5B 和 5D 实际上就是 ascii 的 也就是说,你的上游 把这个中括号也当作 ip的一部分传送过来了,才导致的识别问题。 tproxy 应该没什么ipv6方面的问题的,因为我们这里的代码 trojan-go 也在用。 |
@e1732a364fed 其实我想去掉上游ipt2,trojan-go在tproxy udp的ipv6也同样出现问题 你可以复现一下nft的规则配置 |
啊,没想到trojan-go也有同样的问题!怪不得。因为我们两个都使用同样的上游代码。 看来需要好好研究一下了。 |
我稍微改动了一下,你用最新代码重新编译试试看看还有没有问题 |
有空我会试试 现在外地 |
@e1732a364fed |
😭 |
socks5 错误具体是什么错误?vs的完整日志输出是什么? 另外,你只给了udp的情况,tcp呢? |
tcp正常 |
客户端和服务端都是用的vs吗,还是只有客户端用的是vs |
有对比过使用v2ray或者xray替换vs吗? |
客户端换过这两种和trojan全系列都能正常 服务端没法更改,用的他人服务 |
socks5用的是ipt2socks做转换,这个跟服务端没啥关系,貌似是编码方式不兼容 |
经过真机测试,ipv6确实存在问题,正在解决当中。 经过测试,udp的ipv4传输没问题,ipv6出错,错误报错在trojan服务端。 报错类似下面:
下面提供测试方案: 用golang编写一个udp发送程序,然后构建三个vs配置,第一个配置为 dokodemo -> socks5 同时要有一个ipv6机,用nc监听,比如监听4444端口,命令为 分别记为 “udp发送程序”,v1,v2,v3, ipv6机 udp发送程序给 v1 发送 udp数据,v1通过 dokodemo将该udp数据指定 目标为 ipv6机, 经过socks5 发送到 v2 v2将socks5数据转化成 trojan数据,发送给 v3, v3trojan接受到数据,解析出目标为 ipv6机后,向该 ipv6机发送 “udp发送程序” 逐级传来的 那个数据。 发送程序代码如下,用 go run main.go 执行 package main
import (
"fmt"
"net"
"os"
)
func main() {
udpServer, err := net.ResolveUDPAddr("udp", "127.0.0.1:63782")
if err != nil {
println("ResolveUDPAddr failed:", err.Error())
os.Exit(1)
}
conn, err := net.DialUDP("udp", nil, udpServer)
if err != nil {
println("Listen failed:", err.Error())
os.Exit(1)
}
fmt.Println("ready to input")
defer conn.Close()
var str string
for {
_, err = fmt.Scanln(&str)
if err != nil {
println("Scanln failed:", err.Error())
os.Exit(1)
}
conn.Write([]byte(str))
}
} 不用nc作为数据发送来源,是因为,nc在拨号udp时,会重试多次,而且会预先发送 类似 XXXX 的数据头,这会干扰测试 |
你测一下吧,该问题socks5和tproxy无关。是vs的trojan客户端的错误,最新代码已经解决了 |
关于tproxy的问题,我新开一个issue, #178 |
那个tproxy的问题在最新代码应该也解决了,你测一下吧 |
下星期我回家试试 谢谢你的一直维护 |
不管使用socks5或tproxy模式经过的ipv6地址都是错误
socks5: udp://%5B2404:6800:4009:82b::200a%5D:443
tproxy: ERROR TProxy startLoopUDP loop read failed {"error": "unable to obtain original destination: %!s()"}
The text was updated successfully, but these errors were encountered: