Mythologyli / zju-connect

ZJU RVPN 客户端的 Go 语言实现
GNU Affero General Public License v3.0
313 stars 21 forks source link

使用同一账号登录多个zju-connect实例,连接异常断开报错EOF #47

Closed futuretech6 closed 8 months ago

futuretech6 commented 8 months ago

软件版本 v0.4.0

使用环境 Docker (arm64 macOS)

服务端地址 rvpn.zju.edu.cn:443

故障描述 (建议结合图片说明)

启动后一段时间panic

重现方法

docker run

预期行为

日志

2023/11/10 07:15:39 Progress: 98/100 (ResourceList.Rcs)
2023/11/10 07:15:39 Progress: 99/100 (ResourceList.Rcs)
2023/11/10 07:15:39 Progress: 99/100 (ResourceList.Rcs)
2023/11/10 07:15:39 Parsed 629 domain rules
2023/11/10 07:15:39 Parsed 18 IPv4 rules
2023/11/10 07:15:39 Parsed 520 DNS rules
2023/11/10 07:15:39 socket: connected to:  61.175.193.50:443
2023/11/10 07:15:39 tls: connected to:  61.175.193.50:443
2023/11/10 07:15:39 Login success, your IP: 10.190.65.181
2023/11/10 07:15:39 HTTP server listening on :1081
2023/11/10 07:15:39 Port forwarding (tcp): 127.0.0.1:9898 <- 10.10.98.98:80
2023/11/10 07:15:39 Port forwarding (udp): 127.0.0.1:1053 <- 10.10.0.21:53
2023/11/10 07:15:39 Custom DNS appservice.zju.edu.cn -> 10.203.8.198
2023/11/10 07:15:39 Custom DNS www.cc98.org -> 10.10.98.98
2023/11/10 07:15:39 Port forwarding (tcp): 127.0.0.1:9899 <- 10.10.98.98:80
2023/11/10 07:15:39 SOCKS5 server listening on :1080
2023/11/10 07:15:39 socket: connected to:  61.175.193.50:443
2023/11/10 07:15:39 tls: connected to:  61.175.193.50:443
2023/11/10 07:15:39 socket: connected to:  61.175.193.50:443
2023/11/10 07:15:39 tls: connected to:  61.175.193.50:443
2023/11/10 07:15:49 KeepAlive: lookup www.baidu.com on 192.168.65.7:53: read udp 10.190.65.181:65243: i/o timeout
2023/11/10 07:15:50 Error occurred while receiving, retrying: EOF
2023/11/10 07:15:50 socket: connected to:  61.175.193.50:443
2023/11/10 07:15:50 tls: connected to:  61.175.193.50:443
2023/11/10 07:15:50 Error occurred while receiving, retrying: unexpected recv handshake reply
2023/11/10 07:15:50 socket: connected to:  61.175.193.50:443
2023/11/10 07:15:50 tls: connected to:  61.175.193.50:443
2023/11/10 07:15:50 Error occurred while receiving, retrying: unexpected recv handshake reply
2023/11/10 07:15:50 socket: connected to:  61.175.193.50:443
2023/11/10 07:15:50 tls: connected to:  61.175.193.50:443
2023/11/10 07:15:50 Error occurred while receiving, retrying: unexpected recv handshake reply
2023/11/10 07:15:50 socket: connected to:  61.175.193.50:443
2023/11/10 07:15:50 tls: connected to:  61.175.193.50:443
2023/11/10 07:15:50 Error occurred while receiving, retrying: unexpected recv handshake reply
panic: receive retry limit exceeded.

goroutine 67 [running]:
github.com/mythologyli/zju-connect/core.StartProtocol.func1()
    github.com/mythologyli/zju-connect/core/protocol.go:231 +0x105
created by github.com/mythologyli/zju-connect/core.StartProtocol
    github.com/mythologyli/zju-connect/core/protocol.go:234 +0xd2

配置文件或启动参数 (请去除敏感信息)

