由于公司使用的深信服的VPN版本比较老,导致用Mac本的同事无法正常使用VPN,因此想到了用Docker的方式来解决这个问题,在网上逛了一圈,发现已经有人实现了,为了偷懒,马上施展“拿来主义”大招,经过一早上折腾,终于完活,试用了一段,目前基本满足需求。
一、大致思路
通过在Docker中安装EasyConnect,然后通过代理的方式来访问服务器。
二、环境准备:
MacOS Monterey 12.5.1
ClashX:1.95.1
Docker Desktop:2.0.0.2
@Hagb大佬已经提供了基于EasyConnect Linux客户端封装的Docker镜像,详细了解请看@Hagb大佬的项目。
二、具体操作
1.拉取EasyConnect镜像
docker pull hagb/docker-easyconnect:cli
2.创建并启动容器
docker run --device /dev/net/tun --cap-add NET_ADMIN -tid -p 127.0.0.1:1080:1080 -p 127.0.0.1:8888:8888 -e EC_VER=7.6.8 -e CLI_OPTS="-d VPN地址 -u 用户名 -p 密码" --name vpn hagbdocker-easyconnect:cli
测试时可以不在后台启动,在控制台运行,看看是否能正常连接上:
docker run --device /dev/net/tun --cap-add NET_ADMIN -ti -p 127.0.0.1:1080:1080 -p 127.0.0.1:8888:8888 -e EC_VER=7.6.8 -e CLI_OPTS="-d VPN地址 -u 用户名 -p 密码" hagbdocker-easyconnect:cli
3.测试VPN,在Chrome中安装插件:Proxy SwitchyOmega,配置代理
4.输入服务器的可测试地址,看是否正常访问。
5.安装代理工具ClashX
ClashX下载地址:https://github.com/yichengchen/clashX
配置127.0.0.1:1080为ClashX代理,把并设置为系统代理
例子:
proxies:
- name: VPN
type: socks5
server: 127.0.0.1
port: 1080
6.添加http、https代理
- 在~/.bash_profile中添加命令:
alias on_proxy="export https_proxy=http://127.0.0.1:7890 http_proxy=http://127.0.0.1:7890 all_proxy=socks5://127.0.0.1:7890"
alias off_proxy="unset https_proxy http_proxy all_proxy"
- 刷新~/.bash_profile
source ~/.bash_profile
- 启动代理
on_proxy
- 停止代理
off_proxy
7.添加ssh代理
- 在~/.ssh中新建一个config文件
- vi config,把如下内容复制到文件中
Host x.x.x.x
User git
Hostname x.x.x.x
ProxyCommand nc -X 5 -x 127.0.0.1:7890 %h %p
IdentityFile "~/.ssh/id_rsa"
TCPKeepAlive yes
- 保存config