基于podman的EasyConnect容器化实践
基于podman的EasyConnect容器化实践
引言
为什么要把easyconnect容器化:
避免占用资源的自启进程、与梯子共存、
支持断线自动重连。避免与csgo反作弊干扰
podman的优势:无需守护进程、基本完全兼容docker
podman安装与配置
Windows系统需要开启WSL,但是不必安装发行版。
安装podman:Github下载安装包(linux也可用包管理工具)
在rootfs.tar.xz所在目录下打开终端
键入如下命令,初始化machine并启动:
1 2
podman machine init --image-path .\rootfs.tar.xz podman machine start
注意:在windows上podman已经做了映射,所以podman相关的命令都可以在命令行或者powershell直接执行,不用打开WSL。
运行docker-easyconnect
首先拉取镜像,CLI版本即可,资源占用更少:
|
|
然后运行(其中${xxx}
表示的变量请自行替换,dns参数必须指定一个能解析服务器域名的DNS服务器,否则会无法连接):
|
|
第一次运行时会提示输入服务器、用户名和密码。当出现如下输出时表示成功连接:
user "[用户名]" auto login successfully
前面的的-v选项就是将登录信息保存到前面配置的$accountFile
。后面再运行就可以自动登录。断线会自动重连,Ctrl+C可以退出。
安全提示:$accountFile
保存格式为二进制明文,请注意不要泄露。
配置代理
此时就可以通过socks5或者HTTP使用前面设定的端口配置代理。以浏览器的SwitchyOmega插件示例,创建一个连接该端口代理的情景模式,使用该情景模式时即可访问内网。
自动分流
假设用梯子的时候已经有一个能够自动判断是否走代理的情景模式auto,那么可以创建一个名为auto+EC的情景模式,对于内网站点和知网等IP登录的文献网站使用easyconnect的代理,其他的站点则继承此前的配置。
其他的如clash等代理软件方法类似。
托盘图标程序
上面的容器在运行时每次都要通过终端触发。在linux下添加alias和操作终端都比较方便,但是在Windows可能还是具有一个图形界面更加方便。
考虑到其他语言从头建工程太大动干戈,最近又发现powershell可以与.net
框架无缝集成,可以在脚本中直接创建GUI,非常适合拿来写一些简单的界面。
于是就顺手写了个托盘图标、菜单和必要的设置对话框:
脚本运行时会自动启动podman machine,当点击Enable时,会在后台自动执行前面的podman run指令启动EasyConnect。
之后就可以正常使用EasyConnect代理。需要停止时同样右键托盘图标取消Enable复选框即可。
写完之后还是脚本,还是需要终端运行,这时通过PS2EXE编译成exe就可以了。当然,本质是调用终端命令,并且没有写登录界面,所以在使用前请通过终端手动运行一次前面的podman run指令并生成accountFile
。
如果不怕简陋的话可以下载试用