docker run --name zju-connect -v $PWD/config.toml:/home/nonroot/config.toml -p 1080:1080 -p 1081:1081 mythologyli/zju-connect
# Advanced settings
server_address = "rvpn.zju.edu.cn"
server_port = 443
disable_server_config = false
disable_zju_config = false
disable_zju_dns = false
disable_multi_line = false
proxy_all = true
socks_bind = ":1080"
socks_user = ""
socks_passwd = ""
http_bind = ":1081"
dns_ttl = 3600
disable_keep_alive = false
zju_dns_server = "10.10.0.21"
debug_dump = false

# 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"}
]
futuretech6 commented 8 months ago

同一网络环境下 amd64 linux 机器的 docker 可以运行

Mythologyli commented 8 months ago

更新到最新的 latest 镜像(v0.5.0)试试?

cxz66666 commented 8 months ago

我这边使用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

使用宿主机跑则正常

Mythologyli commented 8 months ago

我这边使用0.5.0,在macos上使用docker也遇到了类似的问题

使用宿主机跑则正常

如果关掉多线路选择呢,会不会也在 keepalive 这一步出错

futuretech6 commented 8 months ago

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
Mythologyli commented 8 months ago

pull 完重新跑,换了个报错

好怪,可以测试一下本机跑有没有问题嘛? https://github.com/Mythologyli/zju-connect/releases/download/v0.5.0/zju-connect-darwin-arm64.zip

futuretech6 commented 8 months ago

我这边使用0.5.0,在macos上使用docker也遇到了类似的问题 使用宿主机跑则正常

如果关掉多线路选择呢,会不会也在 keepalive 这一步出错

仍然出错

cxz66666 commented 8 months ago

如果关掉多线路选择呢,会不会也在 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相关问题,我排查一下

futuretech6 commented 8 months ago

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
Mythologyli commented 8 months ago

直接运行报错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"}
]

这些无用规则可以去掉,就不会端口冲突了

futuretech6 commented 8 months ago

这些无用规则可以去掉,就不会端口冲突了

正常运行比之前稍微长一点的时间后仍然会报错,应该不只是端口的问题

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
Mythologyli commented 8 months ago

建议测试的时候打开 debug-dump,能够显示更多信息

futuretech6 commented 8 months ago

建议测试的时候打开 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
Mythologyli commented 8 months ago

感觉是 macOS 的独有问题,我在 Windows 11 下跑到现在一切正常(gVisor 模式)

cxz66666 commented 8 months ago

晚上又测试了下,非常奇怪,不用docker也是跑起来后10s内挂掉,之前反馈的不用docker没问题有误。

同时用各种版本在linux下测试也一切正常(gVisor和tun都是)。

之前在开发tun的时候经常测试macos下,当时没有一点问题,现在突然是docker和不用docker都有问题,明天我再排查下。

BTW,我前两天刚刚更新了sonoma14.1,或许引入了什么玩意

futuretech6 commented 8 months ago

我的macos还是老系统,应该不是macos的问题

cxz66666 commented 8 months ago

wireshark抓了半天,基本可以确认是因为 requestIP的tls conn被远端FIN导致的结束,具体是conn被gc还是什么原因还在进一步排查

cxz66666 commented 8 months ago

@futuretech6 发现问题了,多半是跟vpn账号有关系,你是否使用一个账号登陆了两个zju-connect,我换了个账号后就可以正常使用

cxz66666 commented 8 months ago

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?|

futuretech6 commented 8 months ago

当时似乎是的,我明天试一下

Mythologyli commented 8 months ago

原来是这样,这个现象我之前观察到过,只是你们两个人都一样就没往那里想哈哈哈哈

lyc8503 commented 8 months ago

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 commented 8 months ago

@futuretech6 发现问题了,多半是跟vpn账号有关系,你是否使用一个账号登陆了两个zju-connect,我换了个账号后就可以正常使用

确实是这么个情况,thx