前言
放假在家,连接学校内网需要使用深信服家的 EasyConnect ,我偶尔需要连接学校的服务器或者访问内网网页,便打算下载使用。
但是!!!EasyConnect 这个软件比较流氓,也就是常说的毒瘤软件。我便开始寻找起了应对方法。
在 macOS下,EasyConnect 主要有以下行为:
- 后台常驻进程 EasyMonitor 和 ECAgentProxy,且都以 root 权限运行;
- 自动安装根证书,包括系统根证书与 FireFox 的根证书,且在删除后会重新安装。
ps:以 root 权限常驻进程,意味着这些进程可以读取和写入任何东西;安装根证书,意味着可以直接进行中间人攻击,随意篡改数据。
法1
该方法适合已安装 EasyConnect 的电脑,最少折腾。
使用
sudo su获取管理员权限;删除(rm)
/Library/LaunchDaemons/com.sangfor.EasyMonitor.plist;
删除 /Library/LaunchAgents/com.sangfor.ECAgentProxy.plist;
重新启动 Mac;
打开钥匙串,删除系统钥匙串-系统-证书下面的证书(关键词 sangfor)。
注意一定要 先重启Mac再删除证书 ,因为在后台的 EasyMonitor 进程会在证书被删除后自动导入。
这样就消除了 EasyConnect 的问题。但是,目前为止会导致 EasyConnect 不能连接,因此我们需要用安全的方式启动 EasyConnect。可以编写两个脚本实现启动和退出。
startEasyConnect.sh
|
killEasyMonitor.sh
|
2025.3.24更新:
如果普通用户不能直接pkill上述三个进程,可以尝试
sudo pkill -9 -f “EasyConnect”等方式强制杀死进程。感谢@Jeblqr。再次提醒,本人还是更加建议使用docker容器运行,详见法2(推荐) 。毕竟动用sudo需要手动输入密码,可能会比较麻烦。
将上述两个脚本放到 PATH 路径下,并给予可执行权限:
|
在需要使用 EasyConnect 时,使用 普通用户 身份执行 startEasyConnect 命令(EasyMonitor 进程就没有权限导入根证书了)。退出 EasyConnect 后,执行 killEasyMonitor 杀掉后台的 EasyMonitor 进程即可。
法2(推荐)
适合还未安装 EasyConnect 的情况下,并且具有一些Docker知识,不怕麻烦的。(正在使用)
安装Docker
2022.12.05 更新:
推荐macOS用户使用Colima安装docker运行环境,点击查看 。
安装Clash
macOS可以安装ClashX Meta 。
安装VNC Viewer(可选)
如果你用的 EasyConnect 需要 图形界面登录的话,就需要安装 VNC Viewer,否则可以跳过这一步。
如果不知道可以先不装,到后面用 Docker 运行 EasyConnect 的时候提示你不能在命令行界面完成再返回这一步安装。
VNC Viewer 的安装非常简单,到官网的 下载 页面,选择相应的版本下载,然后一路下一步就完成了。
安装文本编辑器
因为涉及到 yaml文件 的编辑修改,你可能需要安装一个 VSCode ,不使用记事本的原因是它不带高亮,没有单词拼写提示也不会自动调整格式,可能会导致你有一些缩进、拼写和标点等方面的错误比较难发现。
VSCode是免费的,这里再推荐一个软件:Sublime Text(付费)。
使用 Docker 运行 EasyConnect
首先确保你的 Docker 是运行状态(可以输入 docker ps -a 测试一下)。打开终端,根据是否需要图形化界面输入不同的命令。
2026.09.21更新:
docker-easyconnect现由docker-easyconnect组织 维护,并提供arm64图形界面镜像。M系列Mac使用图形界面版时,请按项目README加入-e DISABLE_PKG_VERSION_XML=1参数;纯命令行镜像仍仅支持amd64。
纯命令行版(推荐):
|
下面对命令进行解释:
第一行,我们在当前用户的
$HOME目录下创建了一个配置文件,用来保存登录信息。第二行,拉取我们需要的docker镜像到本地。
第三行,我们启动了一个 EasyConnect 命令行版 Docker 容器:
--device /dev/net/tun --cap-add NET_ADMIN创建了虚拟网络设备;-it返回一个交互式终端,用来显示信息;-v指定挂载卷,我们将当前用户$HOME$目录下的配置文件映射到容器内,实现登录信息的持久化;-p指定容器的端口映射,可以根据实际情况更改端口号。其中 1080 是 Socks5 代理端口,8888 是 HTTP 代理端口;-e EC_VER设置容器内环境变量EC_VER的值,指定 Sangfor 的版本,最好和服务端一致;-e CLI_OPTS设置容器内环境变量CLI_OPTS的值,指定运行 Sangfor 时的参数。这里的-d指定 VPN 地址,-u指定用户名,-p指定用户的密码。这些信息请 自行修改正确 !-e IPTABLES_LEGACY=1使用旧式的 iptables 命令,主要目的是和 WSL 保持兼容。在部分发行版的 WSL 版本上,缺少了这个环境变量会使得 VPN 不能正常运行。(非必要不选)2022.12.09 更新:
建议增加容器自动重启选项,方便开机自启:
已安装:
在原容器的基础上使用
update命令更新参数即可。docker ps -a docker update --restart=always 容器ID docker restart 容器ID未安装:
直接在上面命令的基础上加上
--restart参数即可。docker run --restart=always --device /dev/net/tun --cap-add NET_ADMIN -v $HOME/.easyconn:/root/.easyconn -it -p 127.0.0.1:1080:1080 -p 127.0.0.1:8888:8888 -e EC_VER=7.6.3 -e CLI_OPTS="-d vpn.xxx.edu.cn -u USERNAME -p PASSWORD" hagb/docker-easyconnect:cli
2022.12.07 更新:
如果在运行完上述命令后 docker容器保持在运行状态 ,我们需要Ctrl + C手动停止运行后,
# 找到容器ID docker ps -a # 重新运行容器 docker start 这里填写easyconnect容器ID2022.09.05 更新:
这个参数建议先删除,如果不能正常运行,再加上。
macOS Catalina系统下我测试添加此参数后账号将不能自动登录,建议删除。删除后一切正常。
具体的参数设置请参考:usage.md
图形界面版:
|
其中 hagb/docker-easyconnect:7.6.3 表示使用 7.6.3 版本的 EasyConnect,请根据实际情况修改版本号。
ps:当你的 5901 或者 1080 端口被其他服务占用时,可以通过如下命令更改我们上面用 docker 运行的 EasyConnect 的端口(以纯命令行版举例,图形界面版也是一样的);
127.0.0.1:15901:5901 和 127.0.0.1:10180:1080中的 15901 和 10180 各位可以随意修改成自己没有被占用的端口。
docker run --device /dev/net/tun --cap-add NET_ADMIN -ti -e PASSWORD=xxxx -v $HOME/.ecdata:/root -p 127.0.0.1:15901:5901 -p 127.0.0.1:10180:1080 hagb/docker-easyconnect:7.6.3
图形化 VNC Viewer 连接
输入完之后打开 VNC Viewer,点击左上角的 File -> New connection,或者在空白处 右键 -> New connection,或者使用快捷键 Ctrl + N,新建一个链接,在弹出的对话框中的 VNC Server 中填入 127.0.0.1:5901 ,Name 可以不填。
点击 OK 后,双击我们刚刚创建好的链接,输入密码 XXXX,就可以进行连接了,进去之后是熟悉的界面,输入地址,用户名和密码之后就可以关掉了。
在 Docker 中运行的 EasyConnect 都不用输验证码,更加方便。
同时由于这个项目本身是会记住你输入的服务器地址的,所以以后使用的时候只需要点一下登录按钮就可以了。
进行到这一步,就会有一个 socks5 代理跑在你电脑的 1080 端口 了,接下来就是配置 Clash,在我们需要的时候进行转发。
配置 Clash
2022.12.07 更新:
可以直接创建一个新的配置文件,以免配置更新导致失效。ClashX同理,文件内容可以参考下面:
port: 7890 socks-port: 7891 allow-lan: true mode: Rule log-level: info external-controller: :9090 proxies: - {name: vpn, type: socks5, server: 127.0.0.1, port: 1080} proxy-groups: - name: 校园网 type: select proxies: - vpn rules: - IP-CIDR,172.20.2.0/24,vpn
这一小节讲述如何让你在需要的时候使用 EasyConnect 的 VPN 服务。
首先运行 Clash,点击左侧导航栏的 Profiles ,你会看到一个默认的 config.yaml ,如果你有其他配置文件也可以编辑其他配置文件。点击你想编辑的配置文件右边的形如 < > 的按钮,意思就是在文本编辑器中编辑配置文件,在最后增加:
|
注意事项:
这里填写的
222.192.6.0/24是指只有访问222.192.6.xxx的流量才会走上面配置的那个代理,需要根据你的实际情况进行更改。当然,你如果是编辑你自己的机场配置文件,是需要在原来的
proxies和rules下新增上面内容,而不能再新增这两个属性。
到这一步,在 Clash 的 General 页面,将 System Proxy 打开,你就已经可以访问学校内网了,但是不可以使用远程桌面等功能,如果需要使用这些功能,还需要进一步配置。
配置 ClashX
与上面类似:
|
配置 TUN 模式
对于 TUN 模式,官方文档是这么描述的:
对于不遵循系统代理的软件,TUN 模式可以接管其流量并交由 CFW 处理,在 Windows 中,TUN 模式性能比 TAP 模式好。
浏览器之类的应用都是使用系统代理的,一些非系统代理应用,可以通过设置被 CFW 接管。总之,配置 TUN 模式之后,我们的需求就可以实现了,启动 TUN 模式需要进行如下操作(MacOS 用户跳过前两步):
- 打开 Clash 的 General 页面,找到 Home Directory,点击右边的
Open Folder打开Home Directory文件夹; - 进入网站 Wintun
,点击界面中
Download Wintun xxx下载压缩包。根据系统版本将wintun-x.xx/wintun/bin对应目录中wintun.dll复制至Home Directory目录中。基于x64的处理器的64位操作系统请使用amd64版本,M1 版本的 Mac 选择arm64版本; - 点击 General 中 Service Mode 右边 Manage,在打开窗口中安装服务模式,安装完成应用会自动重启,Service Mode 右边地球图标变为绿色即安装成功;
- 点击 settings -> Profile Mixin -> YAML,点击 YAML 右侧的 Edit,输入下面的内容,点击右下角的按钮保存。
|
- 返回 general 页面开启 Mixin 即可,之后点击 connections 会发现所有连接都是 TUN 模式,这时候我们就完成了所有配置。
更详细的配置可以参考CFW历史文档镜像中的TUN模式 页面。
过滤应用
相关规则可以参考:
|
注意:其中的 port 要对应你前面配置 docker 配置的端口,需要对应起来。
再次启动
当你关掉终端窗口,或者重启电脑,想再次启动 Docker 时,我们只需要启动相应的容器,并且在 VNC Viewer 中点击登录就可以(如果你不使用图形界面的话只需要启动容器)。
启动容器的操作就不用再去打上面创建容器时的那一串命令了,因为那一串命令的意思是创建容器、下载镜像、启动并进入容器,我们已经创建好了容器,以后只需要启动就行了。所以,我们先要知道我们有哪些容器,然后启动相应的容器就可以。
首先,查看我们已有的容器:
|
你应该会得到类似的输出,如果你是第一次使用 Docker,应该只有一个容器
当电脑重启之后又想开启它的时候,只需要输入:
|
就可以了,其中 81f 是我要启动的容器的 ID 也就是第一列的值,这个值很长,通常你只需要输入前几位就可以,或者也可以通过 docker rename 命令修改。
|
卸载 EasyConnect
前面说道,EasyConnect 的流氓之处之一就是非常难卸载,但是我还是根据网上的资料和我自己操作的经验总结出一套方法,这一套方法可能略显复杂,可能有多余的操作,不过按照这样操作是可以将 EasyConnect 完全卸载干净的。
首先,找到 EasyConnect 的安装目录,双击运行他的卸载程序,等他运行完之后你会发现,这个目录并没有被完全删掉,还是有很多文件,这时候我们执行下列步骤:
- 全选 Shift + Delete,如果遇到不给删的就跳过,这时候还是会剩下很多文件。
- 断网重启电脑,来到安装目录下,把所有文件夹都改名,随便改成什么,再次重启
- 全选刚刚改过名的文件夹 Shift + Delete,如果这时候还删不了就把文件夹剪切到别的地方再删除
- 重启电脑,管理员权限打开命令行(如果你没有常用的命令行工具可以 Win + X 选择 Windows PowerShell(管理员))
- 输入命令
netsh winsock reset回车
最后两步重置 winsock 非常重要,如果不执行很可能会出现各种客户端无法连接网络的情况。
如果卸载之后发现还有 sanfor 这个服务可以参考 这篇文章 尝试解决。
效果
查看已经创建的docker容器,可以发现 docker-easyconnect:cli 字样。
我是配合ClashX Pro使用,效果很不错,需要的时候直接切换到对应配置即可。


