V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lyc8503
V2EX  ›  程序员

(应该是)目前为止最优雅的使用深信服 EasyConnect 的方式

  •  5
     
  •   lyc8503 · 2023-01-23 00:22:17 +08:00 · 10967 次点击
    这是一个创建于 672 天前的主题,其中的信息可能已经有所发展或是发生改变。

    由于寒假回家又开始受到流氓 EasyConnect 的困扰

    于是花了点时间对着官方客户端写了个开源实现

    https://github.com/lyc8503/EasierConnect

    发现站里也有不少吐槽这个软件的 看来使用还比较广泛? 来分享一波

    还发现这个软件的协议实现的也是有些离谱... 在 TLS 里夹带了一堆上层协议的私货

    43 条回复    2023-08-11 14:17:59 +08:00
    jimyag
        1
    jimyag  
       2023-01-23 00:33:06 +08:00   ❤️ 2
    之前看到打包成镜像的,https://github.com/Hagb/docker-easyconnect ,用起来也不错
    OutOfMemoryError
        2
    OutOfMemoryError  
       2023-01-23 00:34:14 +08:00
    @jimyag #1 欸 我司用的哦 easyconnect 方案是带手机验证码认证的。。这种好像目前无解?
    mulu
        3
    mulu  
       2023-01-23 00:35:32 +08:00 via Android
    非常赞,有空试一下看看
    mifar
        4
    mifar  
       2023-01-23 01:19:13 +08:00
    妈呀 这个有 mac 的 arm64 版本了,感谢 LZ 分享,做个 Docker 终于可以清净了
    yqf0215
        5
    yqf0215  
       2023-01-23 01:20:10 +08:00
    非常赞,准备试一下
    azure2023us
        6
    azure2023us  
       2023-01-23 08:17:06 +08:00
    有个问题:

    针对 L3 资源 ,深信服客户端会自动将相应的 ip 地址 写入到 路由表,以达到分流的效果(只允许某些特定的 ip 经过 vpn )。(深信服大部分基于 web 的服务,通过 webvpn 即可实现的。只有少量需要 L3 资源,如 kms 激活,22 ssh ,3389 等)

    看了半天,EasierConnect 的实现应该是提供了 sock5 代理,在分流上似乎没有做。
    oott123
        7
    oott123  
       2023-01-23 10:35:18 +08:00 via Android
    逆向工程的?强啊
    lyc8503
        8
    lyc8503  
    OP
       2023-01-23 11:08:10 +08:00
    @mifar 这个都是开源的, 应该没必要进 Docker


    @azure2023us 因为有些时候 EasyConnect 提供的路由表比较不合理(比如我们学校是把所有流量全部用 VPN), 提供了 socks 代理可以让大家自己用别的方法自定义分流. (比如 clash, sing-box...)


    @oott123 不完全算吧, 只是抓包了一下网络协议分析出来的, 没做啥二进制分析
    szdosar
        9
    szdosar  
       2023-01-23 11:24:32 +08:00
    如何输入短信验证码?
    azure2023us
        10
    azure2023us  
       2023-01-23 12:16:10 +08:00 via Android
    @lyc8503 如果不分流,那么所有流量都走 vpn, 导致的问题也很多,比如挖矿的流量,视频流量等。
    azure2023us
        11
    azure2023us  
       2023-01-23 12:18:31 +08:00 via Android
    @lyc8503 应该是管理员没有设置好,或者他们根本就没有研究过。可以根据角色设置资源访问策略,再将角色分配给相应的用户,这样在 cli 里 输入 route print 就可以看到路由表信息。
    vivisidea
        12
    vivisidea  
       2023-01-23 12:38:05 +08:00
    厉害,我一直好奇,抓包分析下协议就能写客户端是怎么做到的。。能分享下细节么
    qweqqwe
        13
    qweqqwe  
       2023-01-23 13:02:52 +08:00
    是不是路由器上面也可以用了?
    lyc8503
        14
    lyc8503  
    OP
       2023-01-23 13:07:50 +08:00
    @szdosar 如果登录过程中需要短信验证码程序会提示你输入的.

    @azure2023us 我的想法是用其他代理软件的"规则"模式进行白名单筛选, 毕竟也不能直接把 socks5 代理设置为系统代理. 比如使用浏览器插件的 SwitchyOmega 分流内网站点, Xshell 可以给每个主机设置代理, clash 可以指定某个 ip 段走某个特定代理上游. 我设想的是肯定不会出现"所有流量都走 vpn"的场景. (然而我们学校本来的默认设置就是所有流量走 vpn, 不太合理)

    @vivisidea 可以 GitHub 上邮件联系我.
    lyc8503
        15
    lyc8503  
    OP
       2023-01-23 13:09:01 +08:00   ❤️ 1
    @qweqqwe 可以的 编译的时候考虑到了这种场景
    Senorsen
        16
    Senorsen  
       2023-01-23 15:24:05 +08:00 via iPhone
    高手,厉害了
    kenvix
        17
    kenvix  
       2023-01-23 15:42:18 +08:00
    大赞。目前 Docker 的 Easyconnect 在 windows 上使用比较难受,同时 VM+NAT 也导致效率比较低,这个应该会好多了
    Rugel
        18
    Rugel  
       2023-01-23 16:09:18 +08:00
    太可以了,比 docker 的方案优雅很多
    starrycat
        19
    starrycat  
       2023-01-23 18:11:34 +08:00 via Android
    悲剧,有 TOTP 动态口令的不行🥲
    Polygene
        20
    Polygene  
       2023-01-23 18:21:15 +08:00 via iPhone
    没想到会在这里遇见南带校友👍牛逼
    vvhy
        21
    vvhy  
       2023-01-23 18:38:31 +08:00
    好👍,马上去试试,终于可以摆脱 difficonnect 了
    razaro
        22
    razaro  
       2023-01-23 19:19:22 +08:00   ❤️ 1
    感觉现在很多高校都换 webvpn 了🤔
    lyc8503
        23
    lyc8503  
    OP
       2023-01-23 21:09:26 +08:00
    @kenvix 我就是因为主力 Windows 被迫用 vps 转发, 不爽了特别久 hhh

    @starrycat 短信验证码已经支持了, 我还没遇到过 TOTP 登录的服务器, 可以 gh 上发 issue 贴出 log (注意移除敏感信息.)

    @Polygene 可以 GitHub 相互关注一下😂

    @razaro 我校最近的 webvpn 实用性比较低...
    ncepuzs
        24
    ncepuzs  
       2023-01-23 21:40:43 +08:00
    大二就有这种工程能力,啥时候接触计算机和编程的?
    kenvix
        25
    kenvix  
       2023-01-23 22:17:36 +08:00
    @ncepuzs 在 v2 初二都不奇怪
    Cu635
        26
    Cu635  
       2023-01-24 09:05:49 +08:00
    小心被告侵权,甚至是被告刑事犯罪。
    f0rger
        27
    f0rger  
       2023-01-24 10:24:40 +08:00 via iPhone
    我们已经转向 atrust 了,等一个解决方案,求大佬
    lyc8503
        28
    lyc8503  
    OP
       2023-01-24 11:08:08 +08:00 via Android
    @ncepuzs 个人兴趣爱好~

    @Cu635 了解, 谢谢
    hunkhygge
        29
    hunkhygge  
       2023-01-24 15:31:32 +08:00
    奇怪,为啥我点了 exe 之后啥都没有?
    ghostwind
        30
    ghostwind  
       2023-01-24 15:59:42 +08:00
    @lyc8503 非常厉害

    sms 验证之后可以改成这样
    if !(strings.Contains(string(buf[:n]), "验证码已发送到您的手机") || strings.Contains(string(buf[:n]), "The passcode has been sent"){

    }
    ghostwind
        31
    ghostwind  
       2023-01-24 16:01:31 +08:00
    @hunkhygge 因为你用的是 cli 的模式,终端下执行就可以了
    RiverTwilight
        32
    RiverTwilight  
       2023-01-24 16:49:58 +08:00   ❤️ 1
    这个软件原版在 Windows 上是究极流氓,写入注册表、系统服务、开机自启、到处创建文件夹,正常方法都没办法卸载干净。
    yicong135
        33
    yicong135  
       2023-01-24 16:52:44 +08:00
    证书登录有解决方案么
    MeiJiayun
        34
    MeiJiayun  
       2023-01-30 10:10:48 +08:00
    弱弱的问句,如何使用。。。
    ohayoo
        35
    ohayoo  
       2023-01-30 13:53:44 +08:00
    求助大佬,系统 Windows11 22H2
    cpu AMD Ryzen 7 5800H
    下载 TestBuild14 里面的 EasierConnect-windows-amd64.zip ,解压双击闪一下就没了,可咋整?
    ohayoo
        36
    ohayoo  
       2023-01-31 13:50:03 +08:00
    @ohayoo 自问自答,Windows 下要在 dos 界面上运行
    wuzhewuyou
        37
    wuzhewuyou  
       2023-02-04 17:05:32 +08:00
    大佬,这边是使用短信验证码的。查看获取的网页,本人的是
    验证码已发送到手机
    更改后
    if !strings.Contains(buf.String(), "验证码已发送到手机") && !strings.Contains(buf.String(), "<USER_PHONE>")
    然后输入验证码,得到验证成功 欢迎访问 页面,修改提示后运行
    twfId = string(regexp.MustCompile(`<TwfID>(.*)</TwfID>`).FindSubmatch(buf.Bytes())[1])
    这里出错,找不到 TwfID ,继续使用前面生成的 twfid ,运行
    // DnsDataRegexp := regexp2.MustCompile("(?<=<Dns dnsserver=\"\" data=\")[0-9A-Za-z:;.-]*?(?=\")", 0)
    // DnsDataRegexpMatches, _ := DnsDataRegexp.FindStringMatch(resUrlDecodedValue)

    // processDnsData(DnsDataRegexpMatches.String(), debug)
    这里出现处理 dns 出错,继续注释掉运行

    2023/02/04 16:40:59 query ip: wrote 64 bytes
    00000000 00 00 00 00 61 65 37 63 37 34 64 36 65 38 38 37 |....ae7c74d6e887|
    00000010 30 39 33 32 35 61 35 37 65 32 33 64 37 33 65 35 |09325a57e23d73e5|
    00000020 36 66 66 00 61 36 65 38 33 34 34 31 34 30 64 36 |6ff.a6e8344140d6|
    00000030 61 31 66 35 00 00 00 00 00 00 00 00 ff ff ff ff |a1f5............|
    2023/02/04 16:41:00 query ip: read 36 bytes
    00000000 00 00 00 00 0a e6 14 03 00 1a a1 b5 0a e6 15 fa |................|
    00000010 00 00 00 00 00 00 00 00 3b fa ef ca 18 7f 00 00 |........;.......|
    00000020 40 f4 35 43 |@.5C|
    2023/02/04 16:41:00 SMS Code required
    exit status 1

    最终还是验证失败,基本流程就这样
    lsdxl
        38
    lsdxl  
       2023-02-10 16:47:38 +08:00
    有用过深信服的融合 4A 的吗 这玩意打开只能通过 ffcs4a_cmd 来调用例如 filezilla 连接 sftp 或者 ssh 或者打开网页页面访问,通过列入 nginx 或者 webpack-dev-server 代理都没法掉通 导致前端开发本地没法测试 有解不
    athenasylph
        39
    athenasylph  
       2023-05-09 22:56:10 +08:00
    @f0rger +1 也蹲一个 atrust 的方案
    ddonano
        40
    ddonano  
       2023-06-05 10:15:44 +08:00
    带短信验证码 的,如何使用啊 没看明白
    whatv3
        41
    whatv3  
       2023-06-08 14:32:29 +08:00
    问一个蠢问题,运行后,一个浏览器,显示“Init ECAgent env successfully. You can login to vpn now.” 我该如何使用呢。
    Hagb
        42
    Hagb  
       2023-07-29 18:16:14 +08:00 via Android   ❤️ 1
    @f0rger @athenasylph https://github.com/Hagb/docker-easyconnect 最近做了 atrust 容器化支持
    codingbody
        43
    codingbody  
       2023-08-11 14:17:59 +08:00
    请教一下,如何把 docker-easyconnent 暴露出来的 http 和 socks 代理 配置到 surge 中。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4781 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 01:14 · PVG 09:14 · LAX 17:14 · JFK 20:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.