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

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

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

    由于寒假回家又开始受到流氓 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  
       324 天前
    @f0rger +1 也蹲一个 atrust 的方案
    ddonano
        40
    ddonano  
       297 天前
    带短信验证码 的,如何使用啊 没看明白
    whatv3
        41
    whatv3  
       294 天前
    问一个蠢问题,运行后,一个浏览器,显示“Init ECAgent env successfully. You can login to vpn now.” 我该如何使用呢。
    Hagb
        42
    Hagb  
       243 天前 via Android   ❤️ 1
    @f0rger @athenasylph https://github.com/Hagb/docker-easyconnect 最近做了 atrust 容器化支持
    codingbody
        43
    codingbody  
       230 天前
    请教一下,如何把 docker-easyconnent 暴露出来的 http 和 socks 代理 配置到 surge 中。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2429 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 16:06 · PVG 00:06 · LAX 09:06 · JFK 12:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.