前言
EasyConnect是深信服公司开发的用以连接公司/学校专有网络的VPN软件,为了在外地也能正常连接内网进行工作,该软件是必不可少的。然而EasyConnect对于新版的Linux支持不佳,同时存在安全性问题,如果使用一些博主提供的方法(如zhuanlan.zhihu.com/p/643918806)又仅仅能支持输入VPN地址连接的情况,在需要通过外部网页唤起该应用的场景下该软件并未提供相应的接口。由于本人以开源软件为荣,以商业软件为耻,使用Windows系统进行开发对我而言是一件奇耻大辱的事,所幸经过一段时间的捣鼓终于解决了这个问题。
系统环境
系统:Debian 12
内核:6.1.0-17-amd64
桌面环境:KDE Plasma
虚拟机软件:Virtural Box 7.0.10
方案简述
为了能在Linux系统下通过较低的占用实现代理功能,可以使用旧版本的Windows(在这里我使用的是Windows XP SP3)来通过网页连接到SSLVPN服务器,再通过在Windows系统中启用Socks5代理服务器来代理从Linux主机的流量,即可在Linux系统中连接到内部网络。
具体步骤
虚拟机网络配置
虚拟机需要有两张网卡:一张用以连接外网,一张用以给主机提供代理接口(敏感信息已隐去)
虚拟机代理配置
首先在虚拟机的浏览器中连接专有网络
在cmd中使用ipconfig,可以发现此时电脑里有三张网卡,其中本地连接为NAT网络,本地连接2为一个仅主机网络,用以提供代理接口,另外一个用UUID表示的网卡就是EasyConnect新建的虚拟网卡。
通过在cmd中打印路由表(cmd中输入route print
)命令可以发现,EasyConnect实际上是新建了一张虚拟网卡转发所有到专有网络的流量(敏感信息已隐去):
以上步骤分析了我们在系统层面使用Socks5代理的合理性:首先分配代理服务器对于外部网络走0.0.0.0,也就是系统默认路由表,这种情况下通过该代理的流量也自然而然的会从EasyConnect虚拟网卡走出去。我们现在来配置代理:
代理服务器使用的是3proxy(Github项目地址:github.com/z3APA3A/3proxy),我们下载支持XP系统的一个发行版,并解压
进入bin文件夹
在文件夹内新建上图中高亮的配置文件3proxy.cfg
,并输入以下内容
timeouts 1 5 30 60 180 1800 15 60
# windows service/ linux daemon
service
# 默认网关使用系统路由表
external 0.0.0.0
# 要启动代理服务的网卡的IP地址
internal 192.168.56.10
#################################
#### socks4/4.5/5 proxy setting
#################################
auth none
flush
allow *
# socks5 port 1081
socks -p1081
由于是本机使用,因此不需要任何安全设置,同理也不用改动密钥内容。在cmd中,进入3proxy安装目录输入3proxy.exe --install
启动该服务,同时该服务会被列入系统服务中开机启动。完成以上步骤后,socks5代理服务器会在1081端口启动。如果要禁用该服务,需要在Windows服务管理界面先停止3proxy服务,再到相同目录运行3proxy.exe --remove
即可。
测试
在主机中使用curl命令测试
发现该代理服务器可以正常工作,接下来测试是否可以访问内网
首先在KDE桌面环境中设置Socks5代理,之后用浏览器访问内网网站
发现访问成功,此时Linux系统也可以访问内网了(暴露了学校是下交)。
我们在任务管理器中检查Windows XP系统的占用
发现在运行了代理服务后,XP系统的占用不到400MB。对于Vista以后的Windows系统要达到如此之低的占用简直是天方夜谭,不禁感叹巨硬家的优化是用脚在做吗?但总的来说,在Linux系统下低占用使用EasyConnect访问内网的目的已经达成。