Closed futuretech6 closed 8 months ago
同一网络环境下 amd64 linux 机器的 docker 可以运行
更新到最新的 latest 镜像(v0.5.0)试试?
我这边使用0.5.0,在macos上使用docker也遇到了类似的问题
zju-connect | Ping tcp://210.32.174.2:443(210.32.174.2:443) - Connected - time=13.983833ms
zju-connect | Ping tcp://124.160.105.200:443(124.160.105.200:443) - Connected - time=12.897083ms
zju-connect | Ping tcp://61.175.193.50:443(61.175.193.50:443) - Connected - time=16.80625ms
zju-connect | Ping tcp://218.108.88.254:443(218.108.88.254:443) - Connected - time=17.194291ms
zju-connect | Ping tcp://124.160.105.200:443(124.160.105.200:443) - Connected - time=9.786708ms
zju-connect | Ping tcp://218.108.88.254:443(218.108.88.254:443) - Connected - time=9.668083ms
zju-connect | Ping tcp://61.175.193.50:443(61.175.193.50:443) - Connected - time=12.889667ms
zju-connect | Ping tcp://210.32.174.2:443(210.32.174.2:443) - Connected - time=13.763375ms
zju-connect | Ping tcp://124.160.105.200:443(124.160.105.200:443) - Connected - time=8.032333ms
zju-connect | Ping tcp://61.175.193.50:443(61.175.193.50:443) - Connected - time=8.327833ms
zju-connect | Ping tcp://218.108.88.254:443(218.108.88.254:443) - Connected - time=10.099083ms
zju-connect | Ping tcp://210.32.174.2:443(210.32.174.2:443) - Connected - time=10.431459ms
zju-connect | 2023/11/10 07:36:33 Best line: 124.160.105.200:443
zju-connect | 2023/11/10 07:36:33 Request: https://124.160.105.200:443/por/login_auth.csp?apiversion=1
zju-connect | goroutine 1 [running]:
zju-connect | runtime/debug.Stack()
zju-connect | runtime/debug/stack.go:24 +0x5e
zju-connect | runtime/debug.PrintStack()
zju-connect | runtime/debug/stack.go:16 +0x13
zju-connect | github.com/mythologyli/zju-connect/client.(*EasyConnectClient).loginAuthAndPsw(0xc0000e0180)
zju-connect | github.com/mythologyli/zju-connect/client/request.go:50 +0x9c9
zju-connect | github.com/mythologyli/zju-connect/client.(*EasyConnectClient).requestTwfID(0xc0000afbc8?)
zju-connect | github.com/mythologyli/zju-connect/client/request.go:28 +0x18
zju-connect | github.com/mythologyli/zju-connect/client.(*EasyConnectClient).Setup(0xc0000e0180)
zju-connect | github.com/mythologyli/zju-connect/client/client.go:85 +0x25
zju-connect | github.com/mythologyli/zju-connect/client.(*EasyConnectClient).Setup(0xc0000e0180)
zju-connect | github.com/mythologyli/zju-connect/client/client.go:115 +0x37e
zju-connect | main.main()
zju-connect | github.com/mythologyli/zju-connect/main.go:37 +0x386
使用宿主机跑则正常
我这边使用0.5.0,在macos上使用docker也遇到了类似的问题
使用宿主机跑则正常
如果关掉多线路选择呢,会不会也在 keepalive 这一步出错
pull 完重新跑,换了个报错
panic: unexpected send handshake reply
goroutine 77 [running]:
github.com/mythologyli/zju-connect/client.(*RvpnConn).Write(0xc00040c000, {0xc0000e00a0?, 0x40008035b8?, 0x8?})
github.com/mythologyli/zju-connect/client/rvpn_conn.go:48 +0x126
github.com/mythologyli/zju-connect/stack/gvisor.(*Endpoint).WritePackets(0xc000318e70, {{0xc000214080, 0x1, 0x1}})
github.com/mythologyli/zju-connect/stack/gvisor/stack.go:79 +0xc3
gvisor.dev/gvisor/pkg/tcpip/stack.(*delegatingQueueingDiscipline).WritePacket(0xc00037e020, 0xc0002a0c80)
gvisor.dev/gvisor@v0.0.0-20231020174304-b8a429915ff1/pkg/tcpip/stack/nic.go:146 +0xa2
gvisor.dev/gvisor/pkg/tcpip/stack.(*nic).writeRawPacket(0xc000400000, 0xc0002a0c80)
gvisor.dev/gvisor@v0.0.0-20231020174304-b8a429915ff1/pkg/tcpip/stack/nic.go:399 +0x3a
gvisor.dev/gvisor/pkg/tcpip/stack.(*nic).writePacket(0xc000400000, 0x0?)
gvisor.dev/gvisor@v0.0.0-20231020174304-b8a429915ff1/pkg/tcpip/stack/nic.go:386 +0x37
gvisor.dev/gvisor/pkg/tcpip/stack.(*nic).WritePacket(0xc000400000, 0xc000000564?, 0xc0002a0c80)
gvisor.dev/gvisor@v0.0.0-20231020174304-b8a429915ff1/pkg/tcpip/stack/nic.go:347 +0x146
gvisor.dev/gvisor/pkg/tcpip/network/ipv4.(*endpoint).writePacketPostRouting(0xc0002b8900, 0xc000592240, 0xc0002a0c80, 0x0?)
gvisor.dev/gvisor@v0.0.0-20231020174304-b8a429915ff1/pkg/tcpip/network/ipv4/ipv4.go:588 +0x2dd
gvisor.dev/gvisor/pkg/tcpip/network/ipv4.(*endpoint).writePacket(0xc0002b8900, 0x0?, 0x4?)
gvisor.dev/gvisor@v0.0.0-20231020174304-b8a429915ff1/pkg/tcpip/network/ipv4/ipv4.go:538 +0x1a5
gvisor.dev/gvisor/pkg/tcpip/network/ipv4.(*endpoint).WritePacket(0x92c980?, 0xc000592240, {0x800?, 0x0?, 0x0?}, 0x0?)
gvisor.dev/gvisor@v0.0.0-20231020174304-b8a429915ff1/pkg/tcpip/network/ipv4/ipv4.go:506 +0xbe
gvisor.dev/gvisor/pkg/tcpip/stack.(*Route).WritePacket(0xc000592240, {0x27ba40?, 0xc0?, 0x0?}, 0xc0003f7166?)
gvisor.dev/gvisor@v0.0.0-20231020174304-b8a429915ff1/pkg/tcpip/stack/route.go:495 +0x79
gvisor.dev/gvisor/pkg/tcpip/transport/internal/network.(*WriteContext).WritePacket(0xc00051d288, 0xc0002a0c80, 0x0)
gvisor.dev/gvisor@v0.0.0-20231020174304-b8a429915ff1/pkg/tcpip/transport/internal/network/endpoint.go:320 +0xc5
gvisor.dev/gvisor/pkg/tcpip/transport/udp.(*endpoint).write(0xc0005aa700, {0xabdbb8, 0xc000318630}, {0x0, 0x0, 0x0, 0x0, {0x0, 0x0, 0x0, ...}})
gvisor.dev/gvisor@v0.0.0-20231020174304-b8a429915ff1/pkg/tcpip/transport/udp/endpoint.go:529 +0x4c9
gvisor.dev/gvisor/pkg/tcpip/transport/udp.(*endpoint).Write(0xc0005aa700, {0xabdbb8?, 0xc000318630?}, {0x0, 0x0, 0x0, 0x0, {0x0, 0x0, 0x0, ...}})
gvisor.dev/gvisor@v0.0.0-20231020174304-b8a429915ff1/pkg/tcpip/transport/udp/endpoint.go:366 +0x59
gvisor.dev/gvisor/pkg/tcpip/adapters/gonet.(*UDPConn).WriteTo(0xc00020e5a0, {0xc0005a8482, 0x2a, 0x200}, {0x0?, 0x0?})
gvisor.dev/gvisor@v0.0.0-20231020174304-b8a429915ff1/pkg/tcpip/adapters/gonet/gonet.go:674 +0x222
gvisor.dev/gvisor/pkg/tcpip/adapters/gonet.(*UDPConn).Write(0x80000000001?, {0xc0005a8482?, 0x6440be0a?, 0x0?})
gvisor.dev/gvisor@v0.0.0-20231020174304-b8a429915ff1/pkg/tcpip/adapters/gonet/gonet.go:648 +0x1d
net.dnsPacketRoundTrip({_, _}, _, {{{0x66, 0x69, 0x6c, 0x65, 0x2e, 0x63, 0x63, ...}, ...}, ...}, ...)
net/dnsclient_unix.go:102 +0x9e
net.(*Resolver).exchange(_, {_, _}, {_, _}, {{{0x66, 0x69, 0x6c, 0x65, 0x2e, ...}, ...}, ...}, ...)
net/dnsclient_unix.go:187 +0x528
net.(*Resolver).tryOneName(_, {_, _}, _, {_, _}, _)
net/dnsclient_unix.go:277 +0x466
net.(*Resolver).goLookupIPCNAMEOrder.func3.1(0x1?)
net/dnsclient_unix.go:653 +0x85
created by net.(*Resolver).goLookupIPCNAMEOrder.func3 in goroutine 76
net/dnsclient_unix.go:652 +0x158
pull 完重新跑,换了个报错
好怪,可以测试一下本机跑有没有问题嘛? https://github.com/Mythologyli/zju-connect/releases/download/v0.5.0/zju-connect-darwin-arm64.zip
我这边使用0.5.0,在macos上使用docker也遇到了类似的问题 使用宿主机跑则正常
如果关掉多线路选择呢,会不会也在 keepalive 这一步出错
仍然出错
如果关掉多线路选择呢,会不会也在 keepalive 这一步出错
会在这里的io.WriteString报错EOF
log.Printf("ECAgent request: /por/conf.csp & /por/rclist.csp")
_, err = io.WriteString(
conn,
"GET /por/conf.csp HTTP/1.1\r\nHost: "+c.server+
"\r\nCookie: TWFID="+c.twfID+
"\r\n\r\nGET /por/rclist.csp HTTP/1.1\r\nHost: "+c.server+
"\r\nCookie: TWFID="+c.twfID+"\r\n\r\n",
)
if err != nil {
return err
}
怀疑是ssl相关问题,我排查一下
pull 完重新跑,换了个报错
好怪,可以测试一下本机跑有没有问题嘛? https://github.com/Mythologyli/zju-connect/releases/download/v0.5.0/zju-connect-darwin-arm64.zip
直接运行报错panic: listen udp 127.0.0.1:1053: bind: address already in use
,关闭 clashX 后开启可以正常使用,怀疑是clash配置撞端口了
我的clash配置
dns:
enable: true
listen: 0.0.0.0:1053
直接运行报错
panic: listen udp 127.0.0.1:1053: bind: address already in use
,关闭 clashX 后开启可以正常使用,怀疑是clash配置撞端口了
配置里的
# Port forwarding
port_forwarding = [
{ network_type = "tcp", bind_address = "127.0.0.1:9898", remote_address = "10.10.98.98:80" },
{ network_type = "tcp", bind_address = "127.0.0.1:9899", remote_address = "10.10.98.98:80" },
{ network_type = "udp", bind_address = "127.0.0.1:1053", remote_address = "10.10.0.21:53" }
]
custom_dns = [
{ host_name = "appservice.zju.edu.cn", ip = "10.203.8.198"},
{ host_name = "www.cc98.org", ip = "10.10.98.98"}
]
这些无用规则可以去掉,就不会端口冲突了
这些无用规则可以去掉,就不会端口冲突了
正常运行比之前稍微长一点的时间后仍然会报错,应该不只是端口的问题
panic: unexpected recv handshake reply
goroutine 57 [running]:
github.com/mythologyli/zju-connect/client.(*RvpnConn).Read(0xc0003fa000, {0xc0004b4600?, 0xc0001fe140?, 0x0?})
github.com/mythologyli/zju-connect/client/rvpn_conn.go:28 +0x126
github.com/mythologyli/zju-connect/stack/gvisor.(*Stack).Run(0xc00037c280)
github.com/mythologyli/zju-connect/stack/gvisor/stack.go:142 +0x16c
created by main.main in goroutine 1
github.com/mythologyli/zju-connect/main.go:96 +0x9ae
建议测试的时候打开 debug-dump,能够显示更多信息
建议测试的时候打开 debug-dump,能够显示更多信息
2023/11/10 08:04:31 Send: wrote 87 bytes
00000000 45 00 00 57 29 d0 00 00 40 06 99 3a 0a be 40 6d |E..W)...@..:..@m|
00000010 0a 0a 62 62 b1 f4 01 bb 0a d9 05 d9 71 8b 5b d3 |..bb........q.[.|
00000020 80 18 10 00 ff e5 00 00 01 01 08 0a 43 25 fd a4 |............C%..|
00000030 92 d4 45 a4 17 03 03 00 1e a5 9a 0f 44 1d 33 c0 |..E.........D.3.|
00000040 6e 6b 64 bb a7 6d 89 b5 56 5d 20 ed 6d 02 04 99 |nkd..m..V] .m...|
00000050 59 a4 3b 7d 3c 2a fb |Y.;}<*.|
2023/11/10 08:04:32 Recv: read 52 bytes
00000000 45 00 00 34 0a d8 40 00 7c 06 3c 55 0a 0a 62 62 |E..4..@.|.<U..bb|
00000010 0a be 40 6d 01 bb b1 f4 71 8b 5b d3 0a d9 05 fc |..@m....q.[.....|
00000020 80 10 1f fd f3 b0 00 00 01 01 08 0a 92 d4 45 f6 |..............E.|
00000030 43 25 fd a4 |C%..|
2023/11/10 08:04:35 Error occurred while receiving, retrying: EOF
2023/11/10 08:04:35 Socket: connected to: 61.175.193.50:443
2023/11/10 08:04:35 TLS: connected to: 61.175.193.50:443
2023/11/10 08:04:35 Recv handshake: wrote 64 bytes
00000000 06 00 00 00 32 39 62 34 33 66 64 31 65 35 30 63 |....29b43fd1e50c|
00000010 62 35 34 34 63 63 32 34 37 61 62 30 37 38 62 32 |b544cc247ab078b2|
00000020 65 65 31 00 62 30 64 64 30 62 33 35 32 38 30 62 |ee1.b0dd0b35280b|
00000030 61 61 63 38 00 00 00 00 00 00 00 00 6d 40 be 0a |aac8........m@..|
2023/11/10 08:04:35 Recv handshake: read 36 bytes
00000000 08 00 00 00 00 00 00 00 00 74 ff b7 3a ce 20 53 |.........t..:. S|
00000010 b0 b4 15 99 fd 7f 00 00 17 9c d5 f0 f6 7f 00 00 |................|
00000020 00 00 00 00 |....|
panic: unexpected recv handshake reply
goroutine 73 [running]:
github.com/mythologyli/zju-connect/client.(*RvpnConn).Read(0xc0001e4000, {0xc000234600?, 0xc0002aca00?, 0x0?})
github.com/mythologyli/zju-connect/client/rvpn_conn.go:28 +0x126
github.com/mythologyli/zju-connect/stack/gvisor.(*Stack).Run(0xc00036e670)
github.com/mythologyli/zju-connect/stack/gvisor/stack.go:142 +0x16c
created by main.main in goroutine 1
github.com/mythologyli/zju-connect/main.go:96 +0x9ae
感觉是 macOS 的独有问题,我在 Windows 11 下跑到现在一切正常(gVisor 模式)
晚上又测试了下,非常奇怪,不用docker也是跑起来后10s内挂掉,之前反馈的不用docker没问题有误。
同时用各种版本在linux下测试也一切正常(gVisor和tun都是)。
之前在开发tun的时候经常测试macos下,当时没有一点问题,现在突然是docker和不用docker都有问题,明天我再排查下。
BTW,我前两天刚刚更新了sonoma14.1,或许引入了什么玩意
我的macos还是老系统,应该不是macos的问题
wireshark抓了半天,基本可以确认是因为 requestIP的tls conn被远端FIN导致的结束,具体是conn被gc还是什么原因还在进一步排查
@futuretech6 发现问题了,多半是跟vpn账号有关系,你是否使用一个账号登陆了两个zju-connect,我换了个账号后就可以正常使用
BTW,测试的时候发现了一个好玩的包,在偶然的一次程序启动30s后,server发送了这样一个包,包含 "hey, who are you?" 字段,合理怀疑zju-connect某些特征被发现了,无法复现。
2023/11/12 00:27:19 Recv: read 45 bytes 00000000 45 00 00 2d e7 63 40 00 3c 11 b9 4e 0a a2 46 ff |E..-.c@.<..N..F.| 00000010 0a be 41 af c0 a8 22 53 00 19 b2 84 68 65 79 2c |..A..."S....hey,| 00000020 20 77 68 6f 20 61 72 65 20 79 6f 75 3f | who are you?| 2023/11/12 00:27:19 Send: wrote 73 bytes 00000000 45 00 00 49 ce f7 00 00 40 01 0d af 0a be 41 af |E..I....@.....A.| 00000010 0a a2 46 ff 03 03 9b 35 00 00 00 00 45 00 00 2d |..F....5....E..-| 00000020 e7 63 40 00 3c 11 b9 4e 0a a2 46 ff 0a be 41 af |.c@.<..N..F...A.| 00000030 c0 a8 22 53 00 19 b2 84 68 65 79 2c 20 77 68 6f |.."S....hey, who| 00000040 20 61 72 65 20 79 6f 75 3f | are you?|
当时似乎是的,我明天试一下
原来是这样,这个现象我之前观察到过,只是你们两个人都一样就没往那里想哈哈哈哈
BTW,测试的时候发现了一个好玩的包,在偶然的一次程序启动30s后,server发送了这样一个包,包含 "hey, who are you?" 字段,合理怀疑zju-connect某些特征被发现了,无法复现。
2023/11/12 00:27:19 Recv: read 45 bytes 00000000 45 00 00 2d e7 63 40 00 3c 11 b9 4e 0a a2 46 ff |E..-.c@.<..N..F.| 00000010 0a be 41 af c0 a8 22 53 00 19 b2 84 68 65 79 2c |..A..."S....hey,| 00000020 20 77 68 6f 20 61 72 65 20 79 6f 75 3f | who are you?| 2023/11/12 00:27:19 Send: wrote 73 bytes 00000000 45 00 00 49 ce f7 00 00 40 01 0d af 0a be 41 af |E..I....@.....A.| 00000010 0a a2 46 ff 03 03 9b 35 00 00 00 00 45 00 00 2d |..F....5....E..-| 00000020 e7 63 40 00 3c 11 b9 4e 0a a2 46 ff 0a be 41 af |.c@.<..N..F...A.| 00000030 c0 a8 22 53 00 19 b2 84 68 65 79 2c 20 77 68 6f |.."S....hey, who| 00000040 20 61 72 65 20 79 6f 75 3f | are you?|
草... 没见过的神奇响应增加了...
不过这个客户端实现的肯定特征一大堆 ( ̄┰ ̄*) 我开发的时候几乎全程没上 IDA Pro, 很多逻辑都是直接实验+猜测的. (另一种层面的"净室设计")
听说我们学校一直在白嫖试用 EasyConnect, 到现在还没给 Sangfor 付钱, 所以现在处于没有维护和支持的状态, EasierConnect 也一直能用.
@futuretech6 发现问题了,多半是跟vpn账号有关系,你是否使用一个账号登陆了两个zju-connect,我换了个账号后就可以正常使用
确实是这么个情况,thx
软件版本 v0.4.0
使用环境 Docker (arm64 macOS)
服务端地址 rvpn.zju.edu.cn:443
故障描述 (建议结合图片说明)
启动后一段时间panic
重现方法
docker run
预期行为
日志
配置文件或启动参数 (请去除敏感信息)